The disk footprint for our title is large due to the size and count of the textures in our game. We wanted to try using OptionalLODBias to seperate this data out, to help with streaming install size for consoles, and provide an optional high resolution texture pak for PC.
We did a test with OptionalLODBias=1, and we only saw about 5.7gb of data get moved into the optional paks.
However, when we tried using LODBias=1 and LODBias_VT=1 on our console build, the install size dropped over 30gb. Most of our large textures are virtual textures. Is OptionalLODBias supposed to work with virtual textures?
If not, how difficult of a change would that be to make?
The short answer is that the OptionalLODBias option is not supported by virtual textures. Optional MIPs are a concept of regular texture streaming where extra high MIPs reside in optional bulk data.
If you need to reduce VT resolution or bias its mip selection, you can try the following:
Use LODBias_VT and MaxLODSize_VT in your device profile’s TextureLODSettings for the relevant TextureGroup to set your LoD biases.
For RVT content, tune the URuntimeVirtualTexture tile count/size and VirtualTextureTileCountBias/TileSizeBias in FTextureLODGroup for the group the RVT asset uses.
If you want low-resolution fallbacks for RVT, use the Streaming Mips feature via UVirtualTextureBuilder and URuntimeVirtualTextureComponent::StreamLowMips. This is the approach for editor-built VT streaming mips and is separate from OptionalLODBias.
I hope that helps, but please let me know if you have any further questions.
I forgot to answer your question about implementing an OptionalLODBias option for VTs yourself. I suggest avoiding that as much as possible, since implementing these changes would require making some very non-trivial modifications to our cook/build, resource creation, and request mapping frameworks. I think your best course of action should be to tune your VT texture pools. I would like to add that, in addition to the previously mentioned information, you can enable the “bEnableResidencyMipMapBias” feature via FVirtualTextureSpacePoolConfig to dynamically set your mip biases.
You are welcome! I hope my suggestions will be helpful to you. Of course, if you still encounter issues with large install sizes for your title down the road, please reach out again, and we can explore alternative solutions for you.
Hi James, OptionalMaxLODSize does not work with Virtual Textures, as it is a non-VT concept for regular Texture2D mips placed into optional bulk data to stream later
Our reason for looking at OptionalLODBias was to address install footprint / disk size concerns, and give ourselves some options like making high resolution textures an optional download, or moving them out of the initial streaming install chunk for consoles so players could get into the game faster.
Its good to know that making it work with VTs would be a very heavy lift, and we should consider other options.