主にプログラミング関連のメモ帳 ♪(✿╹ヮ╹)ノ
書いてあるコードは自己責任でご自由にどうぞ。記事本文の無断転載は禁止です。
2020/10/12
最近シェーダーを書くことが増えてきた私です。
ということで今回は「近づくと消える」シェーダーを書きました。
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)
で、
指定された範囲内に入ったら、近づけば近づくほど消えていくようになっています。
ただこれだけ。ではでは。