最近シェーダーを書くことが増えてきた私です。
ということで今回は「近づくと消える」シェーダーを書きました。
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) で、
指定された範囲内に入ったら、近づけば近づくほど消えていくようになっています。
ただこれだけ。ではでは。