Forcing LODBias on textures in a mobile build has no effect

Hello!

I’m trying to force higher values of LODBias for a specific texture group when building for some mobile devices. It seems to work on PC, but has no visible effect on a mobile build (iOS). More specifically, memreport shows the textures to be cooked in lower resolution, but they’re loaded into memory with the original resolution and displayed as such.

I’ll try to be as specific as possible as to what I did (it’s pretty long, bear with me):

I followed the advice in this topic: Change TextureLODSetting example. I added a CVar that I set only in specific device profiles (in BaseDeviceProfiles.ini) and then I used it to offset whatever the default LODBias for the texture group is. Initially I did it in UTexture::UpdateCachedLODBias(), as advised in the linked thread, but when that didn’t work I figured I would override the global setting in GSystemSettings.TextureLODSettings. For testing purposes, I do it in LaunchEngineLoop.cpp, right after UDeviceProfileManager::InitializeCVarsForActiveDeviceProfile();, as it seems to be the first place where I can actually start using CVars. (I realize this is not the best place to do it, but I just wanted to be sure to do it as soon in the launch process as possible).

I override LODBias in the system settings like this:

GSystemSettings.TextureLODSettings.GetTextureLODGroup(textureGroup).LODBias += LODBiasDeviceOffset;

Both of the attempts (the first in UTexture and the second in global settings) have the same effect. On PC I get the correct LODBias (when I set a CVar for the Windows profile), but on mobile I can see no visible effect, but instead memreport returns very baffling info:

,Authored Width,Authored Height,Cooked Width,Cooked Height,Current Width,Current Height,Max Size,Current Size,LODBias,LODGroup,Name,Streaming,Usage Count
,2048,2048,256,256,2048,2048,1365,1365,3,TEXTUREGROUP_World,[...],NO,0

I fail to understand how Cooked Width/Height can be 256 (correctly reduced with LODBias=3), and yet Current Width/Height remains 2048, as if there was no LODBias.

Any help or ideas what to check next would be greatly appreciated, as I’m all out of ideas at this point.

Thanks in advance for your help.

Oh btw, I realize this feature is coming in 4.8, but I’m afraid i need to get it working in 4.7, if only with a quick&dirty hack.