Version: 6000.3
语言: 中文
当 Unity 通过 LightMode 标记运行着色器通道时设置
禁用着色器的动态批处理

使用 LOD 命令优先考虑低质量着色器

您可以分配一个LOD细节级别 (LOD) 技术是一种优化,可减少 Unity 在游戏对象与相机的距离增加时必须为游戏对象渲染的三角形数量。更多信息
请参阅术语表
值添加到子着色器。此值表示它的计算要求。

在运行时,您可以将着色器在 GPU 上运行的程序。更多信息
请参阅术语表
LOD的
单个值Shader 对象Shader 类的实例,Shader 对象是着色器程序和 GPU 指令的容器,以及告诉 Unity 如何使用它们的信息。将它们与材质一起使用,以确定场景的外观。更多信息
请参阅术语表
,或对于所有 Shader 对象。然后,Unity 会优先考虑 LOD 值较低的子着色器。有关 Unity 如何选择何时使用子着色器的信息,请参阅 Unity 如何选择子着色器

注意:尽管此技术以渲染网格的 LOD 功能命名,但存在重要区别:着色器 LOD 与相机在场景中创建特定视点图像的组件。输出要么绘制到屏幕上,要么作为纹理捕获。更多信息
请参阅术语表
,并且 Unity 不会自动计算着色器 LOD。您必须手动设置最大着色器LOD。

使用此技术可以微调不同硬件上的着色器性能。当用户的硬件理论上支持子着色器,但硬件无法很好地运行它时,这很有用。

注意:在您的Shader块,则必须按LOD降序排列子着色器。例如,如果你有LOD值为200、100和500的子着色器,则必须先放置LOD值为500的子着色器,然后是LOD值为200的子着色器,然后是LOD值为100的子着色器。这是因为 Unity 会选择它找到的第一个有效的子着色器,因此如果它首先找到一个 LOD 较低的子着色器,它将始终使用该 SubShader。

此示例代码创建一个包含两个子着色器的对象:一个 LOD 值为 200,另一个值为 100。子着色器按LOD值降序排列。

Shader "Examples/ExampleLOD"
{
    SubShader
    {
        LOD 200

        Pass
        {                
              // The rest of the code that defines the Pass goes here.
        }
    }

    SubShader
    {
        LOD 100

        Pass
        {                
              // The rest of the code that defines the Pass goes here.
        }
    }
}

将 SubShader LOD 值与 C# 代码一起使用

要为给定的着色器对象设置着色器LOD,您可以使用Shader.maximumLOD。要为所有着色器对象设置着色器LOD,可以使用Shader.globalMaximumLOD。默认情况下,没有最大LOD。

其他资源

当 Unity 通过 LightMode 标记运行着色器通道时设置
禁用着色器的动态批处理