MAX2011

Adobe MAX 2011レポート:Stage 3Dの最適化

Adobe MAX 2011から「Deep Dive into Molehill (Stage 3D)」のセッションレポートです。このセッションは前半がStage 3Dの最適化の話、後半がProsceniumの話でした。Proscenium編は次回のレポートをご覧ください。
理解が及ばす、翻訳できていないことが多く、すみません。

Molehill

Molehill(モルヒル)は、昨年Stage 3Dが発表されたときのコードネームですが、もぐらのことです。もぐらは、そこにあるものが食べられるかどうかを、わずか8ミリ秒(神経細胞の限界速度)で判断するそうです。速い!

まずアルゴリズムを最適化しよう

・アルゴリズムをGPUフレンドリーに
・描画の呼び出しは最小限に
 早めに効率的に。メッシュやテクスチャデータはマージしたものを使う。
・バッファのアロケーションとアップロードは最小限に
・動的でないものは前もって計算して持っておく
・圧縮されたテクスチャを使う
・余分なAPIコールを避ける(but don’t sweat it)

アルゴリズム最適化の例

パーティクルシステム
・パーティクルを1つ1つ描くのはやめる
・1回のみの描画の呼び出しで、大きな頂点バッファを更新する
・vertex programではMathを使う
・Interpolated double vertex buffer, with sparse updates

プログラムの最適化

・プログラムは短く。特に内側のループ
・vertex programは、fragment programよりずっと低コスト
・リリース時には、使っていないdummy streams aroundを消そう

mov vt0, va0
mov vt1, va1
m44 op, va0, vc0

・可能ならKIL instructionを避ける
・独立したtexture fetchを避ける

add ft0, v0, fc0
tex ft1, ft0, fs0 <2d>

・vertex programのindirect adddressingは避ける
・正しいtexture filteringを使う(linear, mipnearest)

共有のトラップ(Common Traps)

・enableErrorChecking = false
・Flash Builderでは、リリースビルドでエクスポートする
・必要なくなったものはリソースをdisposeする
・不必要な2Dの再描画を避ける
・EnterFrameでRenderを行う
・フレームレートは20, 30, 60のどれかにする
・readbackはしない(drawToBitmapData)

Threaded Rendering

Render Threadでは、Validateに失敗すると無視される

Compressed Textures

・ATF(Adobe Texture Format)は、DXT1, PVRTC, ETC1を含みます。
・JPEG-XR、LZMAでパックされて転送されます。
・Adobe toolingはまだありません
・アルファチャンネルはありません


Author

  • Shuichi Ishikawa
    Shuichi IshikawaShuichi
    Ishikawa
  • MikasaHideyuki
    Hideyuki MikasaHideyuki
    Mikasa
Shuichi Ishikawa
執行役員/インタラクションデザイングループ

フロントエンド開発からクラウドサーバー構築まで、新しいことに興味がありすぎて時間が足りない制作部門リーダー。Adobeインフルエンサー。九州芸術工科大学→ドリームキャスト→サーバーサイド→フロントエンド→執行役員→早稲田大学大学院→Kinect v2

好きな飛行機
B787-8
好きな空港
SXM
好きな航空路
Y28
Hideyuki Mikasa
オーサリングエンジニア

mikasa's text