2009/3/25 Na-7
2009/4/5 Na-7
立体地形モデルの描画速度に関する計測と考察
注意 | この資料は、筆者が自らの経験を記録したものであり、他人に勧めるものではありません。 この資料を参考として行った行為がいかなる結果になろうとも、筆者は責任を負いませんので予めご承知おきください。 |
◎使用ツール
ツール名 | 入手元 |
XNA3.0(XNA GameStudio 3.0:ゲーム開発用フレームワーク) | http://msdn.microsoft.com/ja-jp/xna/default.aspx |
◎目次
1.目的
開発中の立体地形モデルの描画速度が遅いため、どの要素(頂点数、テクスチャ解像度、模様の複雑さなど)がどの程度影響しているかを把握し、描画速度改善のポイントを探る。 |
|
今回の調査対象は地形モデルだが、調査結果は「3DモデルをDrawIndexedPrimitivesで描画する」場合において広く
適用できる可能性がある。 |
|
この記事は筆者ブログ の記事(2009/3/24)に関連して作成した。 |
2.計測結果一覧表
番号 | 地形モデル | テクスチャ | フレームレート(fps) | |||||||||
種類 |
描画プリミティブ数 (注1) |
描画頂点数 (注2) |
カラーマップ (注3) |
描画回数 (注4) |
種類 | 種類数 | 貼付枚数 | 解像度 | Generate Mipmaps | カメラ移動時 | カメラ静止時 | |
1 | 地表モデル | 84,652 | 253,956 | 通常 | 1 | 赤(注5) | 1 | 84,652 | 512×512 | False | 30 | 30 |
2 | 地表モデル | 84,652 | 253,956 | 通常 | 1 | 赤 | 1 | 84,652 | 512×512 | True | 30 | 38 |
3 | 地表モデル | 84,652 | 253,956 | 通常 | 1 | 赤 | 1 | 84,652 | 128×128 | False | 30 | 38 |
4 | 地表モデル | 84,652 | 253,956 | 通常 | 1 | 赤 | 1 | 84,652 | 128×128 | True | 30 | 38 |
5 | 地表モデル | 84,652 | 253,956 | 通常 | 1 | 芝(注6) | 1 | 84,652 | 512×512 | False | 30 | 30 |
6 | 地表モデル | 84,652 | 253,956 | 通常 | 1 | 芝 | 1 | 84,652 | 512×512 | True | 30 | 38 |
7 | 地表モデル | 84,652 | 253,956 | 通常 | 1 | 芝 | 1 | 84,652 | 128×128 | False | 30 | 38 |
8 | 地表モデル | 84,652 | 253,956 | 通常 | 1 | 芝 | 1 | 84,652 | 128×128 | True | 30 | 38 |
9 | 地形種別モデル | 42,356 | 127,068 | 通常 | 446 | 赤 | 1 | 42,356 | 512×512 | False | 1 | 1 |
10 | 地形種別モデル | 42,356 | 127,068 | 通常 | 446 | 赤 | 1 | 42,356 | 512×512 | True | 1 | 1 |
11 | 地形種別モデル | 42,356 | 127,068 | 通常 | 446 | 赤 | 1 | 42,356 | 128×128 | False | 1 | 1 |
12 | 地形種別モデル | 42,356 | 127,068 | 通常 | 446 | 赤 | 1 | 42,356 | 128×128 | True | 1 | 1 |
13 | 地形種別モデル | 42,356 | 127,068 | 通常 | 446 | 芝 | 1 | 42,356 | 512×512 | False | 1 | 1 |
14 | 地形種別モデル | 42,356 | 127,068 | 通常 | 446 | 芝 | 1 | 42,356 | 512×512 | True | 1 | 1 |
15 | 地形種別モデル | 42,356 | 127,068 | 通常 | 446 | 芝 | 1 | 42,356 | 128×128 | False | 1 | 1 |
16 | 地形種別モデル | 42,356 | 127,068 | 通常 | 446 | 芝 | 1 | 42,356 | 128×128 | True | 1 | 1 |
17 | 地形種別モデル | 42,356 | 127,068 | 通常 | 446 | 通常(注7) | 132(+流用314) | 42,356 | 512×512 | True | 1 | 1 |
18 | 地形種別モデル | 42,356 | 127,068 | 青色に置換 | 15 | 赤 | 1 | 42,356 | 512×512 | False | 15 | 15 |
19 | 地形種別モデル | 42,356 | 127,068 | 青色に置換 | 15 | 赤 | 1 | 42,356 | 512×512 | True | 15 | 15 |
20 | 地形種別モデル | 42,356 | 127,068 | 青色に置換 | 15 | 赤 | 1 | 42,356 | 128×128 | False | 15 | 15 |
21 | 地形種別モデル | 42,356 | 127,068 | 青色に置換 | 15 | 赤 | 1 | 42,356 | 128×128 | True | 15 | 15 |
22 | 地形種別モデル | 42,356 | 127,068 | 青色に置換 | 15 | 芝 | 1 | 42,356 | 512×512 | False | 15 | 15 |
23 | 地形種別モデル | 42,356 | 127,068 | 青色に置換 | 15 | 芝 | 1 | 42,356 | 512×512 | True | 15 | 15 |
24 | 地形種別モデル | 42,356 | 127,068 | 青色に置換 | 15 | 芝 | 1 | 42,356 | 128×128 | False | 15 | 15 |
25 | 地形種別モデル | 42,356 | 127,068 | 青色に置換 | 15 | 芝 | 1 | 42,356 | 128×128 | True | 15 | 15 |
26 | 地形種別モデル | 42,356 | 127,068 | 青色に置換 | 15 | 通常(注8) | 15 | 42,356 | 512×512 | True | 15 | 15 |
注1 | 描画プリミティブ数=描画ポリゴン数 |
注2 | 描画頂点数=描画プリミティブ数×3 |
注3 | 「カラーマップ=通常」は左図、「カラーマップ=青色に置換」は右図
|
注4 | 描画回数=「DrawIndexedPrimitives呼び出し回数」(地形モデルの種類とカラーマップによって変動する) |
注5 | 「テクスチャ種類:赤」は、パターンテクスチャを真っ赤なテクスチャに置き換えた
|
注6 | 「テクスチャ種類:芝」は、パターンテクスチャを芝テクスチャに置き換えた
|
注7 | 「カラーマップ:通常、テクスチャ種類:通常」の場合、132種類のパターンテクスチャが使用される (複合パターンのうち314種類分は、既存の132種類の中から代用テクスチャを流用している)
|
注8 | 「カラーマップ:青色に置換、テクスチャ種類:通常」の場合、15種類のパターンテクスチャが使用される (地表(芝)と川湖のパターンだけで15種類ある)
|
3.計測結果の考察
DrawIndexedPrimitives呼び出し回数が多いと遅延する |
|||||
描画プリミティブ数や描画頂点数、テクスチャの貼付枚数や解像度、模様の複雑さ等は、描画速度にあまり影響しない
|
|||||
Generate MipmapsをTrueにしておくと、滑らか表示になるだけでなく、速度も向上する場合がある |
|||||
カメラをズームアップしていくと、注目対象が繊細に表示されるだけでなく、描画が少し早くなる
|
4.一般事例への適用について
今回の調査対象は地形モデルだが、考察内容は「3DモデルをDrawIndexedPrimitivesで描画する」場合において広く適用できる可能性がある。
|
|||
モデリングの際は、モデルの頂点数やテクスチャの解像度、複雑性などよりも、「マテリアル数(テクスチャの種類数)」に気を付けた方が良い
|