Version: 2021.1
编写着色器
ShaderLab

编写着色器概述

语言

为 Unity 编写着色器时,使用以下语言:

  • 一种称为 HLSL 的编程语言。使用它可编写着色器程序本身。有关 HLSL 的更多信息,请参阅 Unity 中的 HLSL
  • 一种称为 ShaderLab 的 Unity 特定语言。使用它可定义 Shader 对象,它充当着色器程序的容器。有关 ShaderLab 的更多信息,请参阅 ShaderLab

不需要为不同的平台使用不同的语言;Unity 针对不同的图形 API 将 HLSL 和 ShaderLab 代码编译为不同语言。有关更多信息,请参阅着色器编译

注意:如果需要,还可以直接用 GLSL 和 Metal 编写着色器程序。在常规工作流程中,不建议或不需要这样做。有关如何使用 GLSL 的更多信息,请参阅 Unity 中的 GLSL

编写着色器的不同方法

有不同的着色器编写方法:

  • 最常见的方法是使用 HLSL 编写顶点和片元着色器。有关更多信息,请参阅编写顶点和片元着色器
  • 在内置渲染管线中,还可以编写表面着色器。这是编写与光照交互的着色器的一种简化方法。有关更多信息,请参阅表面着色器
  • 出于向后兼容的原因,Unity 还支持“固定函数风格”ShaderLab 命令。因此,您可以使用 ShaderLab 编写着色器,而无需使用 HLSL。这不再是建议方法,不过相关文档在 ShaderLab 旧版功能页面上。

为不同的图形 API 编写着色器

在某些情况下,必须根据所针对的图形 API 以不同方式编写着色器代码。有关这方面的信息,请参阅为不同的图形 API 编写着色器

编写着色器
ShaderLab