Unity内置着色器变量

时间:2023-02-15   阅读次数:

Unity 的内置文件包含着色器的全局变量:当前对象的变换矩阵、光源参数、当前时间等等。就像任何其他变量一样,可在着色器程序中使用这些变量,但如果已经包含相关的 include 文件,则不必声明这些变量。

有关 include 文件更多信息,请参阅内置 include 文件。

变换

所有这些矩阵都是 float4x4 类型,并且是列主序的。

名称
UNITY_MATRIX_MVP当前模型 * 视图 * 投影矩阵
UNITY_MATRIX_MV当前模型 * 视图矩阵。
UNITY_MATRIX_V当前视图矩阵。
UNITY_MATRIX_P当前投影矩阵。
UNITY_MATRIX_VP当前视图 * 投影矩阵。
UNITY_MATRIX_T_MV模型转置 * 视图矩阵。
UNITY_MATRIX_IT_MV模型逆转置 * 视图矩阵。
unity_ObjectToWorld当前模型矩阵。
unity_WorldToObject当前世界矩阵的逆矩阵。

摄像机和屏幕

这些变量将对应于正在渲染的摄像机。例如,在阴影贴图渲染中,它们仍将引用摄像机组件值,而不是用于阴影贴图投影的“虚拟摄像机”。

名称类型
_WorldSpaceCameraPosfloat3摄像机的世界空间位置。
_ProjectionParamsfloat4x 是 1.0(如果当前使用翻转投影矩阵进行渲染,则为 –1.0),y 是摄像机的近平面,z 是摄像机的远平面,w 是远平面的倒数。
_ScreenParamsfloat4x 是摄像机目标纹理的宽度(以像素为单位),y 是摄像机目标纹理的高度(以像素为单位),z 是 1.0 + 1.0/宽度,w 为 1.0 + 1.0/高度。
_ZBufferParams
用于线性化 Z 缓冲区值。x 是 (1-远/近),y 是 (远/近),z 是 (x/远),w 是 (y/远)。
unity_OrthoParamsfloat4x 是正交摄像机的宽度,y 是正交摄像机的高度,z 未使用,w 在摄像机为正交模式时是 1.0,而在摄像机为透视模式时是 0.0。
unity_CameraProjectionfloat4x4摄像机的投影矩阵。
unity_CameraInvProjectionfloat4x4摄像机投影矩阵的逆矩阵。
unity_CameraWorldClipPlanes[6]float4摄像机视锥体平面世界空间方程,按以下顺序:左、右、底、顶、近、远。




Unity官方文档链接:https://docs.unity3d.com/cn/2019.4/Manual/SL-UnityShaderVariables.html

其它文章