UE5の発表についてのメモ

In-house Engineでこれと戦わなきゃいけないってマジ?

PlayStation5 上で動作している Unreal Engine 5 のデモが発表されたので、この時点で感じたことなど覚えておくためにメモ。

目玉は動的GIシステムLumenと微細ジオメトリのレンダリングを実現するNanite。
www.unrealengine.com

Lumen (動的GI)

動的なGlobal IlluminationシステムでDiffuse及びSpecular間接光をレンダリングする。
動的なライトは最近のGIだと半分当然のようなところがあるが、動的なジオメトリはどこまでサポートされるのか気になる。
レイトレハードウェアは使ってないらしいのでCompute Shaderによるものか、EnlightenのようにCPU側で非同期計算する方式なのか。

f:id:nagakagachi:20200514071027p:plain
LumenによるGI有効
f:id:nagakagachi:20200514071116p:plain
GI無し

Nanite (仮想化マイクロポリゴンジオメトリ)

Texture-StreamingのようにジオメトリをStreamingし、ピクセルレベルのジオメトリ描画を可能にする。
デモでは10億Triを超えるソースジオメトリを、Naniteが適切にコントロールして2000万Triのジオメトリを描画しているらしい。

f:id:nagakagachi:20200514070258p:plain
もはやノイズにしか見えないトライアングル群
DCCツールでの特別な作業は不要で、ZBRushなどで作ったものをそのままインポート可能。
いままでNormalMapで表現していたディティールをジオメトリによって直接表現する。
LoDもNaniteがやってくれる。

Niagara

エフェクト以外にもコウモリや蟲の群れなどにもNiagaraを利用している。
パーティクル同士の通信や環境の知覚などもできるらしい。
f:id:nagakagachi:20200514072020p:plain

流体シミュレーション

さらっと流されたけど流体シミュレーション。
f:id:nagakagachi:20200514072246p:plain

Chaos

スカーフのClothシミュレーションや落石にはChaosを使用。
f:id:nagakagachi:20200514072548p:plain

アニメーションシステム

複雑な環境に適応した動きのために手足の適切な位置を予測して動的に調整している。
f:id:nagakagachi:20200514072711p:plain

シームレスなコンテキストベースのアニメーションイベント(よくわからない)。
デモ中の扉に手を添える動きに使われているとのこと。
f:id:nagakagachi:20200514073309p:plain


感想

NormalMapレベルの凹凸をジオメトリで表現してしまえというEpicの解答。Nanite向けのデータを作るためにワークフローが大きく変わりそう。
現代のリアルタイムレンダリングではジオメトリよりも微細な凹凸をNormalMap、更に細かい法線分布のためにRoughnessMapが使われているが、NormalMapが担っていた領域をジオメトリで表現できるようになるとそのあたりの役割も変わってくるのだろうか。
RoughnessMapよりも更に細かいナノスケール表面構造を表現するStructuralMapが使われるようになって構造色レンダリングされるようになったり?
ja.wikipedia.org


あと大したことでは無いけれど気になったのが、3:50付近で右肘の下あたりの水面に一瞬 Screen Space処理っぽい動きが見えた点。肘の動きに合わせて水面のなにかが動いているように見えるけど、部分的に Screen Space Local Reflection をしていたりするのだろうか?(そもそも気のせいかも)

f:id:nagakagachi:20200514082221p:plain
3:50付近


こんな恐ろしいものが出てくる時代でこの先生きのこることができるのか。



5/15追記
UE5デモの技術解説
www.eurogamer.net

一部が削除されたらしいので画像で残しておく
f:id:nagakagachi:20200515071553p:plain