Version: 5.4
Creando varias variants de programas shader
Lenguaje Shading utilizado en Unity

Programas Shader GLSL

Además de utilizar programas shader Cg/HSL, los shaders de OpenGL Shading Language (GLSL) se pueden escribir directamente.

Sin embargo, el uso de GLSL crudo solo se recomienda para pruebas, o cuando usted sabe que solo apuntará a Mac OS X, OpenGL ES en dispositivos móviles o Linux. En todos los casos normales, Unity hará una compilación cruzada de Cg/HLSL a un GLSL optimizado cuando se necesite.

GLSL snippets

Los snippets del programa GLSL están escritos entre las palabras claves GLSLPROGRAM y ENDGLSL.

En GLSL, todos los puntos de entrada de la función shader tienen que ser llamados main(). Cuando Unity carga el shader GLSL, carga la fuente una vez para el Vertex Program, con el define del preprocesador VERTEX, y una vez más para el fragment programa, con el define del preprocesador FRAGMENT. Así que la forma de separar las partes del Vertex Program y Fragment program en el fragmento de GLSL es rodearlas con #ifdef VERTEX .. #endif y #ifdef FRAGMENT .. #endif.Cada fragmento GLSL debe contener tanto un vertex program como un fragment program.

Los archivos include estándar coinciden con los proporcionados para los shaders Cg/HLSL; Sólo tienen una extensión .glslinc:

UnityCG.glslinc

Las entradas de Vertex Shader provienen de variables GLSL predefinidas (gl_Vertex, gl_MultiTexCoord0, …) o son atributos definidos por el usuario. Por lo general, sólo el vector tangente necesita un atributo definido por el usuario:

attribute vec4 Tangent;

Los datos del vertex program al fragment program se pasan a través de variables Varying, por ejemplo:

varying vec3 lightDir; // vertex shader computes this, fragment shader uses this
Creando varias variants de programas shader
Lenguaje Shading utilizado en Unity