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.
El objetivo de compilación se indica por la directiva #pragma target
name, por ejemplo:
#pragma target 3.5
De forma predeterminada, Unity compila los shaders en casi el objetivo de soporte más bajo (“2.5”); Entre los modelos shader DirectX 2.0 y 3.0. Algunas otras directivas de compilación hacen que el shader sea automáticamente compilado en un objetivo mayor:
#pragma geometry
) configure el objetivo de compilación en4.0
.#pragma hull
o #pragma domain
) configura el objetivo de compilación en 4.6
.Aquí está la lista de modelos de shaders compatibles, con un conjunto de capacidades cada vez mayor (y en algunos casos mayores requisitos de plataforma / GPU):
Tenga en cuenta que todas las plataformas similares a OpenGL (incluyendo móviles) son tratadas como “capaz de modelo shader 3.0”. Las plataformas WP8/WinRT (nivel 9.x de la característica DX11) se tratan como sólo capaces del modelo shader 2.5.