2 輪郭を浮かび上がらせる
このシェーダー入門は、おもに数式に焦点をあてる。なぜかって?筆者が数学なんもわからんの民だからだ。まちがっていたらおしえてほしい。
この記事は 7日間でマスターするUnityシェーダ入門 を自分なりに理解しようと努めた内容だ。また、プログラムはここからの引用であることが多い。詳しく知りたかったら、原典を参照してほしい。
輪郭のみにエミッションが入るシェーダーを作る。基本的には前回の「氷のようなシェーダー」と同じだが、cos 関数は緩やかな弧の形をしており、エミッションが輪郭だけでなく内側まで届いてしまう。そこで、3 乗する。すると、減衰速度が急峻になり、内側までエミッションが届かなくなる。
実装
saturate(x)
: 0 から 1 のあいだに値をとどめる。
float rim = 1 - saturate(dot(IN.viewDir, o.Normal));
o.Emission = rimColor * pow(rim, 3);