アウトライン描画

Unityのゲーム画面でマウスでオブジェクトをポイントした際にオブジェクトを枠付き表示(Outline)する。

オブジェクトの形状が単純な場合はshaderでオブジェクトを膨らませて枠の色でベタ塗描画(lighting off)してその後でオブジェクトを重ね書きする手法が有る。
オブジェクトの形状が複雑な場合は、オブジェクトの境界(エッジ)を検出(Sobelフィルターを使用)して枠を付ける。
エッジ検出と枠の着色は shader で行う。

作業済みのUnityプロジェクトをレポートフォルダにGP15.zipとして置いておく。

参考資料:

このページGP Ex3はこのチュートリアルに取り組んだ際の記録です。

UnityのShaderでオブジェクトにOutlineを付けるチュートリアル
Ned Makes Games https://nedmakesgames.github.io/blog/outlines


Outlineのアセット
Chris Nolet 作、Quick Outline https://assetstore.unity.com/packages/tools/particles-effects/quick-outline-115488


Shaderプログラミング関連
Unityシェーダプログラム入門 UnlitShaderの要素を全て解説 - アマガミナブログ  https://amagamina.jp/blog/unity-shader/
ShaderGraph】デプスバッファを利用した霧の表現 https://qiita.com/r-ngtm/items/6a97b6ea8c6d5ef17168
ShaderGraphでCustomFunctionNodeを用いてガウシアンフィルタを作成する https://www.hanachiru-blog.com/entry/2021/06/17/120000

HDRPプロジェクトジェクト関連
Unity Japan Oficce メイキングシリーズ他、Unityの画作りについて連載 http://tsumikiseisaku.com/blog/category/making/
Lighting & rendering tutorial for HDRP | Unite Now 2020 https://www.youtube.com/watch?v=yqCHiZrgKzs&feature=youtu.be


URP・ポストエフェクト関連
【Universal Render Pipeline】_CameraDepthTextureの実装を読んでみた https://qiita.com/r-ngtm/items/3052d3a2d2ec31260eb3
URP・PostProccessing Stack V3でカスタムポストエフェクトを実装する https://www.ravypop.com/entry/2020/09/21/014835
Custom Render Passes with URP https://learn.unity.com/tutorial/custom-render-passes-with-urp
HDRPでポストエフェクトやる https://qiita.com/amagitakayosi/items/65bdc3f3f7a446f9aa0a
PostProcessingStackV2のシェーダで_CameraDepthNormalsTextureから深度と法線を取り出す方法 https://qiita.com/ScreenPocket/items/e154ab90db5ef2a9cd74


小技
オブジェクト上にあるマウスの状態によって実行される関数
マルチディスプレイにおける座標の扱い https://qiita.com/sy102/items/fbf67f4f3cb354785744