ShaderLab 移動・回転・拡縮コード


内容

・移動・回転・拡縮のコードを書きます
 →資料が見つからなかったのでメモ

環境

・Unity5.4
・Windows

※間違っていたら指摘ください

初期準備

・UI-Default.shaderをベースに使用する
→Unityビルドインシェーダー

パターン

移動

//OUT.texcoord = IN.texcoord; // 元々書かれていたコード
OUT.texcoord = IN.texcoord;
OUT.texcoord.x += _Time.y; // 横方向へスクロール
OUT.texcoord.y += _Time.y; // 縦方向へスクロール

[画像を後で貼り付ける]

回転

//OUT.texcoord = IN.texcoord; // 元々書かれていたコード
// 回転を設定
float angle = _Time.y * 1.0;
// 回転行列
float2x2 rotate = float2x2(cos(angle), -sin(angle), sin(angle), cos(angle));
// サイズを設定
float scale = 0.5;
// 回転UVを設定
float2 pivot_uv = float2(0.5, 0.5);
float2 r = (IN.texcoord.xy - pivot_uv) * (1 / scale);
OUT.texcoord = mul(rotate, r) + pivot_uv;

[画像を後で貼り付ける]

拡大・縮小

//OUT.texcoord = IN.texcoord; // 元々書かれていたコード
// サイズを設定
float scale = _Time.y % 1.0;
// 中心UVを設定
float2 pivot_uv = float2(0.5, 0.5); // ←UV方向間違ってる?
float2 r = (IN.texcoord.xy - pivot_uv) * (1 / scale);
OUT.texcoord = r + pivot_uv;

[画像を後で貼り付ける]

お世話になった書籍・サイト

<Unityシェーダープログラミングの教科書 ShaderLab言語解説編>超オススメ!!
https://s-games.booth.pm/items/660001
<サイト>
https://qiita.com/niusounds/items/cb821062acfd353d088d