目录:Unity Shader - 知识点目录(先占位,后续持续更新)
原文:Shading Language used in Unity
版本:2019.1
Shading Language used in Unity
在Unity中使用的着色语言
在Unity中,shader programs 是用一种叫HLSL变体语言来编写的(也叫 Cg ,但大多数实际应用中,它们都是一样的)。
Shader Compilers
着色器编译器
在Unity为shader program程序编译,内部会使用不同的shader编译器。
- Windows & Microsoft 平台(DX11,DX12和Xbox One)都使用Microsoft的HLSL编译器(当前是 d3dcompiler_47编译器)。
- OpenGL Core,OpenGL ES3,OpenGL ES 2.0 和 Metal 使用Microsoft的HLSL来编写,再使用 HLSLcc 将字节码转换到 GLSL 或是Metal。
- OpenGL ES 2.0 可以将源码层通过 hlsl2glslfork 和 glsl optimizer 来将HLSL转换GLSL。这通过添加 #pragma prefer_hlsl2glsl gles 来启用
- 其他主机游戏平台分别使用它们的编译器(例如:PS4的PSSL)
- Surface Shaders 使用 Cg 2.2 和 MojoShader 进行代码生成分析。
如果你真的需要确定正在使用哪个编译器(为了使用仅支持的HLSL语法的编译器,或者为了解决编译器bug),可以使用prodefined shader moacros 预定义的着色器宏。例如,当使用HLSL编译器来编译,则定义宏 UNITY_COMPILER_HLSL(D3D或GLCore/GLES3/GLES平台都可以);使用hlsl2glsl转换编译,则定义宏 UNITY_COMPILER_HLSL2GLSL。
See Also
另请参阅