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.目的

2.計測結果一覧表

3.計測結果の考察

4.一般事例への適用について

 

 

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呼び出し回数が多いと遅延する
 
記号 描画プリミティブ数や描画頂点数、テクスチャの貼付枚数や解像度、模様の複雑さ等は、描画速度にあまり影響しない
DrawIndexedPrimitives呼び出し回数:446回の例は極端なので無視しても良いが、1回=30〜38fpsと、15回=15fpsではかなり差があるので注意! (同期待ちの可能性も考えられる??)
(2009/4/5追記)描画が遅い原因は、同期待ちによるよるものでした。詳細はこちら
 
記号 Generate MipmapsをTrueにしておくと、滑らか表示になるだけでなく、速度も向上する場合がある
 
記号 カメラをズームアップしていくと、注目対象が繊細に表示されるだけでなく、描画が少し早くなる
カメラを手前に引いて視界範囲を広げると、描画速度は遅くなるので注意すること

 

 

.一般事例への適用について

記号 今回の調査対象は地形モデルだが、考察内容は「3DモデルをDrawIndexedPrimitivesで描画する」場合において広く適用できる可能性がある。
(2009/4/5追記)mesh.drawによる描画は、内部的にDrawIndexedPrimitivesを呼び出し ているようなので、同様に考えられる。
      
記号 モデリングの際は、モデルの頂点数やテクスチャの解像度、複雑性などよりも、「マテリアル数(テクスチャの種類数)」に気を付けた方が良いかもしれない
(2009/4/5追記)テクスチャファイルを1枚にまとめて描画命令の呼び出し回数を減らす最適化技法がある。DwarfTutorial内のdwarf.jpgもその効果を狙ったものと推察する。(キーワード:テクスチャアトラス、アトラス展開、テクスチャページ)
      

inserted by FC2 system