なつねこメモ

主にプログラミング関連のメモ帳 ♪(✿╹ヮ╹)ノ 書いてあるコードは自己責任でご自由にどうぞ。記事本文の無断転載は禁止です。

Unity でカメラが近づいたら消えていくシェーダーを作る

最近シェーダーを書くことが増えてきた私です。
ということで今回は「近づくと消える」シェーダーを書きました。

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) で、
指定された範囲内に入ったら、近づけば近づくほど消えていくようになっています。

ただこれだけ。ではでは。