Cyberpunk 2077 #2 Realtime Raytracing

TL;DR
Ray-Traced Reflectionsのみを有効にするのがオススメ。

Ray-Traced Reflections

鏡面反射による周囲の映り込みがレイトレースで処理されるようになる。
これまでのラスタライズでは、環境マッピングやScreen Space Reflectionsなどで映り込みが処理されていたのだが、どの方法も一長一短で前者はリアルタイムでのデータ更新が難しく、後者は視界外の物体は映り込みようがないという欠点がある。リアルタイムで現実的に実行できるようになったレイトレースではこういった欠点は無く、原理的に視界外や遮蔽された動的な物体の映り込みを実現できる。

Ray-Traced Reflections ON:

Ray-Traced Reflections OFF (Screen Space Reflections):

比較:

しかし、Cyberpunk 2077はパフォーマンスの都合上なのか、Ray-Traced Reflectionsにおいてもキャラクターなどの動的な物体は視界外に出るとカリング(非表示)されてしまうようだ。折角のレイトレースである恩恵が一つ無くなってしまっている。
以下は、Ray-Traced Reflectionsが有効な状態で上記の図のカメラを下にパンしてキャラクターを視界外にしたときの図だが、キャラクターは消えて持っているバットだけが宙に浮いて映り込んでいる。

また、Cyberpunk 2077ではRay-Traced Reflectionを有効にすると、Screen Space Reflectionsは必要なくなるため、適用されなくなる。そちらの設定を変更しても見た目やパフォーマンスに変化は無い。

Ray-Traced Shadows

影(落ち影)がレイトレースで処理されるようになる。
具体的にはソフトシャドウが距離が遠い物体の影はよくぼけて、近くの物体の影はあまりボケなくなる。これまでのShadow Mapでもそういう距離に応じたソフトシャドウ処理はあるのだが、Ray-Traced Shadowsでは”パラメータが適切であれば”、以前の方法よりも理にかなった影になる。

Cyberpunk 2077ではおそらく平行光源のみ、通常は太陽光のみがRay-Traced Shadowsで処理されているようで、スポットライトなどの局所的な光源によって生じる影は変化が無く、適用されていないように見える。

Ray-Traced Shadows ON:

Ray-Traced Shadows OFF (Shadow Map):

上の図は太陽光からの影だが、この影は主観的な感覚ではボケ過ぎているようにも見える。太陽光のレイトレースでのソフトシャドウは地球からの見かけ上の太陽の大きさによって影のボケ幅は変わってくるが、それが適切に設定されているのかどうかは解析しないと分からない。基本的にShadow Mapよりもディティールが失われがちなので、個人的にはShadow Mapの方が好みの状況が多い印象だ。

Ray-Traced Lighting

これは実際に内部処理を覗いてみないと確証が無いのだが、恐らく間接照明(Indirect Illumination)と遮蔽(Ambient Occlusion)がレイトレース処理されるようになると思われる。
これまでのラスタライズでは、間接照明はライトマップやSHなどの事前計算によるものと、最近ではさらにいくつかリアルタイムな方法を組み合わせている。遮蔽も事前計算やリアルタイムなScreen Space Ambient Occlusionなどを組み合わせていて、いずれも一長一短である。レイトレースでは間接照明も遮蔽も正攻法で求めることができる。

Ray-Traced Lighting ON:

Ray-Traced Lighting OFF:

比較:

間接照明は、特に電光板の発光体の照り返しが分かりやすく、遮蔽は車両の下が分かりやすいだろう。こちらも、Ray-Traced Lightingが有効になっている場合、Screen Space Ambient Occlusionは適用されなくなるようだ。

個人的には、Ray-Traced Lightingの有無で”より正確な”ライティングに切り替わっているかどうかというのは、Ray-Traced ReflectionsやRay-Traced Shadowsに比べて気が付きにくい。直接照明が間接照明よりも支配的な状況ではその影響度はさらに小さくなるだろう。
また、例えばJudyのバンに乗り込んだ時に遭遇したが、予期していない発光体と光源の所為か、明らかに不自然なライティングになっているシーンも見られた(画像無し…)。

Cyberpunk 2077 #1 DLSS

ものすごく久しぶりの旬でハイエンドな一人称ゲームなので没入感が凄い。

DLSSは、サブピクセルのないイメージからDeep Learningに推論させてSuper Sampleする技術だ。
単純にイメージに適用するとアンチエイリアスが期待できるが、ゲーム的な使い方としてレンダリング解像度を下げた状態でレンダリングしてパフォーマンスを稼ぎつつ、実レンダリング解像度にアップスケーリングするときにDLSSを適用することで通常のアップサンプルフィルタよりも高いクオリティを期待できる。Cyberpunk 2077でもそのように使用されているようだ。

実際のところ、Cyberpunk 2077のDLSSは一見してアップスケーリングしているのか分からないようなクオリティであるが、解像度の低い不完全な情報からの推論である以上完璧にはならないし、状況によっては人間の目を誤魔化せないエラー(正解との差)が生じることもある。

これが一番分かりやすいのは、一番最初のキャラクター作成画面だろう。このゲーム特有の画面であり、あまり訓練されていない苦手なシチュエーションだと思う。
プレイしていると動画越しに画面を見ているような感じがして、肌のテクスチャ解像度が不足しているのかと思ったが、さすがに最新のゲームだしそんなことはないだろうと困惑しつつDLSSを切った。

DLSS ON:

DLSS OFF (Ground Truth):

特にヒゲの剃り跡や髪の刈り上げの部分が分かりやすいが、明らかに解像度の不足した結果になっているのが見て取れる。

原寸大比較:

 

では、実際のインゲームではどうかというと、エラーが気になるシチュエーションもあれば、それほど気にならない十分なシチュエーションもある。
エラーが気になる状況は主にオブジェクトやカメラに動きがあるシーンだ。推論に前フレームの情報も使用されているのだと思うが、画面に動きがあるとそれが欠落しやすいので、Deep Leraningによって生成した画像特有の独特な揺らぎのようなノイズが生じやすい。また、反射が強く周囲で細かい変化が多いシチュエーションも苦手なように見える。

特に、ゲーマーが嫌いそうなMotion BlurやChromatic Aberrationなど画面をはっきり見せないようにする、つまり粗を誤魔化せる類のエフェクトを切っているとDLSSのエラーは露見しやすい。

次の画面は、左右に動きながら撮影したものだ。

DLSS ON:

DLSS OFF (Ground Truth):

原寸大比較:

それでも、DLSSは圧倒的にパフォーマンスに恩恵をもたらすので、エラーを許容できる人にとっては有効だろう。