Version: 2020.3
将纹理标记为"仅虚拟纹理"
稀疏纹理

虚拟纹理错误材质

您可以将 Streaming Virtual Texturing (SVT) 与您在 Shader Graph 中创建的着色器一同使用。要使用 SVT 流式传输一个或多个纹理,您需要正确设置您的材质和 Shader Graph。要了解更多信息,请参阅在 Shader Graph 中使用 Streaming Virtual Texturing

当纹理设置不正确时,Unity 无法渲染材质。相反,Unity 使用紫色和蓝色棋盘图案渲染一个虚拟纹理 (VT) 错误纹理。在您修复验证错误之前,此纹理将保持可见。

虚拟纹理错误纹理
虚拟纹理错误纹理

验证错误

纹理堆栈是 Unity 同时采样的一组纹理,使用相同的 UV 坐标。当纹理堆栈或纹理堆栈中的纹理未处于有效状态时,会发生验证错误。

您可以在 Material Inspector 中看到验证错误:

Inspector 中的验证错误
Inspector 中的验证错误

此验证错误示例是由具有三层的纹理堆栈引起的,该堆栈仅分配了两个纹理字段。

纹理堆栈验证错误的常见原因包括:

当堆栈中的一个或多个纹理未处于有效状态时,也会发生错误。纹理验证错误的原因包括:

  • 该纹理不是 Texture2D 类型(SVT 不支持数组或立方体贴图)。

  • 该纹理使用镜像包裹模式。

  • 该纹理在每个轴上使用不同的钳制模式(例如,垂直钳制的同时水平重复)。纹理的分辨率不是 2 的幂。

  • 所有纹理的宽高比都不相同。

  • 该纹理不符合 128 x 128 像素的最小尺寸。

  • 该纹理没有 Mipmap。

  • 该纹理在纹理导入器中启用了 Use Crunch compression

构建播放器错误

为了让 Unity 使用 SVT 构建播放器,所有材质都必须使用具有匹配宽高比的有效纹理,并具有有效的虚拟纹理属性(请参阅验证错误)。如果播放器构建中的材料处于无效状态,则会导致控制台日志中出现构建错误。

错误命名约定

当 Unity 记录验证错误时,它会根据以下约定命名纹理堆栈:

  • 纹理堆栈具有的层数。
  • 纹理堆栈层名称采用 ShaderGraph 中的设置。

以下是此命名约定的两个示例:

  • 具有两层的纹理堆栈中的错误名称:Texture 2(Layer_Name_1, NULL)
  • 具有三层的纹理堆栈中的错误名称:Texture 3 (Layer_Name_1, Layer_Name_2, NULL)

当控制台日志中出现错误时,错误名称还包括使用纹理堆栈的材质。例如:

  • ‘Texture Stack 2 (3_BaseColorMap, NULL)’ of material ‘materialname3’.
将纹理标记为"仅虚拟纹理"
稀疏纹理