美文网首页
UnityTips 之 ShaderLib 中的 Time

UnityTips 之 ShaderLib 中的 Time

作者: 暴走TA | 来源:发表于2024-07-01 11:35 被阅读0次

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

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

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

    • float4 _Time
    • float4 _SinTime
    • float4 _CosTime
    • float4 unity_DeltaTime
    • float4 _TimeParameters

    这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)
    

    相关文章

      网友评论

          本文标题:UnityTips 之 ShaderLib 中的 Time

          本文链接:https://www.haomeiwen.com/subject/bkemcjtx.html