はじめに
ゲームのための美しい環境やキャラクターを作り出すことで知られる3Dアーティストのリューが、Creative Assemblyのエンジニアチームが大規模な環境をUnreal Engineで構築する際の課題に取り組む方法について、その洞察を共有します。「チョコレートレンダリング」と呼ばれるカスタムのレンダリングソリューションを開発することで、大量のメッシュコンポーネントや個別のインスタンスによる性能の問題に対処することができました。
Unreal Engineにおける大規模環境の課題
Creative Assemblyのチームは、6万を超えるメッシュコンポーネントで構成される巨大な環境を構築する課題に直面しました。実時間でシミュレートされるデブリのフィールドも含まれていました。多数の個別のインスタンスにより、レベルストリーミングコストやレンダリングパフォーマンスに問題が生じていました。Unreal Engineの既存のソリューション、例えばインスタンス化されたスタティックメッシュコンポーネントやメッシュマージングでは、チームのニーズを十分に満たすことができませんでした。
チョコレートレンダリングの登場
パフォーマンスの問題に対処するために、チームはカスタムのレンダリングソリューション「チョコレートレンダリング」を開発しました。これは、アニメーションファストパスと同様の「高速パス」で、シーンプロキシの作成を回避します。目標は、エンジンの修正を最小限に抑え、バニラのレンダラーと同じ外観を維持し、将来の統合を滑らかに行うことでした。
チョコレートレンダリングの実装
チョコレートレンダリングでは、ロード画面中にメッシュの描画コマンドをキャッシュすることで、ストリーミングによるヒットを削減しています。エディター外のアクターやコンポーネントを削除してメモリを節約し、軽量なインスタンス記述子システムに置き換えています。さらに、可動プロップのサポートをチョコレートレンダリングパスに追加して、適用範囲を改善しました。
チョコレートレンダリングの近代化
チームはさらにチョコレートレンダリングの近代化を進め、GPUベースのカリングとドローコールのマージを実装しました。リソースへの効率的なアクセスを実現するためにBindless Renderingアプローチを採用しました。動的分岐や材質の最適化も近代的なレンダリングパスに追加されています。
結果と今後の計画
チョコレートレンダリングのソリューションにより、CPUとGPUのオーバーヘッドが大幅に削減され、ゲームの全体的なパフォーマンスと安定性が向上しました。チームは今後、スキンドメッシュや大規模なインスタンス数に対応するためにチョコレートレンダリングをさらに拡張する計画です。このカスタムソリューションは、Unreal Engineの一般的な機能よりも優れた性能を示しており、特定の問題に対する的を絞ったアプローチの価値を証明しています。
まとめ
「チョコレートレンダリング」のソリューションを開発することで、Creative AssemblyのエンジニアチームはUnreal Engineにおける大規模環境構築の課題を克服することができました。このイノベーティブなアプローチにより、ゲームのレンダリング性能と安定性が向上するだけでなく、今後の機能拡張への道も開かれました。
要点:
- チームは6万を超えるメッシュコンポーネントや実時間シミュレーション debris を含む大規模環境の課題に直面した
- Unreal Engineの既存ソリューションでは不十分だったため、「チョコレートレンダリング」というカスタムのレンダリングソリューションを開発した
- チョコレートレンダリングは、シーンプロキシの作成を回避し、エンジンの修正を最小限に抑えた「高速パス」のメッシュコンポーネントソリューション
- キャッシング、インスタンス記述子、GPUベースの最適化などを実装し、チョコレートレンダリングを近代化した
- このカスタムソリューションにより、パフォーマンスと安定性が大幅に向上し、Unreal Engineの一般的な機能を上回った
- チームは、さらなる機能拡張やより大規模なインスタンス数への対応を計画している