パフォーマンス向上に役立つ、コンテンツ作成とレベル デザインの一般的なガイドラインをいくつかご紹介します。
アーティスト向けガイドライン
- オブジェクト当たりのエレメント数は最小限にします。
- エレメント当たりのトライアングル数が適切になるようにモデルを組み合わせてください (エレメント当たり 300+ など)。
- z バッファ カリングの効率が最も良い不透明なマテリアルがも一番速く、マスクされているマテリアルは若干遅く、透過マテリアルはオーバードローのため一番遅くなります。
- ハードウェアで頂点数が増える原因になる UV シームとハードエッジを制限します。最悪のケースでは、ハードエッジのある高密度のポリゴンメッシュの頂点数は、モデリング アプリケーションでの報告の 3 倍になります。
- スキン メッシュの頂点プロセス処理の負荷は、スタティックメッシュより高くなります。
- モーフ ターゲットを追加または WorldPositionOffset を使用すると、頂点プロセス処理の負荷があがります。テクスチャ ルックアップはキャッシュが原因で非常に遅くなります。
- テセレーションは余分な負荷が多すぎるので、可能な限り使用を避けてください。テセレーション済みのメッシュは通常速いです。
- メッシュが非常に大きい場合は、カリング効果を上げるために分割します。ライト カリングは通常細かい粒度で処理しますが、これはビュー カリングです。
- テクスチャ形式が小さいほど、マテリアルが速くなります (例えば、DXT1 はピクセル当たり 4 bits、 DXT5 は 8 bpp、非圧縮 ARGB は 32 bpp)。
- 解像度の低いテクスチャほど速くなります (拡大時)。バイリニア フィルタがテクスチャ形式が表現できる以上の描画を作り出すので、滑らかになることもあります。
- シェーダー インストラクションとテクスチャ ルックアップがほとんどないマテリアルは、実行が速いです。マテリアルを最適化するには、マテリアル エディタの統計情報とビューモードの ShaderComplexity を使います。
- テクスチャが小さめのスケールで表示できる場合は、テクスチャのキャッシュ化の失敗による遅延を避けるためにも、ミップマップを無効にしないでください。
- さらに負荷の高いマテリアル式もあります (sin 、 pow 、 cos 、 divide 、 Noise)。最も速い表現式は、multiply、add、subtract、そして 0 と 1 を使う場合の clamp() です。
- シェーディング モデルにも負荷が発生します。Unlit が最も速く、Lit が一番使われることが望ましく、その他のモデルはさらに負荷がかかります。
レベルデザイナー向けのガイドライン
- Stationary (固定) および Dynamic (動的) ライト数を制限します。
- エリア ライトソースは若干負荷が高いので、可能な限り使用を避けます。
- カリング効果を上げるために、小さめのオブジェクトの描画距離を調整します。
- 積極的なトランジション範囲で LOD が設定されているか検証します。LOD は最低 2x の頂点数を使用することが望ましいです。これを最適化するためには、ワイヤーフレームにチェックを入れると、ソリッドなカラーが問題を示します。Simplygon インテグレーションを使えば、数分しかかかりません。
- オリジンが同じライトを組み合わせるようにしてください。例えば、車のヘッドライトの場合、単一のライトにライトの機能を使って 2 つのライトのように見せます。
- Static light (静的ライト) が一番速く、Stationary light (固定ライト) は最適性が落ち、Dynamic light (動的ライト) は最も負荷が高いです。
- 減衰半径とライトの円錐の角度を必要最低限に制限します。
- 負荷は、Dynamic (動的) / Stationary (固定) ポイントライトが一番大きく、その次に指向性ライト、そしてスポットライトが一番小さいです。シャドウマップ生成の負荷は、シャドウキャストするオブジェクトのライトの錐台に比例します。
- ライトの機能でさらに負荷がかかり (実際の負荷はマテリアルによります) 、タイル処理されたライトとしてライトがレンダリングされるのを防ぐことができます。
- IES プロファイルでさらに負荷がかかり (ライトの機能よりは軽い) 、タイル処理されたライトとしてライトがレンダリングされるのを防ぐことができます。スポットライトの円錐の角度で同じエフェクトを作成できる場合は、IES を使用しないでください。
- ビルボード、インポスター メッシュ、スカイボックス テクスチャを使って、詳細なジオメトリを効果的に作り出すことができます。
- 上手なレベルデザインは、オクルージョン カリングが考慮されています (パフォーマンス向上のためにビジビリティ ブロッカーを追加)。r.VisualizeOccludedPrimitives を使って確認してみてください。
- Light Propagation Volumes を避けるか、GIReplace マテリアル式を使って負荷を制限するか、ほとんどのオブジェクトで無効にします。
- オブジェクトごと、またはライトごとに、シャドウ キャスティングを可能な限り無効にします。
- エディタの ProfileGPU (Ctrl + Shift + ,) を使うと、高負荷の原因がすぐに分かります。
- デカール パフォーマンス負荷は、カバーしているピクセル数に比例します。

CONSOLE: r.VisualizeOccludedPrimitives 1