はじめに 経過時間の計算など、加算し続ける変数をfloat型にしてしまうと、結構すぐに意図しない挙動を引き起こすという話があります。 値が大きくなると分解能が下がるので、そこに小さな値を足しても情報落ちが発生してしまうのです。 詳しくはこちらの記事などを参考にしてください。 シェーダーではどうなる? スクリプトではdouble型にすれば良いですが、シェーダーの場合はそういうわけにはいきません。 Unityシェーダーの組み込み変数である_Timeからはシーンロード時点からの経過時間が取得できますが、float型です。 同じシーンを長時間プレイしていると、この値はどうなるのでしょうか? 恐らくスクリプトのdouble型の変数からシェーダーに値を渡しているので、値が大きくなっても情報落ちにはならないと推測できます。 しかし、分解能は下がっていくので、だんだんと動きがカクカクしていくことが予想され