- Home /
Making mipmaps with pixel art look better?
For my textures, I am trying to go for an art style that is Minecraft-esque, where I use a lot of tiling of 32x32 textures. To preserve the hard pixelated edges, I use point-filtering for the textures. I created a test scene to show my issue.
Unfortunately, mipmaps look really bad with the low-resolution textures, as it becomes very noticeable where they transition: https://imgur.com/a/vyeRvlT
However, when I remove mipmaps, I get a lot of shimmering and ugliness at angles and distance: https://imgur.com/a/F9Cz8UA
I resized the 32x32 textures to 256x256, and used bilinear filtering with mipmaps, which looks great: https://imgur.com/a/7M0lZi9
This workaround, however, is not ideal. I want to preserve the hard edges, but up close the textures are smoothed out due to the linear filtering. Not to mention that 256x256 textures are 64 times larger than 32x32 textures, which is a waste of memory considering the art style I'm going for.
Is there a somewhat simple way that I can fix the issue? I want the mipmaps because they prevent the pixels from shimmering, but it's just too muddy and noticeable when using point-filtering for textures.
Have you tried increasing the aniso level when you don't have mipmaps? To me the shimmering seems to be due to the low(er) viewing angle, for which anisotropic filtering was invented (if I remember correctly).
Thanks for the suggestion. Unfortunately, the option for increasing the aniso level is greyed out when using the point filter mode. Unless I'm missing something, I think that's only possible with the linear filter modes.
Ah, right, I forgot about that. Then I'm out of ideas :(
Answer by doctordingus · May 04, 2018 at 11:02 PM
bump? I really want to see if there is a solution that doesn't involve custom shaders, but I'm thinking that's probably what it'll be.
Answer by brycedaawg · Feb 11, 2021 at 02:02 AM
Bump! Anybody find a workaround for this? It would be great if minification filter, magnification filter, mipmap mode, and anisotropy were able to be set independently, as underlying graphics APIs allow you to do.
I never solved this. I was unfamiliar with shaders and what not, but I think that will be the solution. $$anonymous$$aybe writing a shader that at a certain distance will average the colors of the surrounding pixels. I did once find a paid shader in the asset store that looks like it accomplished what I wanted but I never used it because it doesn't support shadows: https://assetstore.unity.com/packages/vfx/shaders/retro-aa-65509