When writing either Surface Shaders or regular Shader Programs, the HLSL source can be compiled into different “shader models”. Higher shader compilation targets allow using more modern GPU functionality, but might make the shader not work on older GPUs or platforms.
Compilation target is indicated by #pragma target
name directive, for example:
# pragma target 3.5
默认情况下,Unity 将着色器编译为几乎支持的最低目标(“2.5”);处于 DirectX 着色器模型 2.0 和 3.0 之间。其他一些编译指令使着色器自动 编译成更高的目标:
#pragma geometry
) set compilation target to 4.0
.#pragma hull
or #pragma domain
) sets compilation target to 4.6
.以下是支持的着色器模型列表,其中包含大致增加的功能集(在某些情况下对于平台/GPU 的要求更高):
适用于 Unity 支持的所有平台。DX9 着色器模型 2.0。 有限数量的算术和纹理指令;8 个插值器;没有顶点纹理采样;片元着色器中没有衍生指令;没有显式的 LOD 纹理采样。
es3.0
目标所具有的一切功能。请注意,所有 OpenGL 类平台(包括移动平台)都被视为“支持着色器模型 3.0”。WP8/WinRT 平台(DX11 功能级别 9.x)被视为仅支持着色器模型 2.5。