[Unity] Cameraからの距離で色を変える [ShaderForge]

ShaderForge超たのしい

というわけで、カメラからの距離で色を変える方法。
ノードに「Depth」というのがあるので、これをかけ算するのかなと思ってたのですが
特に入力も無くとりあえずカラーに刺しても範囲が決められずんんん???状態。

どうやら、ViewPosとWorldPosの距離を利用して上げれば良いとのことだったのでやってみました。

 

Divideは割り算。
レンダリングカメラからVertexまでの距離と、黒くするまでの距離を割って、
distanceまで=白、以降は徐々に暗くなる と言うのができるようです。

が、これだと、徐々に落ちていく部分の範囲を指定できない。
Web上でみつけた資料だと、powerを使用してFalloff部分を徐々にシャープにするようなやり方はみつけたのですが
それだとあまり直感的ではないので、グラデをかけ始める距離とどのぐらいの距離でFalloffするのかで
制御出来るようにしてみました。

こんな感じになりました。

distanceとfalloffを弄るとこんな感じになります。
(もちろんカメラの距離に応じても変化します)

distanceがFalloff開始距離、falloffがそこからどのぐらいで暗転仕切るのかのパラメータになります。
IFノードを使用して距離に応じて白黒塗り分け+間はLerpとDivideを使用してグラデーション作成。

IFとかをノードでやると見た目がカオスになるのがノードベースの辛いところ。
こういうのはたぶんコードで書いた方が楽なんだろうなぁ(汗

もう少し遊んだらコードの書き方もすこし勉強します。
いやーノード楽すぎてコード勉強する気力がなくなっていくなぁHAHAHA…

普通のシェーダーの基本的な作り方は大分分かってきたので、次はPostEffectのやり方をすこし覚えてみようかな?

コメントを残す

メールアドレスが公開されることはありません。

*