つまり、2D 画像ではないため、3 回のパスでは実行できません。カーネルが分離可能であっても。各画像スライスを個別にブラーする必要があります。これは、画像に対して 2 パスです (256x256x256 テクスチャを使用している場合は、U 座標と V 座標に沿ってブラーするためだけに 512 パスがあります)。T と U (または T と V: 無関係) 座標に沿ってぼかしを入れる必要がありますが、これはさらに 512 パスです。バイリニア フィルターを使用してテクセル間の値を読み取り、一定の処理コストを節約することで、パフォーマンスを向上させることができます。3D ブラーは非常にコストがかかります。
パフォーマンスのヒント: テクスチャ全体をぼかす必要はなく、一部だけをぼかす必要があるのではないでしょうか? (見える部分?)
パスの数が非常に多い問題は、GPU と CPU 間の相互作用の数です。ドローコールと FBO セットアップはどちらも CPU をハングさせる低速の操作です (おそらく、 CPU オーバーヘッドが低い別の APIの方が高速です)。
カーネルを分離しないようにしてください:
カーネルが小さい場合 (最大 5^3 だと思いますが、プロファイリングのみが最大カーネル サイズを表示します)、おそらく最速の方法は、カーネルを分離しないことです (それだけです。多くのドローコールと FBO バインディングを節約し、すべてを活用します)。 GPU フィルレートと帯域幅に)。
時間をかけて作業を広げる:
カーネルが分離されているかどうかは関係ありません。フレームごとにガウスぼかしを計算する代わりに、毎秒計算することができます (おそらくより大きなカーネルを使用)。次に、「連続ブラー データ」のソースとして、前のブラーと次のブラーの補間を使用します (これは、フレームごとに 2x 3D テクスチャ サンプルであり、連続ブラーよりもはるかに安価です)。