您可以为 LOD细节层次 (LOD) 技术是一种优化方法,当游戏对象与摄像机的距离增加时,它会减少 Unity 需要渲染的游戏对象三角形数量。 更多信息
参见 术语表 值分配给 SubShader。此值指示其计算量有多大。
在运行时,您可以为单个 着色器在 GPU 上运行的程序。 更多信息
参见 术语表 LOD 值设置 着色器对象Shader 类的实例,着色器对象是着色器程序和 GPU 指令以及告知 Unity 如何使用它们的信息的容器。将它们与材质一起使用以确定场景的外观。 更多信息
参见 术语表,或为所有着色器对象设置。然后,Unity 会优先考虑 LOD 值较低的 SubShader。有关 Unity 何时选择使用 SubShader 的信息,请参阅 Unity 如何选择 SubShader。
注意:虽然此技术以用于渲染网格的 LOD 功能命名,但它们之间存在重要区别:着色器 LOD 与距 摄像机一个组件,用于创建场景中特定视点的图像。输出要么绘制到屏幕上,要么捕获为纹理。 更多信息
参见 术语表 的距离无关,并且 Unity 不会自动计算着色器 LOD。您必须手动设置最大着色器 LOD。
使用此技术可以微调不同硬件上的着色器性能。当用户的硬件在理论上支持 SubShader,但硬件无法很好地运行它时,这很有用。
注意:在 Shader
块内,您必须按降序 LOD 顺序放置 SubShader。例如,如果您有 LOD 值为 200、100 和 500 的 SubShader,则必须先放置 LOD 值为 500 的 SubShader,然后是 LOD 值为 200 的 SubShader,最后是 LOD 值为 100 的 SubShader。这是因为 Unity 选择它找到的第一个有效的 SubShader,因此如果它首先找到 LOD 较低的 SubShader,它将始终使用该 SubShader。
此示例代码创建了一个着色器对象,其中包含两个 SubShader:一个 LOD 值为 200,另一个值为 100。SubShader 按 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.
}
}
}
要为给定的着色器对象设置着色器 LOD,您可以使用 Shader.maximumLOD。要为所有着色器对象设置着色器 LOD,您可以使用 Shader.globalMaximumLOD。默认情况下,没有最大 LOD。