レンズフレアの有効化、無効化(directx)
Posted: 2010年10月15日(金) 15:29
3Dアプリケーションにて、レンズフレアを描いてみようと考えています
レンズフレアを描画するいくつかのステップの中で、
カメラの位置およびポリゴンの位置により、
レンズフレアを描画するかどうか?を判断するステップがあると思います
レンズフレアを画面に描画しなければならない条件は
1、太陽が画面内に存在する
2、太陽がどのポリゴンにも隠されていない
ということだと思います
1については、
太陽の位置*ビュー行列*プロジェクション行列*ビューポート行列
=画面上での太陽の座標
なので簡単に調べられるはずです。
問題は2で、
私が考えられる方法は、
カメラ位置→太陽の位置のレイと、
画面内のポリゴンおよびオブジェクトおよび、境界図形、との衝突判定を行う
というものがまず浮かぶのですが、
見た目にしか影響しないレンズフレアに、このような処理は割に合わないように感じます
(実行時計算量+コーディング作業量)
処理(実行時計算量+コーディング作業量)
が割りに合う範囲内で上記のものを実装する考え方をお伺いしたいです
よろしくおねがいします
環境は
Microsoft DirectX SDK (June 2010)
VisualStudio2010Express
言語はC++です
レンズフレアを描画するいくつかのステップの中で、
カメラの位置およびポリゴンの位置により、
レンズフレアを描画するかどうか?を判断するステップがあると思います
レンズフレアを画面に描画しなければならない条件は
1、太陽が画面内に存在する
2、太陽がどのポリゴンにも隠されていない
ということだと思います
1については、
太陽の位置*ビュー行列*プロジェクション行列*ビューポート行列
=画面上での太陽の座標
なので簡単に調べられるはずです。
問題は2で、
私が考えられる方法は、
カメラ位置→太陽の位置のレイと、
画面内のポリゴンおよびオブジェクトおよび、境界図形、との衝突判定を行う
というものがまず浮かぶのですが、
見た目にしか影響しないレンズフレアに、このような処理は割に合わないように感じます
(実行時計算量+コーディング作業量)
処理(実行時計算量+コーディング作業量)
が割りに合う範囲内で上記のものを実装する考え方をお伺いしたいです
よろしくおねがいします
環境は
Microsoft DirectX SDK (June 2010)
VisualStudio2010Express
言語はC++です