Version: 6000.3
语言: 中文
在代码中编写着色器
着色器对象基础知识

在代码中编写着色器简介

如何编写自定义着色器在 GPU 上运行的程序。更多信息
请参阅术语表
在 Unity 中,取决于渲染管道获取场景内容并将其显示在屏幕上的一系列作。Unity 允许您从预构建的渲染管道中进行选择,或编写自己的渲染管道。更多信息
请参阅术语表
您使用:

语言

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

  • 一种称为 HLSL 的编程语言。使用它来编写着色器程序本身。有关 HLSL 的详细信息,请参阅 Unity 中的 HLSL
  • 一种名为 ShaderLab 的 Unity 专用语言。使用它来定义Shader 对象Shader 类的实例,Shader 对象是着色器程序和 GPU 指令的容器,以及告诉 Unity 如何使用它们的信息。将它们与材质一起使用,以确定场景的外观。更多信息
    请参阅术语表
    ,它充当着色器程序的容器。有关 ShaderLab 的更多信息,请参阅ShaderLabUnity 用于定义 Shader 对象结构的语言。更多信息
    请参阅术语表
    .

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

注意:如果需要,您也可以直接在 GLSL 和 Metal 中编写着色器程序。不建议或不需要将其作为正常工作流的一部分。有关使用 GLSL 的更多信息,请参阅 Unity 中的 GLSL

着色器实验室

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

您可以在 ShaderLab 中定义许多内容,但最常见的是:

编写着色器的不同方式

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

  • 最常见的方法是在 HLSL 中编写顶点和片段着色器。有关详细信息,请参阅编写顶点和片段着色器
  • 在内置渲染管线中,你还可以编写表面着色器。它们是编写与光照交互的着色器的简化方法。有关更多信息,请参阅表面着色器:为内置渲染管线编写着色器的简化方法。更多信息
    请参阅术语表
    .
  • 出于向后兼容性的原因,Unity 还支持“固定函数样式”ShaderLab 命令。这些命令允许您在 ShaderLab 中编写着色器,而无需使用 HLSL。不再推荐这样做,但已记录在 ShaderLab 旧版功能页面上。

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

在某些情况下,必须根据目标图形 API 以不同的方式编写着色器代码。有关此内容的信息,请参阅为不同的图形 API 编写着色器

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