GAFAkaicho press

SIO2 - Frustum culling system があった

2009/07/02
テーマ: Game / iOS / 2009 / すべて


前のエントリで

大量のオブジェクトからカメラ付近のものだけ抜き出して描画するような仕組みはないっぽい

と書きましたが、SIO2 には Frustum culling という仕組みがあり、完全に視錐台の外にあるオブジェクトはそもそも描画しないようになっているようです。

仕組み

性能見積もり(ざっくり)

視推台の包含判定がオブジェクトの個数だけ実行されるというのがちょっと気になったので試算してみます。

bounding sphere の包含判定を行う sio2CameraSphereDistInFrustum 関数を見ると、必要な演算量は、視推台の 6 面それぞれについて 3 次元ベクトルの内積と加算なので float 36 演算。

一方、iPhone 3G の CPU はだいたい 500Mflops, 描画は 50fps とすると、1 フレームあたり 10Mflops。これで全部包含判定すると、10M / 36 = 300K として、30 万回分。

プロセッサ資源を全部包含判定に使うわけにはいかないので、保守的に 5% 使うことにすると、1.5 万回分。というわけで、オブジェクト数が 1000 とか 10000 程度であれば、BVH 的なツリー構造を使わなくても O(N) 判定で特に問題ないかな、といったところです。

この辺は、大量のオブジェクトやポリゴンを扱うオフラインレンダラと比べると、そんなにオーダーを気にしなくて良い分野なのかな、という印象を持ちました。

ちなみに

テクスチャに Alpha 成分を持つオブジェクトのソートもやってくれるようですが、そこではバブルソートが使われていました。半透明オブジェクトはそんなに多くねぇよな、という理由でしょうか。

参考

View Frustum Culling Tutorial
原理、ソースコードなど。


2009/07/02
テーマ: Game / iOS / 2009 / すべて




EENOUR 冷温庫 10L ポータブル 小型 冷蔵庫 保温・保冷用 -2℃~60℃ 温度調節可 ワンタッチ操作 LCD温度表示 発泡ウレタン採用 断熱性能抜群 省エネ ペルチェ式 静音 AC/DC給電 車載用 車中泊 キャンプ アウトドア 家庭用 24ヶ月保証
★★★★☆ ¥12,980 - ¥20,298