Bicubic Texture Filtering
Sotalo
I'm not sure to what extent VRC devs can have in this, but native support for bicubic texture filtering would provide a lot of tremendous benefits. Low-res textures would look a lot smoother when zoomed in, rather than the weird blurry-video-game texture look. People uploading massive avatars could use smaller texture files and they wouldn't look pixelated or weird. Lightmaps are always low-res and could look a LOT better without requiring more memory. And those world devs bumping up lightmap resolutions to look better for interiors can probably reduce sizes, if it was handled natively. And since various GPUs already support it, including Quest, and the code is presently not that difficult to implement in shader scripts, a solution that the general population can use easily and more awareness raised for it would IMMEDIATELY improve the quality and appearance of textures and may even prompt smaller avatars and worlds.
Bilinear and trilinear filtering were fresh on the N64 back in 1996. We have better solutions, now. I'll duplicate my request in the official Feedback site.
Log In
Sotalo
Whether it's for a mask or textural details, bicubic removes pixilation issues and makes textures look their best.
Photo Viewer
View photos in a modal
Sotalo
A demonstration of a shader which sharpens the appearance of black and white masks. It looks like a perfect vector, but with bicubic as a prefiltering method, only needs one channel of a 1K map to achieve this level of clarity. Could be a Godsend for tattoos on characters. 512 also looks incredible!
Photo Viewer
View photos in a modal
Docteh
Does the unity engine itself support this? I tried searching for this and the answer appeared to be not really. some hacky solutions that'd work for a game.
Sotalo
Docteh: This can be done in-shader. These examples were all made using Amplify's bicubic solution. Some kind of solution that makes it easier for users to author bicubic lightmaps and textures would be a Godsend for developers looking to get extremely high quality textures for a very low performance cost, totally eliminate pixilation, and allow lower resolutions to look much, much better.
Sotalo
Docteh: Example solutions:
- Some way to add Bicubic to individual textures (best solution, as it can be applied to the texture sample directly rather than per-shader)
- A modification to GI shaders to allow all lightmaps to be bicubic
- A modified Standard Unity shader with a toggle to enable bicubic on each independent texture
- A way to mix Bicubic lightmaps with Amplify
All of these solutions can vastly improve access to bicubic filtering for developers of worlds and avatars. Not all of it requires modifying Unity.
Sotalo
The difference between bicubic and bilinear on an image. Bilinear shows pixels quite clearly, but bicubic just looks perfectly smooth.
Photo Viewer
View photos in a modal
Sotalo
An image demonstrating point filtering vs. bilinear vs. bicubic interpolation. Note how the "hotspots" shift off pixel centers. This is part of what makes bicubic so powerful for low-res textures, it effectively "subdivides" a texture, smoothing out peaks and valleys, so everything just looks smooth and beautiful. Pixilation goes away, and round details stay round.
Photo Viewer
View photos in a modal