代码编写着色器的简介
您在 Unity 中编写自定义着色器在 GPU 上运行的程序。 更多信息
参见 术语表的方式取决于您使用的渲染管线一系列操作,用于获取场景内容并在屏幕上显示它们。Unity 允许您选择预建的渲染管线,或编写自己的渲染管线。 更多信息
参见 术语表
语言
在为 Unity 编写着色器时,您将使用以下语言
- 一种名为 HLSL 的编程语言。使用它来编写着色器程序本身。有关 HLSL 的更多信息,请参阅Unity 中的 HLSL。
- 一种名为 ShaderLab 的 Unity 专用语言。使用它来定义着色器对象Shader 类的实例,着色器对象是着色器程序和 GPU 指令以及告知 Unity 如何使用它们的信息的容器。将它们与材质一起使用以确定场景的外观。 更多信息
参见 术语表,它充当着色器程序的容器。有关 ShaderLab 的更多信息,请参阅ShaderLabUnity 用于定义着色器对象结构的语言。 更多信息
参见 术语表。
您无需为不同的平台使用不同的语言;Unity 会将您的 HLSL 和 ShaderLab 代码编译成不同的语言以供不同的图形 API 使用。有关更多信息,请参阅着色器编译。
注意:您也可以直接使用 GLSL 和 Metal 编写着色器程序。这并不推荐或不需要作为正常工作流程的一部分。有关使用 GLSL 的更多信息,请参阅Unity 中的 GLSL。
ShaderLab
ShaderLab 是一种声明式语言,您可以在着色器源文件中使用它。它使用嵌套大括号语法来描述着色器对象。
您可以在 ShaderLab 中定义许多内容,但最常见的是
编写着色器的不同方法
编写着色器的方法有很多种
- 最常见的方法是用 HLSL 编写顶点和片段着色器。有关更多信息,请参阅编写顶点和片段着色器。
- 在内置渲染管线中,您还可以编写表面着色器。它们是编写与灯光交互的着色器的一种简化方法。有关更多信息,请参阅表面着色器编写内置渲染管线着色器的一种简化方法。 更多信息
参见 术语表。
- 出于向后兼容性的原因,Unity 还支持“固定功能样式”ShaderLab 命令。这些允许您在 ShaderLab 中编写着色器,而无需使用 HLSL。这不再推荐,但已在页面ShaderLab 旧版功能中进行了说明。
为不同的图形 API 编写着色器
在某些情况下,您必须根据目标图形 API 不同地编写着色器代码。有关此信息,请参阅为不同的图形 API 编写着色器。