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