資料館/フォグとプロジェクションのコラボ

Last-modified: 2008-01-14 (月) 16:07:38

2chに書き込んだら、意外とやっていない人が居たようなので追加。

プロジェクションを削って高速化する

プロジェクションを適切に設定してやると、パフォーマンスが大幅に改善される。
プロジェクションっつーのは、描写処理を行う範囲の事である。
見える必要のない無限遠方まで描写処理などを行うのは無駄なので、処理を行う範囲を決定してその中だけを画面に描写してくれるわけだ。
それ以上詳しい説明が聞きたかったら、サンプルwikiかどっかに行けばあると思うよ。

で、このプロジェクションの設定、ぶっちゃけ狭めれば狭めるほど描写スピードは速くなる(と思う)
少なくとも、無計画に設定した場合と後述する方法をとった場合とではかなりの差が出る。

実践

開発中のゲームのプロジェクションを、適当に距離10000程度に設定した例。
syobon.jpg
見ての通り、カメラから距離10000より先の世界は描写されず、背景が描かれる。所謂世界の終わりである。

多くの場合において、プロジェクションをチョイ狭くとっても見栄えにそう変わりはない。シューティングゲームなど、広大なフィールドで戦うゲームなどを作る場合には特に力を発揮するだろうし、カメラの移動範囲とマップのサイズなどから、最低必要なプロジェクションの距離は求められるはずなので、是非バシッと値を設定し、処理の効率化を図ろう。

とは言ったものの・・・削りすぎも問題である。↑のSSなんて、ロボットが途中から切れちゃってるし・・・orz

フォグを利用して誤魔化す

プロジェクション削って処理速度がうpしたのはいいが、今度は見栄えが悪くなって枕を濡らしていた人々よ、諦めるにはまだ早い。
確かに、プロジェクションで削った部分は見えなくなるが、それを誤魔化す方法がある。フォグをかけるのだ。
okpk.jpg
フォグが最も濃くなる部分、つまり全く見えなくなる距離を、プロジェクションで削った値に合わせてやれば、この通り誤魔化せる。
↑の例では左奥のロボットの上半身などが描写されていないが、フォグがかかっていればキニナラナーイ

こんな感じで、フォグをかければうまいこと誤魔化せる場合も多いので、処理速度と見栄えを天秤にかけて最適な値を模索してください。