Unity 的内置包含文件包含用于您的着色器在 GPU 上运行的程序。 更多信息
参见 术语表的全局变量:例如当前对象的变换矩阵、光照参数、当前时间等。您可以在 着色器程序 中像使用任何其他变量一样使用它们,但如果您包含相关的包含文件,则无需声明它们。
有关包含文件的更多信息,请参见 内置包含文件。
所有这些矩阵都是 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 | 当前世界矩阵的逆矩阵。 |
这些变量将对应于正在渲染的摄像机一个组件,它创建场景中特定视点的图像。输出要么绘制到屏幕上,要么作为纹理捕获。 更多信息
参见 术语表。例如,在阴影贴图渲染期间,它们仍将引用 Camera 组件的值,而不是用于阴影贴图投影的“虚拟摄像机”。
名称 | 类型 | 值 | |
---|---|---|---|
_WorldSpaceCameraPos | float3 | 摄像机的世界空间位置。 | |
_ProjectionParams | float4 |
x 为 1.0(如果当前使用 翻转投影矩阵 渲染,则为 –1.0),y 为摄像机的近裁剪平面,z 为摄像机的远裁剪平面,w 为 1/FarPlane。 |
|
_ScreenParams | float4 |
x 是摄像机目标纹理的宽度(以像素计算机图像中的最小单位。像素大小取决于屏幕分辨率。像素光照在每个屏幕像素处计算。 更多信息参见 术语表为单位), y 是摄像机目标纹理的高度(以像素为单位),z 为 1.0 + 1.0/width,w 为 1.0 + 1.0/height。 |
|
_ZBufferParams | float4 | 用于线性化 Z 缓冲区值。 | |
x |
1-far/near 或 -1+far/near (如果 UNITY_REVERSED_Z 设置为 1)。有关 UNITY_REVERSED_Z 的更多信息,请参阅 根据平台功能进行分支 |
||
y |
1-far/near 或 1 (如果 UNITY_REVERSED_Z 设置为 1)。有关 UNITY_REVERSED_Z 的更多信息,请参阅 根据平台功能进行分支 |
||
z |
x/far |
||
w |
y/far |
||
unity_OrthoParams | float4 |
x 是正交摄像机的宽度,y 是正交摄像机的高度,z 未使用,w 在摄像机为正交时为 1.0,在透视时为 0.0。 |
|
unity_CameraProjection | float4x4 | 摄像机的投影矩阵。 | |
unity_CameraInvProjection | float4x4 | 摄像机投影矩阵的逆矩阵。 | |
unity_CameraWorldClipPlanes[6] | float4 | 摄像机视锥体平面世界空间方程,顺序如下:左、右、下、上、近、远。 |
时间以秒为单位测量,并按项目 时间设置 中的时间乘数进行缩放。没有内置变量提供对未缩放时间的访问。
名称 | 类型 | 值 |
_Time | float4 | 自关卡加载以来的时间(t/20、t、t*2、t*3),用于在着色器内动画化物体。 |
_SinTime | float4 | 时间的正弦值:(t/8、t/4、t/2、t)。 |
_CosTime | float4 | 时间的余弦值:(t/8、t/4、t/2、t)。 |
unity_DeltaTime | float4 | 时间增量:(dt、1/dt、smoothDt、1/smoothDt)。 |
光照参数以不同的方式传递到着色器,具体取决于使用了哪种 渲染路径渲染管线用于渲染图形的技术。选择不同的渲染路径会影响光照和着色的计算方式。某些渲染路径比其他路径更适合不同的平台和硬件。 更多信息
参见 术语表,以及在着色器中使用了哪个 LightMode Pass Tag。
前向渲染一种渲染路径,它根据影响对象的光源以一到多次传递渲染每个对象。光源本身也会因前向渲染而受到不同处理,具体取决于其设置和强度。 更多信息
参见 术语表(ForwardBase
和 ForwardAdd
传递类型)
名称 | 类型 | 值 |
_LightColor0 (声明于 UnityLightingCommon.cginc) | fixed4 | 光照颜色。 |
_WorldSpaceLightPos0 | float4 | 方向光:(世界空间方向,0)。其他光:(世界空间位置,1)。 |
unity_WorldToLight (声明于 AutoLight.cginc) | float4x4 | 世界到光源矩阵。用于采样 Cookie 和衰减纹理。 |
unity_4LightPosX0, unity_4LightPosY0, unity_4LightPosZ0 | float4 | (仅限 ForwardBase 传递) 前四个不重要的点光源的世界空间位置。 |
unity_4LightAtten0 | float4 | (仅限 ForwardBase 传递) 前四个不重要的点光源的衰减因子。 |
unity_LightColor | half4[4] | (仅限 ForwardBase 传递) 前四个不重要的点光源的颜色。 |
unity_WorldToShadow | float4x4[4] | 世界到阴影矩阵。聚光灯一个矩阵,方向光级联最多四个。 |
延迟着色,用于光照传递着色器(全部声明于 UnityDeferredLibrary.cginc)
名称 | 类型 | 值 |
_LightColor | float4 | 光照颜色。 |
unity_WorldToLight | float4x4 | 世界到光源矩阵。用于采样 Cookie 和衰减纹理。 |
unity_WorldToShadow | float4x4[4] | 世界到阴影矩阵。聚光灯一个矩阵,方向光级联最多四个。 |
球谐函数系数(由环境光和光探针使用)为 ForwardBase
和 Deferred
传递类型设置。它们包含 3 阶 SH,由世界空间法线进行评估(参见 UnityCG.cginc 中的 ShadeSH9
)。所有变量都是 half4 类型,unity_SHAr
等名称。
顶点光照渲染(Vertex
传递类型)
最多为 Vertex
传递类型设置 8 个光源;始终从最亮的光源开始排序。因此,如果您想一次渲染受两个光源影响的对象,则只需获取数组中的前两个条目即可。如果影响对象的光源少于八个,则其余光源的颜色将设置为黑色。
名称 | 类型 | 值 |
unity_LightColor | half4[8] | 光照颜色。 |
unity_LightPosition | float4[8] | 视图空间光源位置。方向光为 (-方向,0);点光源或聚光灯为 (位置,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)。 |
名称 | 类型 | 值 |
unity_Lightmap | Texture2D | 包含光照贴图预渲染的纹理,包含场景中静态对象上的光源效果。光照贴图覆盖在场景几何体上以创建光照效果。 更多信息 参见 术语表信息。 |
unity_LightmapST | float4[8] | 缩放和转换 UV 信息到正确的范围以采样光照贴图纹理。 |
名称 | 类型 | 值 |
unity_AmbientSky | fixed4 | 渐变环境光照情况下天空环境光照颜色。 |
unity_AmbientEquator | fixed4 | 渐变环境光照情况下赤道环境光照颜色。 |
unity_AmbientGround | fixed4 | 渐变环境光照情况下地面环境光照颜色。 |
unity_IndirectSpecColor | fixed4 | 如果您使用 天空盒一种特殊类型的材质,用于表示天空。通常是六面体。 更多信息 参见 术语表,则这是天空盒的平均颜色,Unity 使用 球谐函数数据 中的 DC 分量在 环境光探针 中计算得出。否则为黑色。 |
UNITY_LIGHTMODEL_AMBIENT | fixed4 | 环境光照颜色(渐变环境光照情况下为天空颜色)。旧版变量。 |
unity_FogColor | fixed4 | 雾颜色。 |
unity_FogParams | float4 | 雾计算参数:(density / sqrt(ln(2))、density / ln(2)、–1/(end-start)、end/(end-start))。x 适用于 Exp2 雾模式,y 适用于 Exp 模式,z 和 w 适用于 Linear 模式。 |
名称 | 类型 | 值 |
unity_LODFade | float4 | 使用 LODGroup 时的细节层次衰减。x 为衰减 (0..1),y 为量化为 16 个级别的衰减,z 和 w 未使用。 |
_TextureSampleAdd | float4 | 由 Unity 自动设置仅限于UI(用户界面) 允许用户与您的应用程序交互。Unity 目前支持三种 UI 系统。 更多信息 参见 术语表,具体取决于所用纹理是否为 Alpha8 格式(值为 (1,1,1,0))或不是(值为 (0,0,0,0))。 |