Texture streaming vs. virtual textures

Hi all. I saw that Epic has put Virtual Textures on their roadmap. My question is how would this be different from the current texture streaming technology? Would virtual textures replace texture streaming? Would it build on it? Or is it used for the same purpose but in other cases?

It’s easy to mix both things up because elsewhere part of the technology behind virtual textures is also known as texture streaming and both engine features have alot in common on the technical side. In the concrete case of UE, texture streaming currently names the mechanism behind streaming MIP levels of textures to the GPU, so only those MIP levels are residing in GPU memory that are currently needed for rendering.

The Virtual Textures feature will enable you to make use of huge textures (known as Megatextures in id tech btw). So just for an example - I don’t know exactly right now which parts of UE will support Virtual Textures in the end - , you could be able to have 32k textures of a landscape(diffuse, normal, height for example) on your HDD, and the engine prepares this texture in a preprocessing step so that it can upload tiles from it to the GPU.

Thats the same technology you can get with Graphine’s Granite plugin for example. I did a basic test (but in Unity back then) two years ago and the results were - simply put - awesome. → Mars - Graphine Granite for Unity Test - YouTube

Thank you very much! My follow-up question would have been “okay, isn’t that the same as what Granite does?” and you just answered that, so thank you :slight_smile:

You’re welcome, my pleasure. :slight_smile: While plugins like Granite certainly work, there’s always a downside to external functionality like that, for example with overhead, restrictions etc. That’s why I’m very excited for engine integrated Virtual Textures, since that will give the best performance and freedom possible. Working with Granite under Unity back then always felt a bit like living in a cage, and it was a tremendous amount of work to make it work outside of simple Standard shaders. But I’m pretty sure Epic will deliver - well - epically. :slight_smile: