In-house Engineでこれと戦わなきゃいけないってマジ?
PlayStation5 上で動作している Unreal Engine 5 のデモが発表されたので、この時点で感じたことなど覚えておくためにメモ。
目玉は動的GIシステムLumenと微細ジオメトリのレンダリングを実現するNanite。
www.unrealengine.com
Lumen (動的GI)
動的なGlobal IlluminationシステムでDiffuse及びSpecular間接光をレンダリングする。
動的なライトは最近のGIだと半分当然のようなところがあるが、動的なジオメトリはどこまでサポートされるのか気になる。
レイトレハードウェアは使ってないらしいのでCompute Shaderによるものか、EnlightenのようにCPU側で非同期計算する方式なのか。
Nanite (仮想化マイクロポリゴンジオメトリ)
Texture-StreamingのようにジオメトリをStreamingし、ピクセルレベルのジオメトリ描画を可能にする。
デモでは10億Triを超えるソースジオメトリを、Naniteが適切にコントロールして2000万Triのジオメトリを描画しているらしい。DCCツールでの特別な作業は不要で、ZBRushなどで作ったものをそのままインポート可能。
いままでNormalMapで表現していたディティールをジオメトリによって直接表現する。
LoDもNaniteがやってくれる。
流体シミュレーション
さらっと流されたけど流体シミュレーション。
Chaos
スカーフのClothシミュレーションや落石にはChaosを使用。
アニメーションシステム
複雑な環境に適応した動きのために手足の適切な位置を予測して動的に調整している。
シームレスなコンテキストベースのアニメーションイベント(よくわからない)。
デモ中の扉に手を添える動きに使われているとのこと。
感想
NormalMapレベルの凹凸をジオメトリで表現してしまえというEpicの解答。Nanite向けのデータを作るためにワークフローが大きく変わりそう。
現代のリアルタイムレンダリングではジオメトリよりも微細な凹凸をNormalMap、更に細かい法線分布のためにRoughnessMapが使われているが、NormalMapが担っていた領域をジオメトリで表現できるようになるとそのあたりの役割も変わってくるのだろうか。
RoughnessMapよりも更に細かいナノスケール表面構造を表現するStructuralMapが使われるようになって構造色レンダリングされるようになったり?
ja.wikipedia.org
あと大したことでは無いけれど気になったのが、3:50付近で右肘の下あたりの水面に一瞬 Screen Space処理っぽい動きが見えた点。肘の動きに合わせて水面のなにかが動いているように見えるけど、部分的に Screen Space Local Reflection をしていたりするのだろうか?(そもそも気のせいかも)
こんな恐ろしいものが出てくる時代でこの先生きのこることができるのか。
5/15追記
UE5デモの技術解説
www.eurogamer.net
一部が削除されたらしいので画像で残しておく