Visual Tech ArtのYoutubeチャンネルにて、Unreal Engine 5のNaniteを使用した際のドローコールに関して検証を行った動画「1 Frame – 1 DrawCall」が公開されました。とても興味深い内容です。
1 Frame – 1 DrawCall
これはいつものチュートリアルというより、研究開発のまとめビデオだ。
バーチャル・パイプラインをより深く研究する必要性を感じ、物事が今どうあるべきかという議論に最終的な決着をつけた。 というわけで、その話と、私が解明できたことを紹介します。今のところはまだシェーダーについて厳密に話していますが、見ての通り、シェーダーはフレームのごく一部です。 だから、他の部分には改善の余地がたくさんある。
さらに、私の結論が「絶対的なもの」と受け取れるのは、私のようにシェーダーだけに焦点を絞り、他のものには触れない場合だけだと思います。もしもっと洞察力があれば、ぜひ教えてください! :D
動画の内容
- ドローコール最適化の基本
ゲーム開発ではドローコールを減らすことが推奨されてきた。
それを極端に進めると「1フレーム1ドローコール」という理論に行き着く。
動画ではこれが本当に可能か検証していく。 - ドローコールの仕組みと削減手法
CPUがGPUに描画指示を出すごとにドローコールが発生する。
メッシュのインスタンス化やマテリアルの統合(テクスチャアトラスやUDIMの活用)が主な最適化手法。 - Naniteの影響
Naniteではジオメトリのラスター化とマテリアルレンダリングが分離されている。
同じマテリアルを使うメッシュは自動的に1つのドローコールに統合される。
目標は「1つのマテリアルだけでシーン全体をレンダリングする」こと。 - UDIMを活用したテクスチャ統合
すべてのマテリアルのテクスチャを1つの巨大なUDIMにまとめる必要がある。
カスタムプリミティブデータを使い、個別のメッシュごとに異なるパラメータを適用する方法を検討。 - マテリアル変換の自動化ツール開発
すべてのマテリアルを手動で変換するのは非現実的なため、自動化ツールを開発。
ツールはマテリアルのパラメータやテクスチャを収集し、UDIMへ統合。 - 自動化における課題
一部の作業(カスタムプリミティブデータの変換)は手動で行う必要があった。
Unreal EngineのUDIMは解像度制限があり、全テクスチャを統合するには工夫が必要。 - パフォーマンステストとその結果
プロファイリングでパフォーマンス測定を行ったが、ドローコール削減による大きな改善は見られなかった。
「ドローコールを減らせば高速化する」という単純な話ではないことが明らかに。 - さらなる実験と改善
異なる手法で最適化を試みるも、結果は大差なし。
Unreal EngineのUDIMの想定外の制限により、テクスチャ統合の手法に調整が必要だった。 - 結論:最新のパイプラインではドローコール最適化は重要ではない
Unreal Engine 5の仮想パイプラインにより、ドローコール削減の意義が薄れている。
旧来の最適化手法に固執するより、プロジェクト全体のクオリティを優先すべき。 - 今後の展開
より実践的な最適化手法を紹介するチュートリアルを作成予定。
Patreonでのサポートを募り、さらに詳しい解説コンテンツを提供する予定。
Naniteが登場してこれまでの最適化の常識が変わってきました。既存のノウハウが通じないみたいですね。また新たに勉強しないといけない所が多いです。今後の最適化の動画が楽しみ。
Visual Tech Artは他にもUnreal Engineに関するテクニカルな動画を多数公開しておりますので、是非チェックしてみてください!
コメント