HDRPのフルスクリーンサンプルを詳しく見てみました。
シェーダーグラフで画面に集中線を表示します。
カスタムパス
Custom Pass Volumeコンポーネントには、通常のフルスクリーンカスタムパスが追加されています。カスタムパスにはFullscreenシェーダーグラフの設定されたマテリアルがアタッチされています。
シェーダーグラフ
シェーダーグラフでノイズを使って集中線を表示します。まず、集中線を回転させるための角度(ラジアン)を作成します。
時間とともに段階的に変化する値によって、コマ送りのような見た目になります。
まず時間の値を調節して、Fractionノードに入力します。増加する値の小数部分だけが得られます。0からほぼ1の範囲を繰り返します。
整数をかけて範囲を大きくし、Floorノードに入れます。入力以下の最大の整数が得られます。整数が段階的に増加し、繰り返します。
同じ整数値で割ることで、値の変化が0-1の範囲になります。
これに2Πをかけます。ラジアンで1周分(360度)になります。
RotateノードでUVを回転させます。2Πをかけた値を回転量として使います。
UVには、Screen Positionノードの値を極座標にした値を入れます。
極座標への変換にはPolar Coordinatesノードを使います。出力ベクトルのxは中心からの距離、yは角度になります。
出力をノイズのUVに使ってみます。
入力の「Radial Scale」が小さいと中心から放射状に伸びる線ができます。
入力の「Length Scale」で線の密度が変わります。
サンプルのシェーダーグラフでは、Rotateノードの出力をSimple Noiseノードに入力します。放射状の線が回転します。
中心に、線のない空間を作ります。Screen Positionと中心の距離を使います。Screen Positionは、Modeが「Default」ときに0~1の範囲になります。
中心は0.5に設定されています。
空所のサイズと、そこから線が徐々に現れていく部分のサイズを設定します。それぞれ、「Inverse Lerp」ノードのA、Bに入力されます。入力のTには中心からの距離を入れます。
「Inverse Lerp」ノードでは、「Lerp」ノードのTと出力が逆になっています。「Inverse Lerp」ノードのTがAとBの間の範囲では、0-1の値になります。
Tがその範囲の外だと、0未満や1より大きい値になります。Saturateノードによって、0から1の範囲に固定されます。
「Simple Noise」ノードの値を「Smoothstep」ノードにいれます。Edgeには、Saturateノードの値を「One Minus」ノードで反転した値を使います。
One Minusノードによって中心の空所が明るくなります。Smoothstepの出力が1になるためには、Edgeよりも大きな入力が必要になります。
Smoothstepの出力をマスタースタックのAlphaに入力します。
これで、画面に集中線が表示されます。