目標平台
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 在編譯每個着色器階段時定義。通常,它們在共享像素着色和計算着色之間的着色代碼時很有用,以處理某些事情必須稍微不同的情況。