はなちるのマイノート

Unityをメインとした技術ブログ。自分らしくまったりやっていきたいと思いますー!

【Unity】ShaderGraphのTimeノードについて(Time,SineTime,CosineTime,DeltaTime,SmoothDelataTime)

はじめに

今回はShaderGraphのTimeノードについての記事になります!

アニメーションなんかには必須なTimeノード

f:id:hanaaaaaachiru:20191122195444p:plain

これについて書いていきます。

各ポート

それぞれのポートはこんな感じ。

名前 入出力 出力値 意味
Time 出力 Vector 1 時間
Sine Time 出力 Vector 1 時間の正弦
Cosine Time 出力 Vector 1 時間の余弦
Delta Time 出力 Vector 1 デルタ時間
Smooth Delta 出力 Vector 1 平滑化されたデルタ時間

Time Node | Shader Graph | 7.1.5

Time

最初のTimeはShaderLabでいう_Time.yと同じ意味になります。
Unity - マニュアル: ShaderLab 定義済みの値

このTimeは固定値と書いてある記事もありましたが、どんどん加算されていくのが正しいと思います。

おそらく1秒あたり1ずつインクリメントされる(厳密には連続的に変化する)という仕組みになっているはずです。
Unityユーザー助け合い所公開グループ | Facebook

ただ初期値がどうなっているのかは(実行時間?)まだ確証がないので、よく分かっていません。

Sine Time,Cosine Time

これは-1 ~ 1を繰り返すものです。厳密にではなくおおまかに測定した値ですが、約3.14*2秒で一周していました。

Sin xのxがTime(1秒に1増加)で,xはラジアン単位という感じでしょうか。

Delta Time,Smooth Delta

これはデルタ時間のことで、前回のフレームからの経過時間のことになります。0.01666…みたいな値が変動的に入るという感じですね。

Smooth Deltaにある平滑化というのはこんな感じ。

連続的なデータ処理において、他のデータよりも大きく乖離しているデータを平均化、あるいは除去することにより、合理性を保つこと。

平滑化(へいかつか)とは - コトバンク

実例

今回取り上げたSine Timeを使った簡単な例を紹介。

f:id:hanaaaaaachiru:20191122213209p:plain

f:id:hanaaaaaachiru:20191122213020g:plain


ただしTransparentにしないと透明にならないので注意してください。
f:id:hanaaaaaachiru:20191122222815p:plain

さいごに

ShaderGraphでなにかしらの値をデバックするみたいなことってできるのでしょうか。

やり方がよく分からないので、細かいところはだいだいの値でしか書けないんですよね。もしなにかしらの方法を知っている方は是非コメント等で教えてくれると嬉しいです!