ノイズテクスチャサンプリングして放射状の模様を作ってみます。
元のテクスチャ
元のテクスチャはこんな感じ。
PhotoshopでRGBごとの雲模様を作って加算合成しただけです。
実装
シェーダはこんな感じです。
Shader "Sample" { Properties { _MainTex ("Texture", 2D) = "white" {} } SubShader { Tags { "RenderType"="Opaque" } Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" struct appdata { float4 vertex : POSITION; float2 uv : TEXCOORD0; }; struct v2f { float2 uv : TEXCOORD0; float4 vertex : SV_POSITION; }; sampler2D _MainTex; float4 _MainTex_ST; v2f vert (appdata v) { v2f o; o.vertex = UnityObjectToClipPos(v.vertex); o.uv = TRANSFORM_TEX(v.uv, _MainTex); return o; } fixed4 frag (v2f i) : SV_Target { // テクスチャがリピートじゃないなら *0.5+0.5 とかする i.uv = normalize(i.uv - 0.5); // 時間でアニメーション i.uv += _Time.y; fixed4 col = tex2D(_MainTex, i.uv); return col; } ENDCG } } }
UV座標から0.5を引くことでUVを-0.5~0.5の値にします。
そのうえで正規化することで、(0, 0)を中心とする半径1の円周上をサンプリング点としています。
結果
アニメーションさせないとこんな感じ。
アニメーションさせるとこんな感じ。