在 Unity 中,可使用 HLSL 编程语言来编写着色器程序。
本手册的这一部分介绍有关以 Unity 特定方式使用 HLSL 的信息。有关编写 HLSL 的常规信息,请参阅 Microsoft 的 HLSL 文档。
注意:Unity 最初使用 Cg 语言,因此会使用 Unity 某些关键字的名称 (CGPROGRAM
) 和文件扩展名 (.cginc
)。Unity 不再使用 Cg,但这些名称仍在使用。
将 HLSL 代码放在 ShaderLab 代码中的代码块中。着色器程序通常如下所示:
Pass {
// ... 常规通道状态设置 ...
HLSLPROGRAM
// 此代码片段的编译指令,例如:
#pragma vertex vert
#pragma fragment frag
// 着色器程序本身
ENDHLSL
// ... 通道的剩余部分 ...
}
有关着色器代码块的更多信息,请参阅 ShaderLab:添加着色器程序。
HLSL has two syntaxes: a legacy DirectX 9-style syntax, and a more modern DirectX 10+ style syntax. The difference is mostly in how texture sampling functions work:
Unity provides shader libraries that contain preprocessor macros to help you manage these differences. For more information, see Built-in shader macros.