ObjectIDCustomPassとシェーダーグラフを使って、輪郭抽出してみました。
オブジェクトIDカスタムパス
カスタムパスに「ObjectIDCustomPass」を追加します。オブジェクトごとに色分けできます。
カラーバッファのターゲットをCustomにしてカスタムカラーバッファに描画します。後続のフルスクリーンカスタムパスでオブジェクトIDの色を使います。
Clear Flagsでカラーをクリアしないと輪郭が残ります。
Layer Maskで輪郭抽出するレイヤーを指定できます。
フルスクリーンカスタムパス
Fullscreen Shader Graphを作ります。
カスタムパスにFullScreenCustomPassを追加し、このシェーダーグラフが設定されたマテリアルをアタッチします。
シェーダーグラフ
シェーダーグラフでは、各ピクセルを中心とした正方形の4つの角にあるピクセルの色や深度などの値の変化を調べます。
まず、ピクセルサイズをスクリーンサイズに対して正規化した値とエッジ半径をかけます。
これとUVを足して右上角のUVを作ります。反対方向のUVも計算します。
ピクセルの片方の符号を反転させて、残りのUVを作ります。
これらのUVでオブジェクトIDカスタムパスで作ったカスタムカラーバッファの色を取得し、輝度を計算しました。
輝度はサブグラフで計算しています。R、G、Bに別々の値をかけてから全て足しています。
対角線の色の差をそれぞれ計算して、2乗してから足して平方根を計算します。値の変化が大きいほど大きな値になります。今回は2次元ベクトルにして長さを計算しています。
Stepノードを使い、閾値で白黒の値に分けます。さらにLerpノードで輪郭は指定の色、それ以外はシーンカラーにして、マスタースタックのBase Colorに入力します。
マテリアルでプロパティを変更できます。Thresholdは低く設定しています。
エッジの太さや色を変えられます。