How can I use Streaming Virtual Texture in projects with MANY/MASSIVE textures without blurry them

Hi Everyone. I was recently enabling Streaming Virtual Texture in my project which has about 20k textures(UI textures not included) in it. However, these virtual textures got blurred in runtime. More informations are as follows:

  1. When typing r.VT.Residency.Notify 1 in console, There willl be yellow colored warning information saying that “VT Pool [DXT1] is oversubscribed. Setting MipBias 0”;
  2. When typing r.VT.Verbose 1 in console, there will be many output log says that “Space 0, vAddr 0@0 is not allocated to any AllocatedVT but was still requested” and “VT dropped -XXX loaded requests”. “-XXX” is a negative integer number.
  3. Camera is not moving when I try the above operations.
  4. I have tried to adjust the fixed pool and transient pool settings in editor and packaged builds but still get a blurred result.
  5. I did not change the Tile Size Setting of Virtual Texture in Project Settings. So I am still using the default setting.

So here are my questions:

  1. Are there any documentations or slides which talk about the insides of Streaming Virtual Texturing of Unreal Engine.
  2. How about increase the Tile Size Setting, cause I feel like the virtual page might not be enough.

It will be a great help if anyone know something about this. Many Thanks!!!

I think you might be having texture streaming pool error, which would be visible written red on your viewport.

Most probably something like this :

If yes then type “r.Streaming.PoolSize” in your console command and by default it should be 1000 if you’ve not changed anything, then increase it up to 3000 or 4000 but it will increase the use of your performance.

@malik_217 Hi, Thanks for your reply. So I’ve tried this already, but still not working. What you mentioned will work if I use regular texture(not Streaming Virtual Texture) because before I enable VTs for my textures, they will get blurred if “r.Streaming.PoolSize” is small. So Streaming VTs has different pools I guess.

Maybe try lowering resolution of your textures, like you might be having 4k or 8k textures for many tiny things in which it won’t matter that if it is 2k or 4k.

So try lowering those, that might help.

I wrote this for offline rendering but it could be helpful here.

r.Streaming.PoolSize will not affect Virtual Textures, as they have their own pool.