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);

バックリンク

ネットワーク

site_graph 20241209-develop-index 🔧技術 - インデックス 20250213-start-shader そろそろシェーダーをはじめる 20241209-develop-index->20250213-start-shader 20250213-1-write-ice-shader 1 氷のようなシェーダーを書く 20250213-2-highlight-outline 2 輪郭を浮かび上がらせる 20250213-3-create-stained-glass 3 ステンドグラスをつくる 20250213-4-create-scroll-water-surface 4 スクロールする水面を作る 20250213-5-blend-texture 5 テクスチャをブレンドする 20250213-6-move-circle-and-ring 6 円やリングを動かす 20250213-7-create-noise 7 ノイズをつくろう 20250213-8-create-fresnel-reflecting 8 フレネル反射をつくる 20250213-9-create-sea 9 海をつくる 20250213-start-shader->20250213-1-write-ice-shader 20250213-start-shader->20250213-2-highlight-outline 20250213-start-shader->20250213-3-create-stained-glass 20250213-start-shader->20250213-4-create-scroll-water-surface 20250213-start-shader->20250213-5-blend-texture 20250213-start-shader->20250213-6-move-circle-and-ring 20250213-start-shader->20250213-7-create-noise 20250213-start-shader->20250213-8-create-fresnel-reflecting 20250213-start-shader->20250213-9-create-sea