How to change texture resolution in game?

Say I have all my game’s textures at highest possible quality (resolution), some of them 4096x4096. These are the textures resolutions that will be used when the player sets texture quality to the highest possible.

Now, how do I change texture resolution (i.e. increment LOD Bias) if the user changes texture quality to medium or low? Is there a function, or an ini setting, that says “reduce all textures resolutions by half” or “for each texture, if any texture is 4096x4096, reduce its size to 2048x2048”?

I am referring in game of course, not by manually opening each texture in the editor and changing their LOD bias.

Hi!

You can use scalability for texture, effects, resolution and etc.

Hello,

Engine scalability does not take into account the setting of texture sizes based on a variable and NOT using texture streaming. Due to some performance issues I can’t use texture streaming (GPU/CPU overhead).

Is there a way of changing all existent textures to use a lower mipmap instead of the normal one? What I want is a feature that is present in Unity: Unity - Scripting API: QualitySettings.masterTextureLimit

I want to set a ‘global’ mipmap bias that halves automatically ALL the textures used in the engine. I’ve thought at a solution that would load all the used resources at runtime and apply that bias to them, but I don’t want to do extra work before knowing that there is an alternative.

From what I understand, @AssemblerJohn, you have two decent options:

  1. To apply a “global” mip bias to (many) textures in your game, you can set the r.Streaming.MipBias cvar in your default or per-platform config files. This will not be applied to certain textures, however, such as landscapes (see Texture Streaming Configuration).
  2. You can set the LODBias for every texture group in the engine, which will then be applied to all textures (see Texture Support and Settings). This also gives you the option to reduce the resolution for most textures in the game without doing it indiscriminately (for example, to keep UI and shadows at full size).

Hello,

  1. Is not useful for me since I don’t use texture streaming, it incurs an extra cost on the CPU/GPU
  2. Is quite useful, however I’ve looked through the docs/code and I can’t see how to change it at run-time which is what I need

What I practically need is a ‘settings’ option that would have texture resolution at ‘high’ (max texture size) and ‘low’ that would half all world/character texture settings.

Any idea on how to change those settings at run-time?