デコシノニッキ

ホロレンジャーの戦いの記録

独習ShaderGraph その8 uvスクロールする

前回
www.tattichan.work

波を表現するシェーダをつくっていきます。
nn-hokuson.hatenablog.com

水面を動かすシェーダ

uvスクロールをするシェーダ。お手本そのままです。

Shader "Custom/water" {
    Properties{
        _MainTex("Water Texture", 2D) = "white" {}
    }
        SubShader{
        Tags{ "RenderType" = "Opaque" }
        LOD 200

        CGPROGRAM
#pragma surface surf Standard fullforwardshadows
#pragma target 3.0

        sampler2D _MainTex;

    struct Input {
        //サーフェイスシェーダが処理するテクスチャ座標
        float2 uv_MainTex;
    };

    void surf(Input IN, inout SurfaceOutputStandard o) {
        fixed2 uv = IN.uv_MainTex;
        //変数を保持して足し合わせていく…ということはできないので、
        //時間を利用する
        //スクロール速度✕時間(=移動距離)
        uv.x += 0.1 * _Time;
        uv.y += 0.2 * _Time;
        o.Albedo = tex2D(_MainTex, uv);
    }
    ENDCG
    }
        FallBack "Diffuse"
}

例のごとくパワポからはぎとってきます。
f:id:haikage1755:20180130202448p:plain

適応した結果。のっそりしてる…
f:id:haikage1755:20180130202807g:plain

水面を動かすノード

完成図です。
f:id:haikage1755:20180130204012p:plain:w250

TextureのPropertyを作成し、Sample Texture 2DのTextureに入力し、Albedoに渡します。

次にUVの部分です。Timeノードを使います。今回は経過時間なのでTimeを使いましょう。このノードと、2次元のVector(0.1, 0.2)を掛け合わせます。
掛け合わせたものをTiling and Offset に代入し、Sample Texture 2DのUVにセットします。
f:id:haikage1755:20180130204622p:plain:w250

なんか早い…
f:id:haikage1755:20180130205004g:plain

Textureを簡単に動かせるようになりました。今回は波(?)でしたが、テレビのノイズだったり、あるいはSinTimeをつかっていったりきたりさせたり色々できそうです。
(ごめんなさい、あんまり思い浮かばなかった…)

[デコシノニッキ]は、Amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイト宣伝プログラムである、Amazonアソシエイト・プログラムの参加者です。」