最近シェーダーを書くことが増えてきた私です。
ということで今回は「近づくと消える」シェーダーを書きました。
Vertex Shader は変わりないので、 Fragment Shader のみ
float4 fs(v2f i) : SV_TARGET { const float d = abs(length(i.worldPos - _WorldSpaceCameraPos)); const float3 c = tex2D(_MainTex, i.uv); const float a = saturate((d - _Attenuation) / _Attenuation); return lerp(float4(c, 0), float4(c, 1), a); }
1 行目の abs(length(i.worldPos - _WorldSpaceCameraPos))
で、カメラからオブジェクトの座標が取得できます。
あとは 3 行目の saturate((d - _Attenuation) / _Attenuation)
で、
指定された範囲内に入ったら、近づけば近づくほど消えていくようになっています。
ただこれだけ。ではでは。