ShaderLab 内置值        

Unity 为着色器提供 少量内置值:当前对象变换矩阵、时间等类似值。

使用 ShaderLab 中的内置值就像使用其他任何属性一样,唯一的区别在于您不必在某处进行声明 - 它们都是“内置的”。

在可编程着色器中使用它们需要包含UnityCG.cginc文档。

变换

float4x4 UNITY_MATRIX_MVP
当前模型*视图*投影矩阵 (model*view*projection matrix)
float4x4 UNITY_MATRIX_MV
当前模型*视图矩阵 (model*view matrix)
float4x4 UNITY_MATRIX_V
当前视图矩阵 (view matrix)。
float4x4 UNITY_MATRIX_P
当前投影矩阵 (projection matrix)
float4x4 UNITY_MATRIX_VP
当前视图*投影矩阵 (view*projection matrix)
float4x4 UNITY_MATRIX_T_MV
模型*视图矩阵 (model*view matrix) 的转置
float4x4 UNITY_MATRIX_IT_MV
模型*视图矩阵 (model*view matrix) 的逆转置
float4x4 UNITY_MATRIX_TEXTURE0UNITY_MATRIX_TEXTURE3
纹理变换矩阵
float4x4 _Object2World
当前模型矩阵
float4x4 _World2Object
当前世界坐标矩阵的逆转置
float3 _WorldSpaceCameraPos
相机的世界坐标空间位置
float4 unity_Scale
xyz 组件未使用;.w 包含等比缩放对象的缩放。

光照

在普通的 ShaderLab 中,通过结尾追加零访问以下属性:例如光源的模型*光颜色是 _ModelLightColor0。在 Cg 着色器中,它们显示为单元素阵列,所以 Cg 中相同的是 _ModelLightColor[0]

名称类型
_ModelLightColorfloat4材质的主要*光色
_SpecularLightColorfloat4材质的高光*光色
_ObjectSpaceLightPosfloat4光源在对象空间中的位置。w 组件针对方向灯是 0,针对其他灯是 1
_Light2Worldfloat4x4光到世界坐标 (World) 空间矩阵
_World2Lightfloat4x4世界坐标到光 (Light) 空间矩阵
_Object2Lightfloat4x4对象到光 (Light) 空间矩阵

种类

  • float4 _Time : 时间 (t/20, t, t*2, t*3),用于对着色器内的对象进行动画处理

  • float4 _SinTime : 时间正弦:(t/8, t/4, t/2, t)

  • float4 _CosTime : 时间余弦:(t/8, t/4, t/2, t)

  • float4 unity_DeltaTime : 差量时间:(dt, 1/dt, smoothDt, 1/smoothDt)

  • float4 _ProjectionParams :
     x 是 1.0 或 -1.0,如果当前用翻转投影矩阵渲染,则为负数
     y 是相机的近平面
     z 是相机的远平面
     w 是 1/FarPlane。

  • float4 _ScreenParams :
     x 是以像素为单位的当前渲染目标宽度
     y 是以像素为单位的当前渲染目标高度
     z 是 1.0 + 1.0/宽度
     w 是 1.0 + 1.0/高度

,