Version: 2020.3
Streaming Virtual Texturing 要求和兼容性
在项目中启用 Streaming Virtual Texturing

Streaming Virtual Texturing 的工作原理

Streaming Virtual Texturing 系统 (SVT) 将纹理划分为图块。

在运行时,当 SVT 对纹理进行采样时,它会执行以下操作:

  • 它对间接纹理进行采样,计算非虚拟 UV,并使用这些 UV 对缓存纹理进行采样。
  • 它将虚拟 UV 转换为图块 ID,并绑定接收这些图块 ID 的附加渲染目标。CPU 将此渲染目标异步复制回主内存,并在单独的线程上进行处理,以创建异步读取管理器的请求,将这些图块从磁盘加载到 GPU 内存的缓存中(如果它们尚未存在)。

这些运行时操作的成本意味着将纹理组合在一起并同时对它们进行采样会更高效。这个过程称为堆叠纹理。使用相同 UV 坐标同时采样的一组纹理称为纹理堆栈。

SVT 在帧渲染期间发出图块请求,因此将请求的图块加载到 GPU 缓存可能需要几毫秒到几秒的时间,并且在某些情况下它们可能根本不会加载到 GPU 缓存中。如果请求的图块没有加载到缓存中,SVT 有一个自动回退机制:它从更高的 Mipmap 级别采样图块,直到请求的图块位于缓存中。这会导致细节级别降低,直到图块完全加载。

高清渲染管线调试视图中的 SVT

高清渲染管线 (HDRP) 调试视图显示有多少相邻屏幕像素请求相同的图块。

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.

调试视图为每个图块 ID 使用不同的颜色。
调试视图为每个图块 ID 使用不同的颜色。

对相同纹理图块进行采样的像素具有相同的颜色。色调(绿色、红色等)表示图块所属的 Mipmap 级别。例如,所有黄色图块都属于 Mipmap 1 的纹理。

Streaming Virtual Texturing 要求和兼容性
在项目中启用 Streaming Virtual Texturing