HDRPのカスタムパスとシェーダーグラフで、Sobelフィルタ、Scharrフィルタ、Prewittフィルタを作ってみました。
共通のシェーダーグラフを使い、インスペクタでフィルタ係数を設定します。
Custom Pass Volume
Custom Pass Volumeコンポーネントに、フルスクリーンカスタムパスを追加します。Fullscreenシェーダーグラフの設定されたマテリアルがアタッチされています。
シェーダーグラフ
8個のオフセットを定義しています。
オフセットにプロパティをかけて、フィルタの影響範囲を調節します。
スクリーンサイズで割って正規化します。
スクリーン位置を足して「HD Scene Color」ノードの「UV」に接続します。
サンプリングの結果にフィルタ係数をかけます。水平方向と垂直方向の2つのカーネルを使います。
フィルタ係数はインスペクタで設定します。
水平方向と垂直方向で別々に合計します。結果を2乗します。
2つの値を足して平方根を求めます。
この値をマスタースタックのBase Colorに入力します。Skyでエフェクトを無効化しています。また白黒にしています。
これでエッジ検出ができました。