I'm working on a project where texture crispiness is important,
I find Godot mipmapping a bit to aggressive on mobile/vulkan
Is there a way to control mipmapping levels?
I'm working on a project where texture crispiness is important,
I find Godot mipmapping a bit to aggressive on mobile/vulkan
Is there a way to control mipmapping levels?
This section of Project Settings doesn't seem to be very effective...
papalagi You can use textureLod()
instead of texture()
when sampling in shaders. It lets you specify the mip level as an argument. For standard materials you can set filtering type in sampling options, which include toggling mipmaps or using anisotropic sampling. I don't know is there's a way to control bias per material/shader.
Can you show what specifically is bothering you?
papalagi Of course, i'm marking the places where textures get too fast too blurry.
Even with anisotropic mipmap filtering?
Btw this image looks fine to me, but I prefer details to go away with distance. Godot probably doesn't do anything special about mipmaps. It just lets the default level be chosen by the GPU driver.
As I said, you can make custom shaders that sample using textureLod()
and implement your criteria for choosing a mip level. It's typically done by determining inter-pixel gradients using "magical" functions dFdx()
and dFdy()
. Take a look here for details. It's glsl but it's directly applicable to Godot's shading language as it's basically an extended version of glsl.
The parameter that improved my mipmaps at the end is in the Standard Shader:
I suggested anisotropic mipmap filtering in the above post from 8 days ago