Version: 2020.1
Streaming Virtual Texturing requirements and compatibility
Enabling Streaming Virtual Texturing in your project

How Streaming Virtual Texturing works

The Streaming Virtual Texturing system (SVT) divides textures into tiles.

At runtime, when SVT samples a texture, it does the following:

  • It samples an indirection texture, calculates the non-virtual UVs, and samples a cache texture with these UVs.
  • It translates the virtual UVs to a tile ID, and binds an additional render target that receives these tile IDs. The CPU copies this render target back to main memory asynchronously, and processes it on a separate thread, to create requests for the asynchronous read manager to load these tiles from disk into a cache of GPU memory (if they are not already present).

The cost of these runtime operations means that it’s more efficient to group textures together, and to sample them all at the same time. This process is called stacking textures. A group of textures that are sampled at the same time with the same UV coordinates is called a Texture Stack.

SVT issues requests for tiles during frame renderingThe process of drawing graphics to the screen (or to a render texture). By default, the main camera in Unity renders its view to the screen. More info
See in Glossary
, so it can take from milliseconds to seconds until the requested tiles load into the GPU cache, and in some cases they might not load into the GPU cache at all. If the requested tile does not load into the cache, SVT has an automatic fallback mechanism: it samples tiles from a higher mipmap level until the requested tile is in the cache. This results in a lower level of detailThe Level Of Detail (LOD) technique is an optimization that reduces the number of triangles that Unity has to render for a GameObject when its distance from the Camera increases. Each LOD level has either a Mesh with a Mesh Renderer component (Mesh LOD level) or a Billboard asset with a Billboard Renderer component (Billboard LOD level). Typically a single GameObject has three or four Mesh LOD levels and one optional Billboard LOD level to represent the same GameObject with decreasing detail in the geometry. More info
See in Glossary
until the tile fully loads.

SVT in the High Definition Render Pipeline debug view

The High Definition Render Pipeline (HDRP) debug view shows how many neighboring screen pixelsThe smallest unit in a computer image. Pixel size depends on your screen resolution. Pixel lighting is calculated at every screen pixel. More info
See in Glossary
request the same tile.

To open the HDRP debug view, navigate to the Unity top menu and select Window > Render Pipeline > Render Pipeline Debug > Rendering. To view the debug data for SVT, set Fullscreen Debug Mode to VirtualTexturingFeedback.

The debug view uses distinct colors for every tile ID.
The debug view uses distinct colors for every tile ID.

Pixels that sample the same texture tile have the same colour. The color hue (green, red, and so on) represents the mipmap level to which a tile belongs. For example, all yellowish tiles belong to mipmap 1 of the texture.

Streaming Virtual Texturing requirements and compatibility
Enabling Streaming Virtual Texturing in your project
Copyright © 2023 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。
公安部备案号:
31010902002961