UnityShader 之_Time,TRANSFORM_TEX

//t是自该场景加载开始所经过的时间,4个分量分别是 (t/20, t, t2, t3)
_Time float4 time(t/20, t, t2, t3)

//t是时间的正弦值, 4个分量分别是 (t/8, t/4, t/2, t)
_SinTime float4 Sine of time :(t/8, t/4, t/2, t)

//t是时间的余弦值, 4个分量分别是 (t/8, t/4, t/2, t)
_CosTime float4 Cosine of time :(t/8, t/4, t/2, t)

//dt是时间增量,4个分量分别是 (dt, 1/dt, smoothDt, 1/smoothDt)
unity_DeltaTime float4 Delta time:(dt, 1/dt, smoothDt, 1/smoothDt)

如果使用fixed x = Speed * _Time; 等价于 fixed x = Speed * _Time.x
_SinTime.w = sin(_Time.y)

TRANSFORM_TEX方法比较简单,就是将模型顶点的uv和Tiling、Offset两个变量进行运算,计算出实际显示用的定点uv。

该方法可以在UnityCG.cginc文件中找到,内容也很简单:

// Transforms 2D UV by scale/bias property
#define TRANSFORM_TEX(tex,name) (tex.xy * name##_ST.xy + name##_ST.zw)
配合使用时的代码:
o.uv = TRANSFORM_TEX (v.texcoord, _MainTex);

其中
v是appdata_base类型,v.texcoord就是模型顶点的uv数据。

_MainTex是使用的图片。

name##_ST实际上就是_MainTex_ST。
name##_ST.xy就是Tiling的xy值。

name##_ST.zw就是Offset的xy值。

1、appdata_base: 包含顶点位置,法线和一个纹理坐标。
2、appdata_tan:包含顶点位置,切线,法线和一个纹理坐标。
3、appdata_full:包含位置、法线、切线、顶点色和两个纹理坐标。
4、appdata_img:包含位置和一个纹理坐标。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值