unity 着色器内置宏
目标平台
Macro: | Target platform: |
---|---|
SHADER_API_D3D11 |
Direct3D 11 |
SHADER_API_GLCORE |
Desktop OpenGL “core” (GL 3/4) |
SHADER_API_GLES |
OpenGL ES 2.0 |
SHADER_API_GLES3 |
OpenGL ES 3.0/3.1 |
SHADER_API_METAL |
iOS/Mac Metal |
SHADER_API_VULKAN |
Vulkan |
SHADER_API_D3D11_9X |
Direct3D 11 “feature level 9.x” target for Universal Windows Platform |
SHADER_API_PS4 |
PlayStation 4. SHADER_API_PSSL is also defined. |
SHADER_API_XBOXONE |
Xbox One |
SHADER_API_PSP2 |
PlayStation Vita |
SHADER_API_WIIU |
Nintendo Wii U |
宏 SHADER_API_MOBILE 定义为所有的移动平台。
此外, SHADER_TARGET_GLSL 定义为所有使用GLSL语言的平台。(对使用OpenGL/GLES 始终为真)
着色器目标模型
SHADER_TARGET
定义了一个数值来匹配着色器目标编译模型(也就是说,与指令 #pragma target 匹配)。比如说,当编译shader 为 着色器模型3.0时,SHADER_TARGET =30。可以用来在shader中做一些额外操作。
#if SHADER_TARGET < 30 // less than Shader model 3.0: // very limited Shader capabilities, do some approximation #else // decent capabilities, do a better thing #endif
Unity版本
UNITY_VERSION包含了unity版本的数值。比如,Unity 5.0.1的 UNITY_VERSION = 501.
编译着色器阶段
预处理宏 SHADER_STAGE_VERTEX
, SHADER_STAGE_FRAGMENT
,SHADER_STAGE_DOMAIN
, SHADER_STAGE_HULL
,
SHADER_STAGE_GEOMETRY
,SHADER_STAGE_COMPUTE 在编译每个着色器阶段时定义。通常,它们在共享像素着色和计算着色之间的着色代码时很有用,以处理某些事情必须稍微不同的情况。