Version: Unity 6.0 (6000.0)
语言 : 中文
在代码中编写着色器
Shader 对象基础

以代码编写着色器的简介

您在 Unity 中编写自定义着色器的方式取决于您所使用的渲染管线:

语言

为 Unity 编写着色器时使用的语言如下:

  • 一种称为 HLSL 的编程语言。使用 HLSL 可编写着色器程序本身。如需详细了解 HLSL,请参阅Unity 中的 HLSL
  • 一种称为__ ShaderLab__Unity 用于定义着色器对象结构的语言。更多信息
    See in Glossary
    的 Unity 专用语言。使用 ShaderLab 可定义着色器对象,着色器对象能充当着色器程序的容器。如需详细了解 ShaderLab,请参阅 ShaderLab

您不需要为不同的平台使用不同的语言;Unity 会针对不同的图形 API 将 HLSL 和 ShaderLab 代码编译为不同语言。详情请参阅着色器编译

注意:如果需要,您还可以直接用 GLSL 和 Metal 编写着色器程序。在常规工作流程中,不建议或不需要这样做。如需详细了解 GLSL 的用法,请参阅Unity 中的 GLSL

ShaderLab

ShaderLab 是一种在着色器源文件中使用的声明性语言。它使用嵌套大括号语法来描述着色器对象。

用 ShaderLab 可以定义很多内容,但最常见的是:

编写着色器的不同方法

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

  • 最常见的方法是用 HLSL 编写顶点和片元着色器。详情请参阅编写顶点和片元着色器
  • 在内置渲染管线中,您还可以编写表面着色器。这是编写与光照交互的着色器的一种简化方法。详情请参阅表面着色器
  • 出于向下兼容的原因,Unity 还支持“固定函数风格”的 ShaderLab 命令。这能让您使用 ShaderLab 编写着色器,而无需使用 HLSL。这已不再被推荐使用,但 ShaderLab 旧版功能页面还是记录了这种方法。

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

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

在代码中编写着色器
Shader 对象基础