No announcement yet.

Landscape Virtual Texturing (Since UE 4.23)

  • Filter
  • Time
  • Show
Clear All
new posts

    Landscape Virtual Texturing (Since UE 4.23)

    Looks like we are getting Virtual Texturing support with 4.23.

    I want to dedicate this thread specifically to landscapes where VT will probably be a big gain. From what I've heard is that huge landscapes with many layers (10+) is a bottleneck in UE with the old Texture Streaming method.

    I've already done some tests (in 4.23 preview 1) but I'm unsure if this way actually gets the most out of VT for landscapes.

    So what I've done is enabling the "Virtual Texturing Streaming" on each landscape Texture.

    Click image for larger version  Name:	VirtualTexture1.png Views:	1 Size:	30.8 KB ID:	1641435

    After that I went through the landscape material and switched the Sampler Type of any Texture Sampler to Virtual Color/Normal.

    Click image for larger version  Name:	VirtualTexture2.png Views:	1 Size:	87.6 KB ID:	1641436

    So as I said, I don't know if this is actually sufficient to fully take advantage of VT or if there needs to be a lot more work to be done on the landscape material.

    There are also some new material nodes like Runtime Virtual Texture Sample. I couldn't figure out it's usage yet.

    Click image for larger version  Name:	D_QYj7mVUAAHCaa.png_large Views:	1 Size:	16.0 KB ID:	1641437

    do virtual textures act like megatextures?
    or amplify textures?
    where we can potentially use a **** ton of textures? with limited mesh space?


      That's very interesting.
      I'm also not sure about the advantages, I hope they'll explain that feature more in the final release notes.
      For example, if we have a landscape material with a couple of 4k textures (counting things like splatmaps, global normal maps, etc.), will that improve the performance in this case?


        To my understanding, this should go much further with the landscape textures getting rendered into a virtual texture (using decals and potentially complex layering) and then the landscape and static meshes would simply sample that runtime generated texture. This would avoid the high costs of constantly recalculating the often expensive landscape material for every visible pixel at the cost of some memory and especially import make it much easier for other static meshes to use that landscape material as well.
        The only issue with a system like that is that I have no clue how it would handle triplanar texture mapping, but I can do without triplanar mapping if there is a simple way to use the landscape material in static meshes to cover steep areas, that would result in better looking environments anyway.
        Randomized tiling function to eliminate repeating patterns in textures.


          From what I understand, it seems like virtual texturing is just a more efficient (depending on the circumstances) streaming algorithm, where the algorithm doesn't need to stream in the entire texture but only the texels requested by the engine. My immediate thought was how useful this would be for HLODs and merged material atlases created by the engine's built-in tools, as the pixels will be streamed in as needed.

          However, it seems like VTs often have their own inherent issues. Here's a link to a stack exchange post that I think discusses it really well:


          I'm excited for what VTs can do, but I don't think they'll completely replace traditional textures anytime soon, but I certainly hope they'll find their place as something to offset issues that traditional texturing methods have difficulty with.