PBRとSSRの違いは何ですか?


11

私はゲーム開発に非常に慣れていないため、スクリーンスペースリフレクションと物理ベースレンダリングの違いを理解しようとしています。

私はPBRについて読みましたが、私が理解していることから、それは実際の光がどのように反射するかを模倣しようとします。

SSRに関しては、私が間違っている場合はplsで修正されます。これは、表面での反射の見え方です。

SSRの私の理解が正しい場合、それらは同じ方法ではないでしょうか?つまり、表面の粗さなどに依存する表面での反射の見え方ではありません。これは、鏡面反射する光の量と乱反射する量に影響します。繰り返しますが、間違っているところはどこでも修正してください。

回答:


17

物理ベースのレンダリング

「実際の光がどのように反射するかを模倣しようとします。これは通常、マテリアルのタイプに応じて鏡面反射と拡散の2つのコンポーネントに分割されます。」

しかし、私たちは長い間、スペキュラーとディフューズを使ってゲームやコンピュータグラフィックスでマテリアルをモデリングしてきました。トリックは、これらを完全に独立したものとして処理するために使用されていたことです。鏡面反射性を変更しても、拡散は変更されませんでした。

ゲームで一般的に使用されるフォンシェーディングの例

これはBlender wikiのPhongシェーディングの 例です。鏡面反射光強度と鏡面反射光硬度の2つのパラメーターが提供され、これらのパラメーターは反射の白っぽい部分のみを変更することがわかります。青い拡散反射はまったく変わりません。

ゲームがこれを使用する方法は、アーティストが「正しく見える」まで、各マテリアルのこれらの値を手動で調整することを課せられます。「鏡面硬度」は、私たちが正確に測定できる物質の実際の物性ではないため、目視で測定する必要がありました。

この方法は少しもろいです。イルミネーションを変更すると(たとえば、動的なオブジェクトがさまざまな領域を移動する場合や、時間帯や天気が変化する環境で)、表示条件が鏡面反射光パラメータが調整されたもの。

物理ベースのレンダリングを入力してください。これは、実際のサーフェスのより客観的で測定可能なプロパティにマテリアルの説明を追加する試みです。最も明白な特性の1つはエネルギーの節約です。粗い表面は光を乱反射し、滑らかで金属的な表面は光をより直接的に反射しますが、両方とも同じ光のプールです。したがって、他の条件が同じであれば、マテリアルをより光沢のあるものにすると、拡散コンポーネントが暗くなるはずです。

一定のアルベドで反射率を上げる例

この例は、Syntac_が最初に共有したPBRを説明するマーモセットの記事からのものです。

物理ベースのレンダリングにはエネルギー保存以上のものがありますが、これはおそらく、物理ベースのシステムで作業していることを示す最も明確な兆候です。

反射モデルを現実のマテリアルの動作と同様に保つことにより、ファッジファクターやアーティストの主観の必要性を減らし、木材、コンクリート、革などの現実のマテリアルをさまざまな照明条件下でリアルに見せます。

別の回答では、シーン内の他のオブジェクトで跳ね返る光からの間接照明についてこれを説明していることに注意してください。物理ベースのモデルを使用する多くの照明システムには、これをモデル化するためのツールも含まれますが、これは通常、グローバルイルミネーションという別の名前で知られています。これは、この画像のディフューズヘッドの片側が緑色に見え、緑色の壁で跳ね返る光に照らされている効果です。

一般的なグローバルイルミネーションテストシーンの例

グローバルイルミネーションに関するこの記事の画像

画面スペースの反射

PBRはマテリアルがどのように光を反射するかをモデル化しようとしますが、スクリーンスペースリフレクションは反射されているものをキャプチャしようとします。具体的には、光沢のある鏡のような表面の場合、反射で何を見るべきですか?

繰り返しますが、これは比較的最近のレンダリング手法であり、ゲームが以前にそれを行った方法とは対照的に、おそらく最も明確に理解できます。

反転レンダリング -水平面またはフラットミラーによくあることですが、文字通りすべての反射されたジオメトリを反射面の平面全体にミラーリングしてもう一度レンダリングします。これにより、高品質の反射(完全なディテール、反射と一致するサーフェスと接触するオブジェクト)が得られますが、正しく機能するのは平面の場合のみです。サーフェスの波状またはでこぼこの数が多いほど、これが実際の反射のように振る舞うことが少なくなり、複雑な方法で歪んだりぼやけたりするはずです。

キューブマップ -中心点から放射するビューレイから見える色を保存します。シーン内の選択されたポイントからキューブマップを動的にレンダリングすることにより、任意の曲面から反射される色を推定できます。ここでの問題は、立方体マップがその中心点でのみ完全に正しいことです。反射をシミュレートしているポイントがシーン内を移動すると、立方体マップには存在しない視差が表示されるはずです。これは、オブジェクトが反射と整列する傾向がないことを意味します。

スクリーンスペースリフレクションは、レンダリングされたシーン自体をリフレクション情報のソースとして使用することにより、これらの制限に対処しようとします。この線行進それがレンダリングされたシーンで何かを交差するまで、シーンの深度を使用して、反射ビュー線、。

サイドビューダイアグラムで画面スペースの反射を説明するスライド

ここだ凍傷エンジンでの反射へのアプローチについてのEA DICEのプレゼンテーションからスライドを

これは、(いくつかのスマートアルゴリズムの作業により)ゲーム内の任意のサーフェスから適度にレイトレーシングのような正確さで反射を取得できることを意味します。サーフェスの反射部分が表示されている限り、接触、歪み、ぼかしが正しく行われます。 -画面(つまり、画面外に表示されたり、他のものによって遮られたりしない)。反射がレイマーチングによって正確に決定できない場合、通常は、近くのサンプルまたはカメラのビューの横または背後のシーンを表すフォールバックキューブマップを使用して近似されます。

スクリーンスペースリフレクションを使用したサンプルプロジェクト

この画面スペースの反射の例では、小さなエラーが目立ちますが、印象は非常に説得力があります(レンダリングされたフレームには表示されず、単に隣接するピクセルを塗りつぶして繰り返すだけである、キューブの下側の反射を参照してください)。または、レイマーチングが正しい反射ピクセルを見つけることができなかった、植木鉢の横と画面の下部にある右側の緑のカーテンの反射の穴。このテクニックを適度に光沢のある/わずかに粗い表面に使用して、偶発的なエラーを目立たなくするのが一般的です。


回答ありがとうございます。これはまさに私が知りたかったことです。
Kumaresan Sandran

好奇心旺盛な方のために、「キューブの下側の反射を見る」問題を解決するための、半高度で直感的な方法に関する2015年のペーパーがあります。ペーパーを参照してください:「量子ブレークにおけるマルチスケールグローバルイルミネーション」
Sirisian

1

それらは実際には関連していません。

Marmosetからのこのドキュメントは、多くの数学を呼び出さずにPBRをよく説明しています。

一方、スクリーンスペースリフレクションは、リアルタイムのリフレクションをレンダリングするために使用されるポストプロセススクリーンスペーステクニックです。一般に、キューブマップを各フレームにレンダリングするよりもはるかに安価ですが、見た目が悪く、画面外のオブジェクトを反射できません。


1
ただ... 2018年から訪れる人のために、リンクを更新するためにここに来たmarmoset.co/posts/basic-theory-of-physically-based-rendering
SWS

@swsが乾杯を更新しました。
Syntac_
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.