一部のゲームでは、壁を通して光が輝いているのはなぜですか?


28

一部のゲームでは、ビデオの品質を高レベルに設定しても、壁を通して光が輝いています。

最近プレイしたゲームの例としては、Borderlands 2(ミサイル爆発)とCall of Cthulhu(ランタン。ゲームではUnreal Engine 4も使用されています)があります。

これはバグですか、パフォーマンス上の理由がありますか?

Borderlands 2:の例:https : //youtu.be/9bV83qA6_mU?t=419(数回ですが、すぐに)

ボーナスの質問:後者の場合、問題を解決するためにレイトレーシングを安価に使用する方法はありますか?高価なRTは間違いなく問題を解決したと思いますが、この特定の問題を解決するために「安価な」形式で使用できるのではないかと思います。


21
写真は1000語の価値があります。
エヴォラー

8
私はテストするために遊びに行かなければなりませんが、それは実際にが漏れているのですか、それとも光る粒子効果でしょうか?特にあなたのミサイル爆発の例では、衝突を無視する可能性が高い付加的な「火」粒子効果を想像できます。ランタンも目に見えるハローを作成するために同じことをすることができた、と思う...
AC

@Evorlorは1つの例を追加しました。
マーカス

回答:


43

TomTsagkの正しい答えを拡張して、ゲームがこのように機能する理由についてもう少し説明するのに役立つと思いました。

ゲームの光は、実際には光源から表面、カメラに「移動」せず、途中で遮られます。

与えられた光に基づいて表面の各ピクセルをどれだけ明るく描画するかを把握するために、表面の向きと表面上のこの点から光源への方向を使用する数式を使用(または近似)します。それだけです、それが輝いている方向だけです。通常、光線が実際にこのピクセルに到達するかどうかを確認するために光線を投じません。なぜなら、画面上のすべてのピクセルに対してそれを行い、通常、リアルタイムゲームにはまだ高すぎます。

そのため、デフォルトでは、ゲームライトは影を落としません。ライトへの方向は、シャドウキャスターが邪魔になっても同じままなので、数学から同じ明るさの値が得られます。

影をシミュレートする場合は、個別に行う必要があります。一般的な方法の1つに、シャドウマップと呼ばれるものがあります。このバージョンでは、シーンをシェーディングする前に、各ライトの視点からシーンをレンダリングします。あたかもそのライトがカメラであるかのように、表示される各ピクセルの深度をオフスクリーンテクスチャに保存します。

次に、シーンをシェーディングするときに、光源からのこのピクセルの数学的距離と、シャドウマップの対応するピクセルで記録した深度を比較できます。シャドウマップの深度が小さい場合、こことライトの間に別の表面があることを意味し、代わりにこのピクセルをシャドウに描画します。

これらのマップベースの影をより美しく見せるために、アーティファクト/エイリアシングを少なくするためのクールなテクニックがたくさんありますが、ここではそれらについて説明します。それは言うに足ります、彼らは一般に無料でもありません。

これには、各ライトの視点からシーン全体を(最大)レンダリングする必要があります。すべての方向{北、南、東、西、上、下}を照らすポイントライトの場合、最大6回です。 -何かが動くたびにシャドウマップをレンダリングします。これは非常に高価になる可能性があります。

そのため、ゲームでは、レンダリングの予算をシーン内の最も重要なライト(指向性太陽光など)に集中させて、見栄えの良いシャドウを確保することがよくあります。爆発物のフラッシュのような小さく、短命で、マイナーなライトは、オクルーダーを少し過ぎて漏れる場合、しばしば許されます。多くの場合、これはすべての余分なシャドウマップのレンダリングと計算によるレンダリングコストの急激な増加により、フレームレートの問題よりもプレイヤーにとってより好ましいものです。特に、ピクセルの完成度よりも流動性が重要な忙しいアクションシーンの場合。


3
別のしわは、光源がサーフェスの前にあるのか後ろにあるのかを把握するのは簡単ですが、背後から照らされたときにサーフェスが光らないようにすると、奇妙な結果になることがよくあります。
スーパーキャット

そして、これはパーティクル効果(特に、少なくとも部分的には爆発)の場合に特に当てはまります。なぜなら、パーティクルは非常に有用であるために、取り扱いが特に安価である必要があるからです。
ルアーン

2
ライトとパーティクルは2つの異なるものです。パーティクルは障害物を「漏れる」こともありますが、理由はまったく異なります。パーティクルシステムには、エフェクトの販売に役立つライト(キャンプファイヤーやホタルの群れなど)が含まれることもありますが、パーティクルエフェクト内のライトは単なるライトであり、通常は特別なバリアントではありません。
DMGregory

2
シャドウマップへの代替アプローチはシャドウボリュームであり、これはエイリアシングの問題を修正しますが、より高価です:追加のジオメトリ(各光源の各オブジェクトのシルエットエッジごとの新しいポリゴン)と追加のレンダリングパスが必要です。ただし、ほとんどの場合、マッピングアプローチで十分であると思われます。
ダースフェネック

22

要するに、これはパフォーマンス上の理由で起こります。

画面にライトがある場合、デフォルトではすべてのオブジェクト(遮られているかどうかに関係なく)を照らすため、ゲームはどのオブジェクトが何によって影響を受けるかを確認するために追加の計算を行う必要があります。

これは、静的およびベイク処理された照明を使用することにより、静的オブジェクトで簡単に解決できますが、これは、先ほど説明した爆発のような動的ライトでは同じではありません。

ボーナスの質問については、レイトレーシングとチープは同じ文で一緒に行くことはできません。レイトレーシングがこれまで主流にならなかった唯一の理由はパフォーマンスです。すべてのライトがレイトレーシングを使用すると仮定すると、この問題は「解決」されますが、パフォーマンスが犠牲になります。


6
それでは、レイトレーシングはリアルタイムゲームよりもCGIムービーにとって重要なのでしょうか?
蓄積

21
@Acccumulationそれは正しいです。ムービーの1フレームのレンダリングには数時間かかる場合がありますが、ゲームにはミリ秒しかありません。
NobodyNada-モニカの復職

16
とは言うものの、ゲームでは、レイトレーシングやレイマーチングをラスタライズ手法と組み合わせて使用​​することで、ラスタライザが得意なことを実行し、レイが得意なことを実行できるようになりつつあります。それはすべてのピクセルの完全なレイトレーシングではありませんが、それでもいくつかの素晴らしい効果を得ることができます。
DMGregory

2
@DMGregory確かに、Duke Nukem 3Dのようなゲームは、レイトレーシングの非常に単純化されたバリアントを既に使用しています-ダイナミックライティングには使用されませんでしたが、画面上のすべてのピクセルを明確にトレースしませんでした(通常、各列に対して行われました)および反射と透明度は、デフォルトではなく特別な場合でした。ソフトウェア3Dレンダリングは、常に同様のアプローチでプレイされてきましたが、その道を閉ざしたのはハードウェア3Dでした(現在まで)。
ルアーン

@Acccumulationレイトレーシングにはさまざまなレベルがあります。そのため、ゲームはラインハードウェア上でプライマリレイを発射できますが、ピクセルごとに十分なセカンダリバウンスまたは複数のバウンスを行うことはできません。そのため、レイトレースを行ったとしても、このようなパフォーマンスのトレードオフがまだあります。したがって、メインライトをトレースする能力は、すべてのセカンダリライトをレンダリングする余裕があるという意味ではありません。
joojaa
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.