UnityTips 之 ShaderLib 中的 Time

2024-07-01  本文已影响0人  暴走TA

简介: 一直在使用便利的 _Time节点,还真没有仔细关注过 ShaderLib 内的 Time 变量。之前手写使用 _Time 获取时间,使用 ASE 的节点后,最近观察到的 编译结果 使用 _TimeParameters。
unity版本: 2022.3.14f1c1
管线: URP

ShaderLib 内的时间相关的输入变量

上古时代写着色器使用的是 _Time 变量来获取传入的时间参数。后来出现了 ASE 之后,就习惯于用 节点来获取。由于最近在查bug,发现 _TimeParameters 传入了负数。寻根找到了 _TimeParameters 的声明位置。在当前使用的 URP 的 ShaderLib 中,有5个 用于传参的 变量。

这5个变量从名字也比较容易进行理解,都是 float4 类型,其中前四个我查了一下,在buildin shader 的 UnityShaderVariables.cginc 中是有声明,所以 第五个 _TimeParameters 是在 URP 管线的 include 文件 UnityInput.hlsl 里声明的。以下是声明及注释。希望可以解惑日常工作中的一些奇葩疑问,例如我发现 _TimeParameters.y 是个负数~~~

  // Time (t = time since current level load) values from Unity
  float4 _Time; // (t/20, t, t*2, t*3)
  float4 _SinTime; // sin(t/8), sin(t/4), sin(t/2), sin(t)
  float4 _CosTime; // cos(t/8), cos(t/4), cos(t/2), cos(t)
  float4 unity_DeltaTime; // dt, 1/dt, smoothdt, 1/smoothdt
  float4 _TimeParameters; // t, sin(t), cos(t)
上一篇下一篇

猜你喜欢

热点阅读