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.
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. |
unity_ObjectToWorld | Modelo actual de Matriz |
unity_WorldToObject | Inverso al mundo actual de la matriz. |
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. |
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). |
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. |
unity_WorldToShadow | float4x4[4] | World-to-shadow matrices. One matrix for spot lights, up to four for directional light cascades. |
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. |
unity_WorldToShadow | float4x4[4] | World-to-shadow matrices. One matrix for spot lights, up to four for directional light cascades. |
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. |
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. |
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. |