2011-07-30 8 views
6

誰かがOpenGL ES 2.0で遅延レンダリング/シェーディングを実装していますか? MRTをサポートしていないので、1つのカラーバッファのみでは、「通常の」方法で実装できるものではありません。OpenGL ES 2.0で遅延レンダリング/シェーディングが可能ですか?

具体的には、私はiPad、iPhone4(maaaybe iPhone 3gs)、およびAndroidで調べています。アプリ/ iPhone4の/ iPhone3GSの上GLESViewアプリでは、GL_OES_RGB8_RGBA8拡張子が存在している、と私はあまりにも深く、まだ見ていないが、8ビット/チャネルで、このアイデアは面白いです:http://www.gamedev.net/topic/562138-opengl-es-20-and-deferred-shading/

他のアイデア?パフォーマンス面でも価値があるのですか?

答えて

2

そこにいくつかのAndroidデバイス上で利用可能GL_ARB_draw_buffers拡張子です(したがって、複数のバッファにレンダリングすることは可能である)が、答えは「ませ」ではありません(いくつかの「私は50個のmilionポリゴンを描く」ラスタライザバウンドの可能性を除いてシナリオ)。

これは、これらのデバイスで使用されるGPUが非常に弱いピクセルシェーダを持っているため、複雑なシェーダで全画面パスを実行することが問題になるからです。プログラム可能なシェーディングが主流になる前に使用されていた昔のデモスキャンのトリックにこだわる方がよいでしょう。

頂点シェーダに移動することができたら、それを実行します(たとえば、フラグメントシェーダのテクスチャをオフセットするのではなく、頂点シェーダで変形されたメッシュを使用すると、フルスクリーン変形などの効果がよくなります)。

ジオメトリを使用して解決できるもの(実際のボックスで作成されたスカイボックスのレンダリングは、フルスクリーンクワッドのレンダリングやシェーダでのテクスチャサンプリングのビュー方向の計算よりも高速です)を行います。

唯一のことはです。は、より強力なピクセルシェーダーが利用できるようになることを願っています。あまりにも憂鬱な答えではないと思います:)もちろん、Androidで遅延シェーディングを実装しようとすることはできますが、遅くなる可能性があります。

関連する問題