Version: Unity 6.0 (6000.0)
语言 : 中文
在 ShaderLab 和 HLSL 中编写自定义着色器
为自定义着色器添加子着色器

创建着色器文件

Switch to Scripting

着色器资源是 Unity 项目中的资源,它定义了一个 Shader 对象。它是一个扩展名为 .shader 的文本文件。它包含着色器代码

  1. 从主菜单中选择__资产 (Assets)__ > 创建 (Create) > 着色器 (Shader)

  2. 创建着色器。

您可以创建以下类型的着色器:

着色器类型 描述
标准表面着色器 (Standard Surface Shader) 用于编写与光照交互的简化着色器代码的着色器。
无光照着色器 (Unlit Shader) 显示无任何光照的纹理的基本着色器。
图像效果着色器 (Image Effect Shader) 与 C# 脚本关联的着色器文件,用于创建图像效果
计算着色器 (Compute Shader) 在 GPU 上执行计算的着色器,在常规图形管线之外。
光线追踪着色器 (Ray Tracing Shader) 执行与光线追踪相关的计算的着色器。

Unity 使用基本代码在 Assets 文件夹中填充一个新的 .shader 文件。

手动创建着色器文件

要在__ ShaderLab__Unity 用于定义着色器对象结构的语言。更多信息
See in Glossary
中定义一个 Shader 对象,可使用 Shader 代码块。本页面包含有关使用 Shader 代码块的信息。

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

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

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

    Properties
    {
        // Material property declarations go here
    }
    SubShader
    {
        // The code that defines the rest of the SubShader goes here

        Pass
        {
           // The code that defines the Pass goes here
        }
    }

    Fallback "ExampleFallbackShader"
}

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

旧版着色器名称

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

禁用自动升级

UNITY_SHADER_NO_UPGRADE 允许您禁止 Unity 自动升级或修改着色器文件。

其他资源

在 ShaderLab 和 HLSL 中编写自定义着色器
为自定义着色器添加子着色器