Use Runtime Virtual Textures to Improve Landscape Performance in Unreal Engine

Arunoda Susiripala
GameDev4k
Published in
2 min readFeb 4, 2021

--

If you working with Unreal Engine, I bet you are familiar with shader complexity. If not, just enter ALT + 8 & you can see something like this.

Shader Complexity of a landscape with some auto-material

This shows the cost it takes to render a material on the screen. It’s ideal if we can make it green all over the place. Or at least we should try to make it green for the majority of the screen real state.

But, landscape materials are complex & they take most of the screen space. That’s why we should try to make it green as we can possible.

What you are looking at the shader complexity of OpenLand without any optimizations.

Even at this stage, we can achieve 100+ frames per second using 16 threads CPU & 2060 RTX GPU.

But if you are looking to optimize it further, we can use Runtime Virtual Textures as a cache(RVT Cache) for our auto-material. So, GPU doesn’t need to re-process the material on every frame.

Here’s the shader complexity after we enabled RVT Cache support:

So, it’s much better.

What we are compromising to achieve this?

Yeah! In order to get this, we need to compromise the texture quality. When you are looking at a distance with foliage, it’s hard to see the difference.

In my tests, it gives slight performance improvements. But if you are targetting for a lower-end GPU, the benefits could be better.

Watch this video to learn more about this & try it with your Unreal Engine landscape:

--

--