Motion Blur
Vignette

Screen Space Reflection

ここでは、Post Processing Stackに含まれるデフォルトのエフェクトに関して説明します。

Screen Space Reflection (スクリーンスペースリフレクション、SSR) は、反射を計算するためにスクリーンスペースのデータを再使用する技術です。一般に、濡れた床の表面や水たまりなどのより微妙な反射を作成するために使用します。

スクリーンスペースリフレクションは負荷の高い技術ですが、正しく使用すれば大変効果的です。スクリーンスペースリフレクションは、法線の G バッファに依存するため デファードレンダリングパス でのみ使用可能です。負荷の高いエフェクトなのでモバイルでの使用は推奨されません。

スクリーンスペースリフレクションを使ったシーン
スクリーンスペースリフレクションを使ったシーン
リフレクション無しのシーン
リフレクション無しのシーン
Screen Space Reflection の UI
Screen Space Reflection の UI

プロパティー

プロパティー 説明
Blend Type 反射を描画にブレンドする方法
Reflection Quality 解像に使用するバッファのサイズ。解像度を半分にすると、スクリーンスペースリフレクションはずっと高速になりますが、精密度が落ちます。
Max Distance 最大反射距離 (ワールド単位)
Iteration Count レイトレーシングの最大の長さ
Step Size レイトレーシングのおおよそのステップサイズ。値を高くすると遠くまでトレースし、低くすると反射の質が向上します。
Width Modifier 反射光のレイが後方に通り抜ける場合がある一般的な柱、壁、家具、その他のオブジェクトの厚さ
Reflection Blur 反射のぼやける度合い
Reflect Backfaces すべての表の面をカリングしてシーンをレンダリングします。それによって生じたテクスチャを、深度マップのある点が後方から照らされたときに裏面がどのように見えるかを予測するのに使用します。
Reflection Multiplier スクリーンスペースリフレクションの非物理演算的な乗数。1.0 が物理演算に基づいた値。
Fade Distance Max Distance をどれだけ超えるとスクリーンスペースリフレクションのフェードアウトを開始するか
Fresnel Fade フレネルフェードを拡充します。表面近くの床の反射の表示が適切で、床のもっと下の方では悪い場合に、この値を増加します。
Fresnel Fade Power 値を高くすると、角度によって反射が変わるときに、フレネルフェードを速くします。
(Screen Edge Mask) Intensity 値を高くすると、画面の端に近いスクリーンスペースリフレクションをフェードアウトします。そのため、カメラの移動で反射が急に発生することがありません。

最適化

  • Reflect Backfaces を無効にします

  • Reflection Quality を削減します

  • Iteration Count を削減します (Step Size を増加して補います)

  • 付加的な Reflection を使用します

制限

  • VR ではサポートされていません

説明

スクリーンスペースリフレクションは、 キューブマップリフレクションプローブ などの他の方法よりも詳細な反射を得るために使用します。反射のエフェクトのためにキューブマップを使用するオブジェクトは自身のリフレクションを得ることができず、リフレクションプローブのリフレクションはその精度が限られています。

ベイクしたリフレクションプローブを使ったシーン
ベイクしたリフレクションプローブを使ったシーン

上記の画像では、赤で囲った領域で不正確な反射が見られます。 これは、カメラ とリフレクションプローブの間の変換によるものです。 また、このリフレクションプローブはベイクされているため、色付きの球などの動的なオブジェクトに反映できないことにも注意してください。

リアルタイムのリフレクションプローブ(上図)では、動的なオブジェクトがキャプチャされますが、上の例のように、反射の位置は正しくありません。 赤で囲った領域には、白い球の反射が見えます。

これらをページの一番上の画像 (スクリーンスペースリフレクションを使用した画像) と比べると、リフレクションの精度の差がはっきりと分かります。ただし、これらの方法ははるかに負担が軽く、それほど精度が必要ない場合には、常に使用するようにします。

スクリーンスペースリフレクションは、深度マップ上の反射位置から他の面へのレイマーチングによって計算されます。反射ベクトルは、深度バッファ 内の各反射点について計算されます。このベクトルは、交点が深度バッファ上の別の点といっしょに見つかるまで段階的に進みます。この2番目の点は、反射として元の点に戻されます。

Iteration Count を減らすと、レイが深度バッファに対してテストされる回数が減り、コストが大幅に削減されます。 ただし、そのようにすると、テストする全体の深さが短くなり、反射が短くなります。Step Size を大きくすると、これらのテストの間隔が広がり、全体の深さは元に戻りますが精度は低下します。

__Blend Type を Physically Based __ に設定すると、反射マテリアルの BRDF (双方向反射率分布関数) がサンプリングされ、その結果の反射を変更します。この処理は高価ですが、特に、粗い表面でよりリアルな反射を表現できます。

Reflect Backfaces を使用すると、このエフェクトもまた、オブジェクトの背面の反射を近似しようとして反対方向にレイトレースします。 この処理はエフェクトのコストを大幅に増加させますが、反射するオブジェクトの他のオブジェクトの前方に映す近似の反射を得るために使用されます。

要件

対応するハードウェアと詳細な情報は グラフィックハードウェアの性能とエミュレーション を参照してください。


  • 2017–05–24 編集レビュー 無しにパブリッシュされたページ

  • 5.6 の新機能

Motion Blur
Vignette