包含此页的版本:
不含此页的版本:
你可以将流送虚拟纹理(SVT)与着色器在 GPU 上运行的程序。更多信息
请参阅术语表在着色器图表中创建。在开始之前,你必须在项目中启用虚拟纹理。内置的高清渲染管线着色器(如 Lit 和 Unlit)不支持 SVT。
要使用 SVT 流送纹理,必须将纹理添加到 虚拟纹理属性(Virtual Texture Property) 。虚拟纹理属性(Virtual Texture Property) 定义了相关纹理的堆栈。要对这些纹理进行采样,请将 虚拟纹理属性(Virtual Texture Property) 连接到 采样虚拟纹理(Sample Virtual Texture) 节点。采样虚拟纹理(Sample Virtual Texture) 节点将一个UV坐标作为输入,并使用该UV坐标对所有纹理进行采样。
应尽可能将纹理组合到同一个虚拟纹理属性中。这是因为对属于同一虚拟纹理属性的多个纹理进行采样比对多个虚拟纹理属性进行采样更有效。
在片段阶段使用 采样虚拟纹理(Sample Virtual Texture) 节点时,SVT会根据采样的UV自动流式传输纹理图块。为此,示例虚拟纹理节点会将其读取的图块ID输出到渲染目标中。要关闭此功能,请打开节点设置并禁用 自动流式处理(Automatic Streaming) 。有关更多信息,请参阅流送虚拟纹理的工作原理。
要在顶点阶段使用示例虚拟纹理节点,你首先需要在 示例虚拟纹理(Sample Virtual Texture) 节点上禁用 自动流送(Automatic Streaming) ,然后选择LOD 细节级别 (LOD) 技术是一种优化,可减少 Unity 在游戏对象与相机的距离增加时必须为游戏对象渲染的三角形数量。更多信息
请参阅术语表水平模式。然后,您必须使用脚本手动请求 SVT 加载磁贴。为此,请使用VirtualTexturing.Streaming.RequestRegion方法如下:
VirtualTexturing.Streaming.RequestRegion(Material, Stack ID, Rect, mipmap, numMips)
您可以使用此方法加载任何尚不可见的图块,这允许您执行诸如构建预提取系统之类的作。需要每帧调用此方法,否则系统会假定不再需要磁贴,并在流式传输其他磁贴时可能会逐出它们。
你必须在着色器图表中分配虚拟纹理属性的所有纹理插槽。
SVT会将你分配给虚拟纹理属性的每个唯一纹理组合复制到流送虚拟纹理的唯一部分。因此,如果你在虚拟纹理属性中使用许多不同的纹理组合,它可能会增加你的项目构建大小,因为每个组合都是单独存储的。
在着色器图表中使用 示例虚拟纹理(Sample Virtual Texture) 节点时,存在一些限制。
VirtualTexturing.Streaming.RequestRegion.