If a virtual texture physical pool becomes oversubscribed the current behavior is:
Log a one time only warning: ''Failed to allocate VT page from pool...'
Continue to evict the least recently used textures as normal, but now this will start to thrash the cache.
This leads to flickering in the final image as available VT pages rapidly change.
A better behavior would be to:
Apply a mip bias for virtual textures (either globally or only the ones using the affect physical pool).
Show some persistent message to the user if appropriate (but don't spam the logs!).
Modify the DefaultEngine.ini file for a project to give a small DefaultSizeInMegabytes value and to comment out any pool specific values.
[/Script/Engine.VirtualTexturePoolConfig] DefaultSizeInMegabyte=4 ;+Pools=(SizeInMegabyte=16, Formats=(PF_G16))
Observe the behavior on any map that uses a lot of virtual texturing.
Note that sometimes the flickering is bad, but other times it is less visible because we can reach a relatively stable state. A non visual way to check the behavior is to use
stat VirtualTexturing
With a static camera, if the value for Num Page Update isn't converging to zero but remains at a high level then this means the cache will be thrashing.
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-109349 in the post.
4 |
Component | UE - Graphics Features |
---|---|
Affects Versions | 4.26 |
Target Fix | 5.0 |
Created | Feb 24, 2021 |
---|---|
Resolved | Jun 21, 2021 |
Updated | Sep 19, 2021 |