サーフェス: シーンのすべてのメッシュのすべての三角形をまとめて、シーンの サーフェス と呼びます。サーフェスポイントはシーンで定義された任意の三角形の1 つの頂点を言います。
放射光: シーンのサーフェスに直接放射された光
直接ライト: 放射され、シーンのサーフェスに当たってからセンサー (例えば、目の網膜やカメラ) に反映されるライト。ライトの直接的な影響とは、ライトからセンサーに達するすべての直接ライトのことです。
間接ライト: 放射され、少なくとも 2 回シーンのサーフェスに当たってから、最終的にセンサー (例えば、目の網膜やカメラ) に反映されるライト。ライトの間接的な影響とは、ライトからセンサーに達するすべての間接ライトのことです。
粗いサーフェスは、入射光を多くの方向に散乱させ、ライトが直接照らさないサーフェスを照らします。シーンのサーフェスが粗いほど、そのような影の範囲が明るくなります。以前は、追加のアンビエントライト色を 1 つ定義し直接ライティングの結果に単に加えただけでこの効果を近似して、影の表面が真っ黒に見えないようにしていました。より洗練された近似では、グラデーションを使用してサーフェスの向きに応じて異なるアンビエントライト色をシミュレートしたり、球面調和を使用してさらに複雑な アンビエントライティング を行います。
滑らかなサーフェスまたは光沢のあるサーフェスは、入射光の大部分を予測可能な方向に反射し、マテリアルに目に見えるハイライトを作ります。光沢のあるサーフェスの極端な例は鏡で、1 方向からのすべての入射光が正確にもう 1 つの方向に反射されます。光沢のある反射のバリエーションとして半透明マテリアルがあり、入射光が再びマテリアルに入り出るときに、入射光を屈折させます。
間接ライティングの場合、ライト経路にはシーンのサーフェスとの相互作用が少なくとも 2 つあります。これらの相互作用は、光沢のある表面反射、および/または、粗い表面反射の組み合わせです。例えば、粗い表面に当たった光沢のある反射/屈折は、周囲の物体の表面に独特の光の模様や筋などの コースティクス と呼ばれる模様を表示します。粗い反射面に当たった光が別の粗い面に当たることを、通常、アンビエントライティング と呼びます。
ライトは、シーンのサーフェス上で複数回反射する性質を持つため、正しい解決策を得るには、すべてのサーフェスマテリアルのプロパティーと、すべての関連する経路のライトの相互作用を含めてシーン全体を考慮する必要があります。 そういうわけで、グローバルイルミネーション と呼ばれます。
レイトレーシング は、コンピューターグラフィックスでこの問題を解決する非常に洗練された方法で、現実の世界で実際に起こっていることをシーンを通るレイの経路をたどることによってシミュレートしようとします。映画業界は現時点で、画像の生成に関しては、完全にレイトレーシングに移行しています。
残念ながら、レイトレーシングは、ほとんどのリアルタイムグラフィックスでは、まだ遅すぎて使用できません。ラスタライズ が画像を生成する標準的な方法です。 レイトレーシングとは異なり、ラスタライズではシーンを通る任意のレイの経路をたどることができません。実際、ラスタライザーはレイの経路の 1 つのセグメントを計算することしかできません。このため、リアルタイムグラフィックスのライティングが複雑になります。
ラスタライザーはレイをたどれないので、リアルタイムライティングでは、ライティングのもっとも視覚的な影響がある部分に専念します。それは放射で、より一般的にいうと直接ライティングです。この場合であっても、ライトの経路は既に、カメラからサーフェスへと、サーフェスからライトへの 2 つの部分から成り立っています。
最初の部分は、カメラの位置からレンダリングされたビューです。第 2 の部分を計算するために、シャドウマッピング のような技術が使用されます。シャドウマップは影を投げる各ライトに特有であるため、それぞれに一意のシャドウマップを生成する必要があります。影を投げるライトが多く存在するほど、より多くのシャドウマップを生成する必要があります。ライトの数によっては、必要なレンダリング時間が長くなりすぎることがあります。シャドウマップのもう 1 つの欠点は、解像度が限られていることです。これはぼんやりした影になる原因になります。したがって、シャドウマップには解像度が限られているため画質の問題、そして、シャドウマップを格納するメモリ要件と、フレームごとにシャドウマップを生成するために必要な時間に起因するパフォーマンスの問題、があります。
オフラインレンダリングとは異なり、ゲームはフレームのレンダリングに費やす時間に厳しい制限があります。例えば、VR アプリケーションは、毎秒 90 フレーム (FPS) を達成するためには、フレームの描画に 11.11 ミリ秒と制限されています。プレイヤーの速い反応が期待されるゲームでは、60 FPS を達成するためには、フレームの描画に 16.66 ミリ秒です。30 FPS を目標とするゲームは 33.33 ミリ秒です。これらの時間には、アプリケーションやゲームの残りの部分 (AI や物理など) の計算も含まなくてはなりません。したがって、システムを最大限に活用するために、すべてをできるだけ効率的にすることが重要です。すべてのレンダリングは、フレームの間の時間よりも短時間で行われる必要があります。
要約すると、対処する必要がある 2 つの主要な問題は以下のとおりです。
直接ライティングのために影を計算することに起因するパフォーマンスのペナルティに対処する方法。
間接ライティングを扱う方法 (実際の意味は直接ライティングも含みますが、リアルタイムグラフィックスのコンテキストでは、グローバルイルミネーションは間接ライティングと同義です)。
2017–06–08 限られた 編集レビュー でパブリッシュされたページ
Light Modes を 5.6に追加