PostEffectステンシルバッファを使ってアウトラインを描画する方法を紹介します。次のような考え方で実装します。モデルよりも一回り大きい範囲のステンシルバッファに書き込むモデルを通常通り描画し、ステンシルバッファに上記の1とは違う値を書き込む上記の1で書き込んだ値のフラグメントのみ、アウトラインの色で描画する以前書いた下記の方法と似ていますが、最後にアウトラインを書き込むため、下の記事の課題2のような問題が起きません。ステンシルバッファに書き込むまずモデルより一回り大きい範囲のステンシルバッファに値を書き込みます。今回は1を書き込んでいます。}}描画色は最終的に上書きされるので何でもいいです。今回は描画順をZ値できっちり制御したいため、QueueをTransparentにしています。(不透明パスだときっちり制御できません)light11.hatenadiary.comここまでの描画結果は次のようになります。モデルを描画するモデルを描画しつつステンシルバッファに2を書き込みます。ライティングはシンプルなDiffuseのみです。}}ここまでの描画結果は次のようになります。アウトラインを描画する最後にステンシルバッファが1のピクセルのみアウトライン色で描画します。今回はポストエフェクトとして描画します。ポストエフェクトからステンシルバッファを使うにはちょっと条件があるので下記の記事のとおりCommandBufferで実装します。light11.hatenadiary.comCommandBuffer登録用スクリプトの実装はこのようにします。上の記事に色の変数を追加してマテリアルに登録する処理を書いただけです。}}ポストエフェクトのシェーダは次のようにします。}}結果レンダリング結果は次のようになります。モデル同士が重なっても問題は起こりません。»プロフィールUnityエンジニア。グラフィックスへの興味が強めです。インストールから基本的な使い方・注意点まとめ【Unity】【エディタ拡張】テクスチャを指定したUV座標で切り取って保存する【Unity】指定したアセットのAssetBundle名を取得する【Unity】【シェーダ】スクリプトからVP行列を渡してシェーダで座標変換に使う【Unity】【シェーダ】FloatやVectorをリニアライズ対象にするGammaアトリビュート月別アーカイブはてなブログをはじめよう!halya_11さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。