返回介绍

ShaderLab内置值

发布于 2021-06-20 00:15:04 字数 2696 浏览 986 评论 0 收藏 0

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_TEXTURE0 到 UNITY_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/高度

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文