Unity3D:定义 Shader 对象

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

ShaderLab:定义 Shader 对象

要使用 ShaderLab 定义 Shader 对象,可以使用 Shader 代码块。本页面包含有关使用 Shader 代码块的信息。

有关 Shader 对象的工作原理以及 Shader 对象、子着色器与通道之间关系的信息,请参阅 Shader 对象简介。

概述

Shader 对象是 Unity 特定的概念;它是着色器程序和其他信息的封装器。它允许您在同一个文件中定义多个着色器程序,并告诉 Unity 如何使用它们。

Shader 对象具有嵌套结构;它将信息组织成结构(称为 SubShader 和 Pass)。

渲染管线兼容性

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

使用 Shader 代码块

Shader 代码块中,可以:

  • 使用 Properties 代码块定义材质属性。参阅 ShaderLab:定义材质属性。
  • 使用 SubShader 代码块定义一个或多个子着色器。请参阅 ShaderLab:定义子着色器。
  • 分配一个自定义编辑器,它确定着色器资源在 Unity 编辑器中的显示方式。或者,可以为不同的渲染管线分配不同的自定义编辑器。请参阅 ShaderLab:分配自定义编辑器。
  • 使用 Fallback 代码块分配一个回退 Shader 对象。参阅 ShaderLab:分配回退。
签名功能
Shader "<name>"
{
    <optional: Material properties>
    <One or more SubShader definitions>
    <optional: custom editor>
    <optional: fallback>
}
定义具有给定名称的 Shader 对象。

Legacy shader names

在 Unity 5.0 之前,着色器的某些功能由其路径和名称决定。这仍然是 Unity 的旧版着色器的工作方式。更改这些着色器的名称可能会影响其功能。

示例

此示例代码演示 Shader 对象的基本语法和结构。示例 Shader 对象有一个包含单个通道的 SubShader。它定义材质属性、一个 CustomEditor 和一个 Fallback。

Shader "Examples/ShaderSyntax"
{
    CustomEditor = "ExampleCustomEditor"

    Properties
    {
        // 此处是材质属性声明
    }
    SubShader
    {
        // 此处是定义子着色器的其余代码

        Pass
        {
           // 此处是定义通道的代码
        }
    }

    Fallback "ExampleFallbackShader"
}

有关与不同的渲染管线兼容的示例着色器,请参阅示例自定义着色器。


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

上一篇:Unity3D:编写着色器概述 (mvrlink.com)

下一篇:Unity3D:ShaderLab-定义材质属性 (mvrlink.com)

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