Unity3D:ShaderLab-为子着色器指定 LOD 值

推荐:将NSDT场景编辑器加入你的3D工具链
3D工具集:NSDT简石数字孪生

ShaderLab:为子着色器指定 LOD 值

本页面包含有关在 ShaderLab 代码中使用 LOD 代码块为子着色器指定 LOD(细节级别)值的信息。

概述

可以将 LOD 值指定给子着色器。此值指示其计算方面的需求。

在运行时,您可以为单个 Shader 对象或所有 Shader 对象设置着色器 LOD 的值。然后 Unity 优先考虑具有较低 LOD 值的子着色器。有关 Unity 如何选择何时使用子着色器的信息,请参阅 Shader对象:渲染期间的操作顺序。

注意: 尽管此方法以用于渲染网格的 LOD 功能命名,但是仍然存在重要区别:着色器 LOD 与相对于摄像机的距离无关,并且 Unity 不会自动计算着色器 LOD。必须手动设置最大着色器 LOD。

概述

使用此方法来微调不同硬件上的着色器性能。在用户的硬件理论上支持,但无法很好地运行子着色器时,这很有用。

渲染管线兼容性

功能名称内置渲染管线通用渲染管线 (URP)高清渲染管线 (HDRP)自定义 SRP
ShaderLab:子着色器 LOD 代码块

使用 LOD 代码块

在 ShaderLab 中,可以通过将 LOD 代码块置于 SubShader 代码块中来为子着色器指定 LOD 值。

签名功能
LOD [value]将给定的 LOD 值指定给子着色器。

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

通过 C# 代码使用子着色器 LOD 值

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

代码示例

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

Shader "Examples/ExampleLOD"
{
    SubShader
    {
        LOD 200

        Pass
        {                
              // 此处是定义通道的代码的其余部分。
        }
    }

    SubShader
    {
        LOD 100

        Pass
        {                
              // 此处是定义通道的代码的其余部分。
        }
    }
}

Unity 内置着色器的 LOD 值

在内置渲染管线中,Unity 的内置着色器具有以下 LOD 值:

LOD 值着色器名称
100Unlit/Texture
Unlit/Color
Unlit/Transparent
Unlit/Transparent Cutout
300Standard
Standard (Specular Setup)
Autodesk Interactive

旧版着色器的 LOD 值

在内置渲染管线中,Unity 的内置旧版着色器具有以下 LOD 值:

LOD 值着色器名称
100顶点光照 (VertexLit)
150贴花 (Decal)
反光顶点光照 (Reflective VertexLit)
200漫射 (Diffuse)
250漫射细节 (Diffuse Detail)
反光凹凸无光照 (Reflective Bumped Unlit)
反光凹凸顶点光照 (Reflective Bumped VertexLit)
300凹凸 (Bumped)
镜面反射 (Specular)
400凹凸镜面反射 (Bumped Specular)
500视差 (Parallax)
600视差镜面反射 (Parallax Specular)

3D建模学习工作室整理翻译,转载请注明出处!

上一篇:Unity3D:ShaderLab-向子着色器分配标签 (mvrlink.com)

下一篇:Unity3D:ShaderLab-定义一个通道 (mvrlink.com)

NSDT场景编辑器 | NSDT 数字孪生 | GLTF在线编辑器 | 3D模型在线转换 | UnrealSynth虚幻合成数据生成器 | 3D模型自动纹理化工具
2023 power by nsdt©鄂ICP备2023000829号