はじめに
前回ShaderGraphのFresnel Effectノードについて紹介をさせていただきました。
ただこのノードでは、両面描画の場合には以下の画像のようにうまく動作しないことがありました。
早速見ていきましょう。
自前実装する
Fresnel Effectノードは以下のようなコードで実装されています。
void Unity_FresnelEffect_float(float3 Normal, float3 ViewDir, float Power, out float Out) { Out = pow((1.0 - saturate(dot(normalize(Normal), normalize(ViewDir)))), Power); }
これをノードで実装してみるとこんな感じ。
ここの内積をとっている部分で、1~-1
の値の0以下を0にしてしまっているところが原因で両面描画ができなくなってしまっています。
これを絶対値をとることで解決することができます。