Funciones Shader integradas de ayuda
Creando varias variants de programas shader

Variables shader integradas

Unity proporciona un grupo de variables globales incorporadas para sus shaders: cosas como matrices de transformación de objetos actuales, parámetros de luz, tiempo actual, etc. Las usa en programas shader como cualquier otra variable, la única diferencia es que no tiene que declararlas - todas ellas se declaran en el archivo de inclusión UnityShaderVariables.cginc que se incluye automáticamente.

Transformaciones

Todas estas matrices son de tipo `float4x4´.

Nombre Valor
UNITY_MATRIX_MVP Current model * view * projection matrix.
UNITY_MATRIX_MV Current model * view matrix.
UNITY_MATRIX_V Actual vista de matriz.
UNITY_MATRIX_P Matriz de Proyección actual.
UNITY_MATRIX_VP Current view * projection matrix.
UNITY_MATRIX_T_MV Transpose of model * view matrix.
UNITY_MATRIX_IT_MV Inverse transpose of model * view matrix.
_Object2World Modelo actual de Matriz
_World2Object Inverso al mundo actual de la matriz.

Camara y pantalla

Estas variables corresponden a la Cámara que se está rendering. Por ejemplo, durante la renderización de shadowmap, todavía se referirán a los valores de los componentes de la cámara y no a la “cámara virtual” que se utiliza para la proyección del mapa de sombra.

Nombre Tipo Valor
_WorldSpaceCameraPos float3 Posición del espacio del mundo de la cámara.
_ProjectionParams float4 x es 1.0 (o –1.0 si actualmente se renderiza con unaflipped projection matrix), y es el plano más cerca de la cámara, z es el plano más lejos de la cámara y w es 1/FarPlane(plano lejano).
_ScreenParams float4 x is the width of the camera’s target texture in pixels, y is the height of the camera’s target texture in pixels, z is 1.0 + 1.0/width and w is 1.0 + 1.0/height.
_ZBufferParams float4 Se utiliza para linealizar los valores del buffer Z. X es (1-lejos/cerca), y es (lejos/cerca), z es (x/lejos) y w es (y/lejos).
unity_OrthoParams float4 X es el ancho de la cámara ortográfica, y es la altura de la cámara ortográfica, z no se utiliza y w es de 1,0 cuando la cámara es ortográfica, 0.0 cuando es de perspectiva.
unity_CameraProjection float4x4 Matriz de proyección de la Cámara.
unity_CameraInvProjection float4x4 Inverso de la matriz de proyección de la Camara.
unity_CameraWorldClipPlanes[6] float4 Ecuaciones del espacio del mundo del plano del frustum de la cámara, en este orden: izquierdo, derecho, inferior, superior, cercano, lejano.

Tiempo

Nombre Tipo Valor
_Time float4 Time since level load (t/20, t, t*2, t*3), use to animate things inside the shaders.
_SinTime float4 Seno del tiempo: (t/8, t/4, t/2, t).
_CosTime float4 Coseno del tiempo: (t/8, t/4, t/2, t).
unity_DeltaTime float4 Tiempo delta: (dt, 1/dt, smoothDt, 1/smoothDt).

Iluminación

Los parámetros de la luz se pasan a los shaders en maneras diferentes dependiendo en qué Rendering Path se utilizan, y qué LightMode Pass Tag se utiliza en el shader.

Forward rendering (tipos pass ForwardBase y ForwardAdd):

Nombre Tipo Valor
_LightColor0 (declared in Lighting.cginc) fixed4 Color de la Luz.
_WorldSpaceLightPos0 float4 Directional lights: (dirección en el espacio del mundo, 0). Otras luces: (posición en el espacio del mundo, 1).
_LightMatrix0 (declared in AutoLight.cginc) float4x4 Matriz Mundo-a-luz. Utilizada para muestrear texturas cookie & de atenuación.
unity_4LightPosX0, unity_4LightPosY0, unity_4LightPosZ0 float4 (ForwardBase pass solamente) posiciones del espacio del mundo de las primeras cuatro point lights no importantes.
unity_4LightAtten0 float4 (ForwardBase pass solamente) factores de atenuación de las primeras cuatro point lights no importantes.
unity_LightColor half4[4] (ForwardBase pass solamente) colores de las primeras cuatro point lights no importantes.

Deferred shading e iluminación diferida, utilizada en el lighting pass shader (todo declarado en UnityDeferredLibrary.cginc):

Nombre Tipo Valor
_LightColor float4 Color de la Luz.
_LightMatrix0 float4x4 Matriz Mundo-a-luz. Utilizada para muestrear texturas cookie & de atenuación.

Se configuran coeficientes de armónicos esféricos (utilizados por los ambient y light probes) para tipos de pases ForwardBase,PrePassFinal y Deferred. Contienen SH de 3er orden para ser evaluados por el espacio mundial normal (mire ShadeSH9 de UnityCG.cginc). Todas las variables son de tipo half4, unity_SHAr y nombres similares.

Vertex-lit rendering (tipo de pass Vertex):

Se configuran hasta 8 luces para un tipo de pass Vertex; Siempre ordenado a partir del más brillante. Así que si quiere para renderizar los objetos que se vean afectados por dos luces a la vez, sólo puede tomar dos primeras entradas en los arreglos. Si hay menos luz afectando el objeto que 8, el resto tendrán su color configurado a negro.

Nombre Tipo Valor
unity_LightColor half4[8] Colores de luz.
unity_LightPosition float4[8] Posiciones de iluminación del espacio de vista. (-dirección, 0) para luces direccionales; (Posición, 1) para las point/spot lights.
unity_LightAtten half4[8] Factores de atenuación de la luz. x es cos(spotAngle/2) o –1 para las luces que no son spot lights; y es 1/cos(spotAngle/4) o 1 para las luces que no son spot lights; z es atenuación cuadrática; w es el rango de luz cuadrada.
unity_SpotDirection float4[8] Posiciones de vista-espacio de spot lights; (0,0,1,0) para las luces que no son spot lights.

Fog (niebla) y Ambient (ambiente)

Nombre Tipo Valor
unity_AmbientSky fixed4 Color de iluminación ambiente del Sky (cielo) en el caso de iluminación ambiental de gradiente.
unity_AmbientEquator fixed4 Color de la iluminación ambiental del equador en caso de la iluminación ambiental del gradiente.
unity_AmbientGround fixed4 Color de la iluminación ambiental de la tierra en caso de la iluminación ambiental del gradiente.
UNITY_LIGHTMODEL_AMBIENT fixed4 Color de iluminación ambiental (color del cielo en caso de degradado ambiental). Variable Legacy.
unity_FogColor fixed4 Color del fog (niebla).
unity_FogParams float4 Parámetros para el cálculo de niebla: (densidad/sqrt(ln (2)), densidad/ln(2), –1/(final-inicio), final/(final-inicio)). x es útil para el modo de fog (niebla) Exp2, y para el modo Exp, z y w para el modo Lineal.

Varios

Nombre Tipo Valor
unity_LODFade float4 El Level-of-detail se desvanece cuando se utiliza LODGroup. x se desvanece (0..1), y se desvanece cuantificado a 16 niveles, z y w no se utilizan.
Funciones Shader integradas de ayuda
Creando varias variants de programas shader