在 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 语言有两种语法:旧版的 DirectX 9 样式语法以及更现代的 DirectX 10+ 样式语法。不同之处主要在于纹理采样函数的工作方式:
Unity 提供了包含预处理器宏的着色器库来帮助您管理这些差异。有关更多信息,请参阅内置着色器宏。