Unity Shader内置变量

变换矩阵

变量名 描述
UNITY_MATRIX_MVP 当前的模型-观察-投影矩阵,用于将顶点/方向矢量从模型空间变换到裁剪空间
UNITY_MATRIX_MV  当前的模型-观察矩阵,用于将顶点/方向矢量从模型空间变换到观察空间
UNITY_MATRIX_V  当前的观察矩阵,用于将顶点/方向矢量从世界空间变换到观察空间
UNITY_MATRIX_P  当前的投影矩阵,用于将顶点/方向矢量从观察空间变换到裁剪空间
UNITY_MATRIX_VP 当前的观察-投影矩阵,用于将顶点/方向矢量从世界空间变换到裁剪空间
UNITY_MATRIX_T_MV UNITY_MATRIX_T_MV的转置矩阵
UNITY_MATRIX_IT_MV UNITY_MATRIX_T_MV的逆转置矩阵,用于将法线从模型空间变换到观察空间,也可用于得到UNITY_MATRIX_T_MV的逆矩阵
_Object2World 当前的魔心矩阵,用于将定点/方向矢量从模型空间变换到世界空间
_World2Object _Object2World的逆矩阵,用于将定点/方向矢量从世界空间变换到模型空间

摄像机和屏幕参数

变量名 类型 描述
_WorldSpaceCameraPos float3 该摄像机在世界空间中的位置
_ProjectionParams float4  x=1.0(或-1.0,如果正在使用一个反转的投影矩阵进行渲染),y=Near,z=Far,w=1.0+1.0/Far,其中Near和Far分笔试近裁剪平面和远裁剪平面和摄像机的距离
_ScreenParams float4  x=width,y=height,z=1.0+1.0/width,w=1.0+1.0/height,其中widh和height分别是该摄像机的渲染目标的像素宽度和高度
_ZBufferParams float4  x=1-Far/Near,y=Far/Near,z=x/Far,w=y/Far,该变量用于线性化Z缓存中的深度值
unity_OrthoParams float4  x=width,y=height,z没有定义,w=1.0(该摄像机是正交摄像机)或w=0.0(该摄像机是透视摄像机),其中widh和height是正交投影摄像机的宽度和高度
unity_CameraProjection float4x4 该摄像机的投影矩阵
unity_CameraIveProjection float4x4 该摄像机的投影矩阵的逆矩阵
unity_CameraWorldClipPlanes[6] float4 该摄像机的6个裁剪平面在世界空间下的灯饰,按如下顺序:左、右、下、上、近、远裁剪平面

时间

变量名 类型 描述
_Time float4 从场景加载开始计算的时间(t/20,t,t*2,t*3),用于shader内的动画
_SinTime float4 时间的Sine值(t/8,t/4,t/2,t)
_CosTime float4 时间的Cosine值(t/8,t/4,t/2,t)
unity_DeltaTime float4 帧间隔时间(dt,1/dt,smoothDt,1/somoothDt)。

forward渲染的光照变量

变量名 类型 描述

_LightColor0(declared in Lighting.cginc)

fixed4

光线颜色

_WorldSpaceLightPos0

float4

世界空间中光源的位置,w=0 代表平行光的方向,w=1代表其他光源的位置

_LightMatrix0(declared in AutoLight.cginc)

float4x4

把顶点从世界空间变换到光源空间

unity_4LightPosX0, unity_4LightPosY0, unity_4LightPosZ0

float4

 (仅ForwardBase通道)前四个不重要的点光源的世界空间坐标

unity_4LightAtten0

float4

 (仅ForwardBase通道)前四个不重要的点光源的衰减系数

unity_LightColor

half4[4]

 (仅ForwardBase通过)前四个不重要的点光源的颜色数组,计算顶点光源用的

 

延迟光照相关变量

变量名 类型 描述

_LightColor

float4

光线颜色

_LightMatrix0

float4x4

把顶点从世界空间变换到光源空间

顶点光照相关变量

变量名 类型 描述

unity_LightColor

half4[8]

光线颜色

unity_LightPosition

float4[8]

 视图空间光源的位置。方向光源的坐标是(-方向,0);(位置,1)用于点/点指示灯,点光源,聚光灯的坐标是(位置,1)

unity_LightAtten

half4[8]

光源衰减系数。x=cos(spotAngle/2)或非聚光灯为-1;y=1/cos(spotangle/4)或非聚光灯为-1;z是衰减的二次方;w是正方形光源的范围

unity_SpotDirection

float4[8]

如果光源是聚光灯的话,值为视图空间的聚光灯的位置,如果是其他类型的光源,值为(0,0,1,0)。

猜你喜欢

转载自blog.csdn.net/ttod/article/details/122323126