翻訳:Total Warゲームエンジンの構造、パート1





こんにちは、読者の皆様。 ゲームエンジンTotal Warのアーキテクチャに関する興味深いシリーズの記事を翻訳してください。



誰も気にしない、猫へようこそ!



Total War:Attilaの完成したレンダリングを簡単に見てみましょう。 次のいくつかの記事では、Total War:Warhammerの開発中に行われた主要な変更と最適化について説明します。





それぞれの新しいフレームは、メインの指向性光源からの影の描画から始まります。 カスケードシャドウマップが使用されます:グラフィック設定に応じて2〜4カスケード。 地形はシャドウマップに描画されませんが、リアルタイム戦略では、既に想像できるように、より少ない詳細でより詳細に描画するファーストパーソンまたはサードパーソンシューティングゲームと比較して、多数の小さなオブジェクトを描画します。 以下のスクリーンショットは、Total War:Attilaエンジンの最終フレームを示しています。







風景



地形は、このゲームで最も重要な部分の1つです。 リアルタイム戦略として、私たちのゲームの地形は、一人称ゲームの地形とわずかに異なります。 短距離ではなく、中距離に焦点を当てています。 ランドスケープは繰り返しパターン-タイルに分割し、異なるタイプのランドスケープ間でスムーズに移行する必要があります。 プレーヤーがミニマップをクリックすると、インスタントムーブメントもサポートされる必要があります。これにより、ストリーミングテクニックにさらに困難が生じます。 また、マップ上には多くのメッシュ(岩の一部など)があり、それらは風景のテクスチャと混合する必要があり、それ自体がいくつかのレイヤーの組み合わせです。



各戦場には多数のタイルが含まれており、マップが分割されています。 Total Warシリーズのゲームでは、グローバルマップは巨大であるため、アーティストやモデラーに強制的に完全に手動で作成させることはできません。 これに対処するために、彼らはタイルを使用します。 タイル自体は別のカードとして表すことができます。 ただし、会社のマップで戦闘を開始すると、戦場は周囲のタイルから組み立てられ、サイズと形状の両方が異なる場合があります。 その結果、各戦場は複数のタイルで構成され、各タイルは独自のテクスチャセットを使用します。 タイルをステッチするときにアーティファクトを隠すために、テクスチャをミックスします。



たとえば、森林、砂漠、および湿地タイルのT字型の交差点を想像してください。 各タイルには8つのテクスチャレイヤーが含まれており、ある時点で3つのタイルすべてのテクスチャを混合する必要があります。つまり、各ピクセルに24のレイヤーが混在する可能性があります。 各レイヤーにはテクスチャが含まれています-通常および反射/光沢、つまりピクセルあたり24×3 = 72テクスチャ。 混合できるタイル/レイヤーの数に制限はありません。



すべてのニーズを満たすために、まず深度マップのみを描画します(生成されたランドスケープとアーティストが作成したメッシュを含む)。 各タイルのスクリーン空間アルゴリズムを実行した後、各タイルには独自のミキシングマップがあり、レイヤーをジオメトリに投影します。これは大きな投影デカールとして想像できます。



GBuffer



GBufferは、次の3つのテクスチャを保存します。







あなたがはっきりと気づいているかもしれないことの1つは、最初の2つのテクスチャのアルファチャンネルには何も保存しないということです。 これは、すべてのプロパティがランドスケープレンダリングとデカール時に混合され、透明度を設定するためにアルファチャネルが必要であるという事実によって正当化されます。 法線自体は、圧縮された2チャンネル形式で保存されます。



また、色/金属ではなく、拡散/反射素材を使用していることにお気づきかもしれません。 これは伝統であり、私たちは変化の過程にあります。



照明



照明のほとんどは、主な指向性光源から来ています。 物理的に正しい統計的に計算されたBRDFモデルがあり、ガウス分布に基づいてマイクロファセット分布を提供します。 このモデルは、Total War:Rome IIで初めて導入されました。 これにより、球体の理想的な(伸びていない)鏡面反射が得られ、ソーラーディスクのサイズで作業することができます。



Total War:Attilaには、グローバルなオクルージョンシステムの独自の実装があります。



粒子



パーティクルはCPUで作成されますが、GPUでシミュレートおよび処理されます。 3種類のGPUパーティクルがサポートされています:クアッド、投影デカール、全方向光源。 すべての上に、メッシュで構成されるパーティクルの機能が制限されたCPUパイプラインがあります。



トーンマッピング



自動レベルを持つ曲線に基づいてトーンマッピング演算子を使用します。自動レベルは、画面の平均/最小/最大輝度に基づいています。



パイプライン総戦争:アッティラ(簡体字)







次の記事では、Total Warでのパフォーマンスの測定方法と、目的のパフォーマンスを得ることができるメインシェーダーの最適化について説明します。



PS翻訳者から:

一部のトピック(「トーンマッピング」および「球体の鏡面反射」)については、理論的な表面的な知識しかありません。したがって、翻訳に関する建設的な批判と解説をいただければ幸いです。



All Articles