波を表現するシェーダをつくっていきます。
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" }
例のごとくパワポからはぎとってきます。
適応した結果。のっそりしてる…
水面を動かすノード
完成図です。
TextureのPropertyを作成し、Sample Texture 2DのTextureに入力し、Albedoに渡します。
次にUVの部分です。Timeノードを使います。今回は経過時間なのでTimeを使いましょう。このノードと、2次元のVector(0.1, 0.2)を掛け合わせます。
掛け合わせたものをTiling and Offset に代入し、Sample Texture 2DのUVにセットします。
なんか早い…
Textureを簡単に動かせるようになりました。今回は波(?)でしたが、テレビのノイズだったり、あるいはSinTimeをつかっていったりきたりさせたり色々できそうです。
(ごめんなさい、あんまり思い浮かばなかった…)