版本:Unity 6 (6000.0)
语言:英语
在 ShaderLab 和 HLSL 中编写自定义着色器
在自定义着色器中添加子着色器

创建着色器文件

切换到脚本

着色器资源是 Unity 项目中定义的资源 着色器对象Shader 类的一个实例,着色器对象是着色器程序和 GPU 指令的容器,以及告诉 Unity 如何使用它们的資訊。 将它们与材质一起使用以确定场景的外观。 更多資訊
参见 词汇表
。 它是一个扩展名为 .shader 的文本文件。 它包含 着色器代码

  1. 从主菜单中选择 资源游戏中或项目中可使用的任何媒体或数据。 资源可能来自在 Unity 之外创建的文件,例如 3D 模型、音频文件或图像。 您也可以在 Unity 中创建一些资源类型,例如动画控制器、音频混音器或渲染纹理。 更多資訊
    参见 词汇表
    > 创建 > 着色器在 GPU 上运行的程序。 更多資訊
    参见 词汇表

  2. 创建着色器。

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

着色器类型 描述
标准表面着色器 一个允许您编写简化着色器代码以与照明交互的着色器。
无光着色器 一个基本的着色器,在没有任何照明的情况下显示纹理。
图像效果着色器 与创建 图像效果 的 C# 脚本相关联的着色器文件。
计算着色器 一个在 GPU 上执行计算的着色器,位于常规图形管道之外。
光线追踪通过从相机通过每个像素追踪光线并记录命中点的颜色贡献来生成图像的过程。 这是光栅化的替代方法。 光线追踪
参见 词汇表
着色器
一个执行与光线追踪相关的计算的着色器。

Unity 会在您的 Assets 文件夹中填充一个新的 .shader 文件,其中包含基本代码。

手动创建着色器文件

要在 ShaderLabUnity 定义着色器对象结构的语言。 更多資訊
参见 词汇表
中定义着色器对象,请使用 Shader 块。 此页面包含有关使用 Shader 块的信息。

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

此示例代码演示了着色器对象的语法和结构。 示例着色器对象具有一个包含单个通道的单个子着色器。 它定义了材质属性、自定义编辑器和回退。

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 允许您从预构建的渲染管道中进行选择,或者编写自己的渲染管道。 更多資訊
参见 词汇表
兼容的示例自定义着色器,请参见 示例自定义着色器

传统着色器名称

在 Unity 5.0 之前,着色器的一些功能由它的路径和名称决定。 这就是 Unity 的传统着色器 的工作方式。 更改这些着色器的名称可能会影响其功能。

禁用自动升级

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

其他资源

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