2 輪郭を浮かび上がらせる

このシェーダー入門は、おもに数式に焦点をあてる。なぜかって?筆者が数学なんもわからんの民だからだ。まちがっていたらおしえてほしい。

この記事は 7日間でマスターするUnityシェーダ入門 を自分なりに理解しようと努めた内容だ。また、プログラムはここからの引用であることが多い。詳しく知りたかったら、原典を参照してほしい。


輪郭のみにエミッションが入るシェーダーを作る。基本的には前回の「氷のようなシェーダー」と同じだが、cos 関数は緩やかな弧の形をしており、エミッションが輪郭だけでなく内側まで届いてしまう。そこで、3 乗する。すると、減衰速度が急峻になり、内側までエミッションが届かなくなる。

コサインを3乗した曲線。滑り台のように急カーブを描いている。

実装

  • saturate(x): 0 から 1 のあいだに値をとどめる。
float rim = 1 - saturate(dot(IN.viewDir, o.Normal));
o.Emission = rimColor * pow(rim, 3);

Back Link