_Time
类型:float4
含义:
_Time 是 Unity 自动提供的时间变量,它包含了不同形式的时间信息,单位都是 秒:
| 分量 | 描述 |
|---|---|
| X | 当前时间(t) |
| Y | 当前时间 * 2(2t) |
| Z | 当前时间 * 3(3t) |
| W | 当前时间 * 4(4t) |
用法示例:
float wave = sin(_Time.y + uv.x * 10);这是用于动画、时间驱动的变化(如闪烁、滚动纹理、流水效果等)的非常常见工具。
_ScreenParams
类型:float4
含义:
该变量提供有关屏幕尺寸和像素数据的信息:
| 分量 | 描述 |
|---|---|
| X | 屏幕宽度(单位:像素) |
| Y | 屏幕高度(单位:像素) |
| Z | 1 + 1.0 / 宽度 |
| W | 1 + 1.0 / 高度 |
.z和.w用于防止除零错误,在某些图像处理计算中也用于校正 UV 精度等。
用法示例:
float2 screenUV = i.screenPos.xy / _ScreenParams.xy;常用于屏幕空间效果,如后处理、UI 特效、屏幕遮罩等。
_ProjectionParams
类型:float4
含义:
投影相关的参数:
| 分量 | 描述 |
|---|---|
| X | 正交投影为1; 透视投影为-1 |
| Y | 摄像机近平面 |
| Z | 摄像机远平面 |
| W | 远平面的倒数1.0 / far plane |
特别说明 .x:
- 在 Unity 中,为了区分正交和透视投影,在做一些深度相关运算时需要知道是哪种投影方式,比如线性化深度时就会用到这个值。
用法示例(线性深度):
float linearDepth = i.depth * _ProjectionParams.z / (_ProjectionParams.z - _ProjectionParams.y);_WorldSpaceCameraPos
类型:float3
含义:
当前活动相机的世界空间坐标位置
unity_FogParams
类型:float4
含义:
雾效相关的参数:
| 分量 | 内容 | 描述 |
|---|---|---|
| X | density / sqrt(ln(2)) |
用于 Exp2 模式 |
| Y | density / ln(2) |
用于 Exp 模式 |
| Z | -1 / (end-start) |
用于 Linear 模式 |
| W | end / (end-start) |
用于 Linear 模式 |