GLSLで効率的なブルームシェーダーを作成するにはどうすればよいですか?


12

GLSLを使用してブルームエフェクトのレンダリングに関連するリソースをネットで検索しましたが、何も見つかりませんでした。Philip RideoutのWebサイトチュートリアルは優れていますが、私のNvidia GPUでのパフォーマンスは非常に劣っています。

誰もこの問題にどのようにアプローチし、ブルーム効果のかなり効率的な実装を構築するべきかについて私を導くことができますか?


1
オープンソースのJava 3dエンジンであるArdor3dには、ブルームシェーダーが実装されています。オープンソースなので、簡単に確認できます(www.ardor3d.com)。しかし、基本的には、フレームバッファー、ダウンスケール、ぼかし、加算ブレンドをコピーするだけです
。– Pjotterke

1
どんな種類のGPUがありますか?

1
使用しているGPU /ビデオカードをお知らせください。+!@JoshPetrie
パトリックヒューズ

私のラップトップにNvidia GeForce GT 230Mグラフィックカードがあります
-snape

6
@snape:使用しているガウスカーネルの大きさ、および最大のぼやけたFBOの解像度は?パフォーマンスを改善する最も簡単な方法は、より小さいカーネルと小さいFBOを使用することです。(私のものでは、ディスプレイの解像度に関係なく、512x512の解像度のFBO内でぼかしを行います)
トレバーパウエル

回答:


3

Trevorが彼のコメントで言及したように、あなたの唯一の選択肢は、カーネルのサイズを縮小するか、さらにダウンサンプリングを実行することです。

しかし、リンクしたチュートリアルを完全に読みましたか?作成者が「卑劣な」バージョンと呼ぶハードウェアフィルタリングの活用に関するヒントがあります。おそらく、品質に影響を与えずにブルーム効果を最適化するために使用できる最高のトリックです。


はい、チュートリアルを徹底的に読みました。オフラインレンダリングを使用することでようやくパフォーマンスが向上しました。また、以前にグラフィックアプリケーションのハードウェアサポートを有効にしていませんでした。
スネイプ

0

2つのパスで非常によく似た問題(ぼかし、ただしブルームフィルターがぼやけています)を解決しました。

最初のパスではX方向にぼかし、2番目のパスではY方向にぼかします。

私はこのトリックをどこから持っているのかわかりませんが、時間の複雑さをn²から2nに下げます。

これは、方向性のないカーネルでのみ機能します(したがって、この方法でボケカーネルを最適化することはできません)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.