Screen Space Reflection
Screen Space Reflection (SSR、スクリーンスペースリフレクション) オーバーライドは、画面の深度とカラーバッファを使ってリフレクションを計算する、HD レンダーパイプライン (High Definition Render Pipeline、HDRP) の機能です。HDRP でどのように SSR が機能するかは、リフレクションドキュメント を参照してください。
HDRP はこのオーバーライドの上に レイトレースされたリフレクション を実装します。つまり、Inspector で表示されるプロパティーは、レイトレーシングが有効であるか無効であるかに応じて変化するということです。
スクリーンスペースリフレクションの有効化
まずプロジェクトに対して有効にしてから、Cameras でも有効にして、シーンでこの機能を使います。プロジェクト内で機能を有効にするには、HDRP Asset を使い、Cameras で有効化するには、フレーム設定 を使います。すべての Cameras に対して機能を有効にするには、Default Frame Settings を利用し、特定の Cameras に対して機能を有効にするには、各 Camera の個別 Frame Settings をオーバーライドします。
この機能に関して、 HDRP アセットで有効化するプロパティーは Lighting > Reflections > Screen Space Reflection です。 フレーム設定で有効化するプロパティーは Lighting > Screen Space Reflection です。
スクリーンスペースリフレクションの使用
HDRP は Volume フレームワークを使って SSR を計算するため、SSR プロパティーを有効にし変更するには、シーンで Screen Space Reflection オーバーライドを Volume 追加しなければなりません。Screen Space Reflection を Volume に追加する手順は以下の通りです。
- シーンまたは Hierarchy ビューで、Volume コンポーネントを含むゲームオブジェクトを選択し、Inspector で表示します。
- Inspector で Add Override > Lighting へ行き、Screen Space Reflection をクリックします。 これで HDRP は Volume が影響を与えるすべてのカメラに SSR を計算します。
API
ランタイム中このオーバーライドにアクセスし制御するためには、Volume スクリプティング API を使用します。Volume システムの仕組みにより、プロパティーは標準 Unity コンポーネントとは異なる方法で編集されます。また、各プロパティーに overrideState があるなど、他にも注意する点があります。これは Volume システムが、設定したプロパティー値と Volume Profile に保存されているデフォルト値のうち、どちらを使うかを指示します。API を正しい利用法についての詳細は、 Volume スクリプティング API を参照してください。
プロパティー
Volume コンポーネントのオーバーライドのプロパティーを編集するには、プロパティーの左にあるチェックボックスを有効にします。これにより HDRP も Volume コンポーネントに対して、デフォルト値ではなく特定されたプロパティー値を使うことになります。チェックボックスを無効にすると、HDRP は設定されたプロパティーを無視し、Volume のデフォルト値を代わりに使います。
Inspector で表示されるプロパティーは、エフェクトにレイトレーシングを有効化するかしないかによって、変化します。
- レイトレーシングを使わずにスクリーンスペースリフレクションを代用するには、Inspector で Ray Tracing を無効にして スクリーンスペース でプロパティーリストを参照します。
- レイトレーシングを使う場合は、Inspector で Ray Tracing を有効にし、Ray-traced でプロパティーリストを参照します。
Screen-space
プロパティー | 説明 |
---|---|
Enable | HDRP がこのエフェクトの Volume が影響を与えるカメラに SSR を処理するかを示します。 |
Ray Tracing | HDRP がレイトレーシングを使ってリフレクションを計算するかを示します。このプロパティーを有効にすると、この Volume オーバーライドの実装を完全に変更し、レイトレースされたリフレクションを制御する新しいプロパティーを展開します。 レイトレースされたリフレクションに関する情報は、レイトレースされたリフレクション を参照してください。 レイトレースされたリフレクションを制御するプロパティーに関する情報は、下の Ray-traced プロパティーセクションを参照してください。 |
Algorithm | スクリーンスペースリフレクションエフェクトに使う、アルゴリズムを特定します。オプションは以下の通りです。 • Approximation: スクリーンスペースリフレクションを概算して素早く結果を計算します。このソリューションは、特に粗いサーフェスに対して PBR Accumulation の精度が下がりますが、リソース負荷は少なくなります。 • PBR Accumulation: 複数のフレームを累積してより正確な結果を生成します。累積の量は Accumulation Factor を使って制御できます。このソリューションは、累積のせいで Approximation よりもゴースティングが多く発生する場合がある上に、リソース負荷も大きくなります。HDRP はこのアルゴリズムを透明マテリアルに適用せず、代わりに常に Approximation を使用します。 |
Minimum Smoothness | スライダーを使って、HDRP が SSR トレーシングを実行するサーフェスのスムースネスの最小量を設定します。値が低いほど、HDRP はよりスムーズでないゲームオブジェクトに対して SSR トレーシングを実行します。ピクセルのスムースネス値がこの値よりも低い場合は、HDRP は リフレクションヒエラルキー で次の利用可能なリフレクションメソッドにフォールバックします。 |
Smoothness Fade Start | スライダーを使って、SSR リフレクションがフェードアウトを開始するスムースネス値を設定します。値が低いほど、HDRP はよりスムーズでないゲームオブジェクトに対して SSR リフレクションをフェードアウトさせます。フェードは Minimum Smoothness と Smoothness Fade Start の値の範囲内です。 |
Reflect Sky | HDRP が SSR を使ってスカイリフレクションに対応するかを示します。このプロパティーを無効にすると、空を反射するピクセルは リフレクションヒエラルキー の次のレベルを使います。 ノート: SSR は深度バッファを使ってリフレクションを計算し、HDRP は透明ゲームオブジェクトを深度バッファに追加しません。このプロパティーを有効にする場合、カラーバッファで空に表示される透明ゲームオブジェクトがビジュアルアーティファクトを発生させ、不正確なリフレクションを生じる可能性があります。これは SSR 技法には一般的な制限です。 |
Screen Edge Fade Distance | スライダーを使って HDRP が光線の到着地点が画面の境界線に近いときに、スクリーンスペースリフレクションエフェクトをフェードアウトさせる距離を制御します。この値を増やすと、HDRP が光線の到着地点に対してスクリーンスペースリフレクションエフェクトをフェードアウトさせる、画面端からの距離が増します。 |
Object Thickness | スライダーを使って、画面のゲームオブジェクトの厚みを制御します。SSR アルゴリズムは薄いゲームオブジェクトと厚いゲームオブジェクトの区別がつかないため、このプロパティーはゲームオブジェクトの背後の光線をトレースするのに役に立ちます。アルゴリズムはこのプロパティーをすべてのゲームオブジェクトに均等に適用します。 |
Quality | このエフェクトの品質レベルを特定します。各品質レベルは異なるプリセット値を適用します。Unity はプリセットがオーバーライドするプロパティーの編集ができないようにしています。各プロパティーに独自の値を設定したい場合は、Custom を選択してください。 |
- Max Ray Steps | メッシュとの交差地点の検索を停止する前に、アルゴリズムが実行できるイテレーションの最大数を設定します。例えば、イテレーション数を 1000 に設定し、アルゴリズムが交差地点を見つけるのに 10 だけ必要な場合、イテレーションが 10 に到達した後にアルゴリズムは停止します。この値を過度に低く設定すると、アルゴリズムが終了するのが早すぎて、突然リフレクションが停止する場合があります。 |
Accumulation Factor | 累積収束のスピードです。0 の場合は累積がありません。1 の場合は累積が非常に遅く、固定画像に有益です。累積が多いほどより正確性が増しますが、動く際にゴースティングがより多く発生します。累積を使う際は、コンバージェンスのクオリティーとゴースティングアーティファクトのバランスをとることが重要です。さらに、より粗い反射面がノイズなしに収束画像を制作するには、より多くの累積が必要ですので、注意してください。 このプロパティーを有効にするは Algorithm を PBR Accumulation に設定したときのみ表示されます。 |
Ray-traced
プロパティー | 説明 |
---|---|
Reflect Sky | この機能を有効にすると、光線が交差地点を見つけられないときに、HDRP がスカイをレイトレースされたリフレクションのフォールバックとして使うかを特定します。 |
LayerMask | HDRP がレイトレーシングによるエフェクトをプロセスするレイヤーを定義します。 |
Mode | HDRP が Performance または Quality モードでエフェクトを評価するかを定義します。 このプロパティーは、HDRP アセットで Supported Ray Tracing Mode を Both に設定したときのみ表示されます。 |
Quality | HDRP が次の入子型プロパティーの値を追加するために使うプリセットを特定します。オプションは以下の通りです。 • Low (低): 品質よりもパフォーマンス重視のプリセットです。 • Medium (中): 品質とパフォーマンスのバランスが取れたプリセットです。 • High (高): パフォーマンスよりも品質重視のプリセットです。 • Custom (カスタム): 各プロパティーを個別にオーバーライドできます。 このプロパティーは Mode を Performance に設定したときのみ表示されます。 |
Minimum Smoothness | スクリーンスペース 内の Minimum Smoothness を参照してください。 |
Smoothness Fade Start | スクリーンスペース 内の Smoothness Fade Start を参照してください。 |
Max Ray Length | グローバルイルミネーション光線の最大長を制御します。光線が交差地点を見つけられない場合、値が高いほど、レイトレースによるグローバルイルミネーションはより価値が高くなります。 |
Clamp Value | HDRP が事前展開された値を固定するために使うしきい値を制御します。値の範囲を減少させ、リフレクションがより安定してノイズ除去するようになりますが、クオリティーは低下します。 |
Upscale Radius | HDRP がリフレクションをビルドするために使う、アップスケーラーの半径を制御します。半径が大きいほど、HDRP はより多くの周囲を使ってリフレクションをビルドし、クオリティーが向上します。 このプロパティーは Mode を Performance に設定したときのみ表示されます。 |
Full Resolution | この機能を有効にすると、ピクセル、フレームにつき 1 つの光線へとレイバジェットを増加させます。この機能を無効にすると、4 ピクセル、フレームにつき 1 つの光線へとレイバジェットを減少させます。 このプロパティーは Mode を Performance に設定したときのみ表示されます。 |
Sample Count | ピクセルごと、フレームごとの光線数を制御します。この値を増やすと、実行時間を直線的に増加させます。 このプロパティーは Mode を Quality に設定したときのみ表示されます。 |
Bounce Count | リフレクションレイがバウンスできる数を制御します。この値を増やすと、実行時間を指数関数的に増加させます。 このプロパティーは Mode を Quality に設定したときのみ表示されます。 |
Denoise | HDRP がリフレクションからノイズを除去するために使う、時空間フィルターを有効化します。 |
- Denoiser Radius | 時空間フィルターの半径を制御します。この値を増やすと、よりぼやけた結果が得られるとともに、実行時間が増加します。 |
制限
スクリーンスペースリフレクション
SSR を計算するために、HDRP は前のフレーム中に生成されたブラーのかかったミップマップでカラーバッファを読み込みます。カラーバッファは BeforeRefraction Rendering Pass を使う透明ゲームオブジェクトのみを含みます。
透明マテリアルの Receive SSR Transparent が有効になっている場合、たとえ PBR Accumulation を選択したとしても、HDRP は常に Approximation アルゴリズムを使って SSR を計算します。
レイトレースによるリフレクション
現在、HDRP におけるレイトレーシングは デカール をサポートしません。つまり、レイトレースによるリフレクションを使う際、反射面にデカールは表示されません。