Version: 6000.3
语言: 中文
在 ShaderLab 和 HLSL 中编写自定义着色器
在自定义着色器中添加子着色器

创建着色器文件

切换到脚本

着色器资产是 Unity 项目中的资产,它定义了Shader 对象Shader 类的实例,Shader 对象是着色器程序和 GPU 指令的容器,以及告诉 Unity 如何使用它们的信息。将它们与材质一起使用,以确定场景的外观。更多信息
请参阅术语表
.这是一个带有.shader外延。它包含着色器代码

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

  2. 创建着色器。

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

着色器类型 描述
标准表面着色器 一种着色器,可让您编写与照明交互的简化着色器代码。
无光照着色器(Unlit Shader) 一个基本着色器,显示没有任何光照的纹理。
图像效果着色器 与创建图像效果的 C# 脚本关联的着色器文件。
计算着色器 在常规图形管道之外的 GPU 上执行计算的着色器。
光线追踪通过跟踪从相机通过每个像素的光线并记录命中点处的颜色贡献来生成图像的过程。这是光栅化的替代方法。光线追踪
术语表中查看
着色
执行与光线追踪相关的计算的着色器。

Unity 填充新的.shader文件在您的Assets文件夹中。

手动创建着色器文件

要在ShaderLabUnity 用于定义 Shader 对象结构的语言。更多信息
请参阅术语表
,请使用Shader块。此页面包含有关使用Shader块。

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

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

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 自动升级或修改着色器文件。

Unity 定期升级着色器,以保持与语法、API 或渲染管道更改的兼容性。

其他资源

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