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_VERTEXSHADER_STAGE_FRAGMENT,SHADER_STAGE_DOMAINSHADER_STAGE_HULL

SHADER_STAGE_GEOMETRY,SHADER_STAGE_COMPUTE 在编译每个着色器阶段时定义。通常,它们在共享像素着色和计算着色之间的着色代码时很有用,以处理某些事情必须稍微不同的情况。

原文地址:https://www.cnblogs.com/leiGameDesigner/p/8458604.html