2017-10

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

パフォーマンスの検証(まだやってる)

先日の結果だけでは納得がいかなかったので、まだ検証しています。具体的にどの部分が処理を食っているのかがハッキリしていなかったので、その辺を検証してみました。まず、どうやって検証するか?なんですが、以前購入したXNAの本に載っていた方法が素敵でした。具体的にはこんな感じ。

Stopwatch sw;
sw = new Stopwatch();
sw.Start();
// ここに計りたい処理を入れる
sw.Stop();
float Time = (float)sw.Elapsed.Ticks / 10000.0f;

Timeにはミリ秒が入ります。(事前にusing System.Diagnostics;が必要)
んで、計ってみるとゴブリンさん13匹のモーション更新(約30階層)が3ミリsec掛かっているほか、プレイヤー(エッジ込みで約6000ポリ)の描画に1.8ミリsec、ゴブリン(エッジ込みで3000ポリ)は1体で0.45ミリsec(13体で5.85ミリsec)、背景(2200ポリ)が1.3ミリsecでした(全部XBOX360です)。
秒間60フレームだと16.66…ミリsecですので、
背景やプレイヤーが重いのはテクスチャーのサイズと数が原因かと思います(それにしても重い)。モーション更新で3ミリsec掛かっていますが、行列→クォータニオン→キーフレームの線形補間→行列となっているところをゴッソリ削ったところ3割ほど減りました。ということはキーフレームはあらかじめクォータニオンに変換しておけば結構高速化できそうですね。
ところで計測中に気づいたんですが、文字列以外の変数を文字列に変換するとGCヒープを消費してしまいます。マルチスレッドにしてもスレッド作るたびに消費するようですし、メインループ中にGCしないゲームってのはXNAでは無理なんですかね…。少なくとも私の脳内では白旗上がってますww

現状、ポリゴン数はネックになりそうなところを直したら300万/秒までいきました。背景とかは別の理由があるっぽいので、単純なポリゴン数だけなら先日chitoさんがおっしゃていたように400万ポリ/秒も夢ではなさそうですね。

● COMMENT FORM ●

400万!!

でも300万って十分だと思ってしまいますね(素人考えですが)。
バーチャファイター3のアーケード基板(MODEL3)が確かそれくらいだった気が
するのでそんなのができたらすげーですね。

>>300万ポリ
60フレだと50000ポリゴン/フレームになりますね。丁寧に作っていけば充分なんですが、時間優先でやっていくと調整に時間が掛けられない分、贅沢なデータになりやすいので、その辺の加減が難しいですよね。基本はポリゴン数よりノーマルマップみたいなコストパフォーマンスの高い表現を多用したほうがクオリティを上げやすそうです。私の場合、光源計算完全に止めているので、ノーマルマップやっても意味ないんですけどね…。
やるとしたらエッジをポリゴンじゃなくてピクセル処理的なものにした方がキャラ数はでるんじゃないかな?と思ってます。

ロストプラネットは秒間30フレームながら毎フレーム300万ポリゴン描いてるらしいですよwww
http://www.watch.impress.co.jp/game/docs/20070131/3dlp.htm
そうとうカツカツに最適化されているんでしょうね~。私のフレームワークとXNAではこの1/30以下の能力しかないわけですwww切ないですね~。


管理者にだけ表示を許可する

トラックバック

http://karuduck.blog50.fc2.com/tb.php/58-aedb72e6
この記事にトラックバックする(FC2ブログユーザー)

NEW ENTRY «  | BLOG TOP |  » OLD ENTRY

プロフィール

Karu_gamo

Author:Karu_gamo
<メールアドレス>
karu_gamo#hotmail.co.jp
#を@に置き換えてえてください。

<自分リンク>
かるがも研究所【新】
YouTubeチャンネル
公開素材置き場
仕様書
旧ブログ(見るとこないです)
管理者ページ

リンク

YouTube動画

FC2カウンター

カテゴリー

Twitter

 

月別アーカイブ

RSSフィード

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。