反射は、シーン内の接地オブジェクトにライトを適用することで、現実味あふれる環境を実現するための重要な要素です。リアルタイム 3D では、反射を作成する上で マテリアル の設定が重要になります。低いラフネス値のマテリアルでは、サーフェスが事実上反射的になります。これが、鏡のようなサーフェスと、艶消しが施されたメタルなどを作成する場合との違いとなります。
Unreal Engine には、プロジェクトで使用可能な複数の専用反射システムが備わっています。これらのシステムの一部は互いに併用することや、その他の反射手法よりも優先して独自に使用することができます。プロジェクトで有効にする反射のタイプを選ぶ際は、達成したい品質とリリース対象のターゲット プラットフォームを主に考える必要があります。反射システムによっては、パフォーマンス コストが高すぎるものや、特定のプラットフォームのみに対応するもの、またはハードウェアが限定されているものがあります。
反射のタイプ
プロジェクトの作成時には、プロジェクトで動的反射が必要になるかどうか、達成すべき品質のレベル、リリース対象のターゲット プラットフォームで動的反射がサポートされるかどうかを考慮する必要があります。
たとえば、静的反射キャプチャと動的スクリーン空間反射ポストプロセス エフェクトとを組み合わせて使用する方法はほとんどのプラットフォーム向けにうまく機能し、レンダリングの速度も速くなりますが、その性質からレンダリング アーティファクトが生じます。ただし、Lumen グローバル イルミネーションおよび反射、またはレイトレーシングによる反射では、シーン内の接地オブジェクトに対してライトと反射をより正確にエミュレートできますが、レンダリング コストが高くなります。また、すべてのプラットフォームでサポートされるわけではありません。
利用可能な反射システムでは、次のタイプの反射とプラットフォームがサポートされます。
反射システム | 反射のタイプ | 対応プラットフォーム |
---|---|---|
Lumen の反射 | 動的 | ハイエンドなデスクトップ PC と次世代コンソール |
レイトレーシングによる反射 | 動的 | Windows 10、DirectX 12、サポートされるNVIDIA GPU を搭載したデスクトップ PC システム |
スクリーン空間の反射 | 動的 | デスクトップとコンソール |
反射キャプチャ | 静的 | すべてのプラットフォーム |
平面反射 | 動的 | すべてのプラットフォーム |
Lumen の反射
Lumen の反射 は、ソフトウェアまたはハードウェアベースのレイトレーシングのいずれかを使用してシーンの反射を生成する Lumen グローバル イルミネーションおよび反射システムの一部です。Lumen ではさまざまな手法を組み合わせて使用し、ソフトウェア レイトレーシング モードを使う際には画面トレースを通じてシーンを正確に表現します。ハードウェア レイトレーシング モードが有効な場合は、反射に既存のレイトレーシング アーキテクチャを利用しますが、運用にはサポートされる NVIDIA GPU が必要になります。


詳細については、「Lumen のグローバル イルミネーションおよび反射機能の概要」を参照してください。
レイトレーシングによる反射 (Ray Tracing Reflections)
このレイトレーシング機能は非推奨となっており、今後のリリースで削除される可能性があります。
ハードウェア レイトレーシングによる反射 では、レイトレーシング技術を使って正確な環境表現におけるライトの動作をエミュレートし、複数回の反射バウンスをサポートします。Unreal Engine でレイトレーシングを使用するには、サポートされた NVIDIA GPU と、DirectX 12 対応の Windows OS が必要です。


詳細については、「Hardware Ray Tracing」を参照してください。
スクリーン空間の反射 (Screen Space Reflections)
スクリーン空間の反射 (SSR) は、画面に表示されているものの反射のみに限定された動的ポストプロセス エフェクトです。画面外のオブジェクトや、画面上のオブジェクトでオクルードされたオブジェクトはスクリーン空間の反射では表現できず、反射にレンダリング アーティファクトが生じる場合があります。

詳細については、「スクリーン空間の反射」を参照してください。
Reflection Capture (反射キャプチャ) アクタ
反射キャプチャ アクタは、反射プローブが設置された領域の低コストの静的キャプチャです。これらはランタイム前に計算されるため、その多くはパフォーマンスへの影響なしにレベルに配置することができます。

反射キャプチャには、ボックス (Box) と 球体 (Sphere) の形状の 2 種類があります。反射キャプチャでは、その中心を囲む環境の画像をキャプチャし、それを反射キャプチャの形状にマッピングします。反射キャプチャは他のものとオーバーラップおよびブレンドすることができ、大きなキャプチャとともに配置して特定の領域を囲むことや、小さなキャプチャとともに、サーフェス上のより定義された静的反射に使用することができます。
詳細については、「反射キャプチャアクタ」を参照してください。
平面反射
平面反射 はサーフェスに沿って配置可能なアクタで、シーンの正確で動的な反射を作成します。シーン内では、反射の方向からレベルを再レンダリングします。この反射方法は高負荷となる可能性がありますが、正確な反射を表現でき、すべてのプラットフォームでサポートされています。


詳細については、「平面反射」を参照してください。
質の高い反射
反射品質のデフォルト設定ではパフォーマンスとビジュアル品質のバランスをうまく保つことができますが、パフォーマンスを気にせずにより高品質の反射を追求できるプロジェクトでは、[High Precision Normals (精度の高い法線)] GBuffer を使用できます。
正確な反射を作成するためには、頂点法線とタンジェントを正確に表現することが重要な要因となります。高密度のメッシュは、隣接している頂点を同じ頂点法線と接線値に量子化することになり、法線方向でのブロック ジャンプを引き起こします。法線と接線をチャンネル ベクターごとに 16 ビットとしてエンコードすることで、デベロッパーは品質と、頂点バッファのエンコードによるメモリの追加使用量との間でトレードオフできるようになります。


反射で精度の高い法線を使用するには、次の設定を行う必要があります。
-
[Project Settings (プロジェクト設定)] で [Engine (エンジン)] > [Rendering (レンダリング)] > [Optimizations (最適化)] に行き、[GBuffer Format (GBuffer 形式)] を [High Precision Normals] に変更します。
-
任意のスタティック メッシュ アセットを開いて、スタティック メッシュ エディタの [Details] パネルから [LOD 0 (詳細度 0)] > [Build Settings (ビルド設定)] に行き、[Use High Precision Tangent Basis (高精度タンジェント ベースを使用)] を有効にします。