1

透明なアルファを含むDDSイメージ(DXT5)をOpenGLにロードします。アルファは事前に乗算されておらず、DXT5仕様に基づいて事前に乗算できないため、GPUでいくつかのブレンド操作を行うため、テクスチャの表示部分の周りに薄い黒いハローが表示されます。私の質問は、最善の回避策は何であるかということです。私のOpenGLレンダラーはIOからそれらをロードする各フレームのシーンテクスチャを更新するので、DDSを解凍してから事前に多重化してから圧縮して戻すと、大きなオーバーヘッドが発生します。別のレンダリングパスを追加して事前に実行することもできます。 -フラグメントシェーダーで乗算し、テクスチャにレンダリングしてから、メインパスに使用します。これは、パスの数がすでに減少しているため、パイプライン全体にオーバーヘッドを追加します。ここでの追加オプションは何ですか?

4

2 に答える 2

0

シェーダーにアルファの事前乗算をその場で実行させてから、通常どおりに実行するのはなぜですか?

それをテクスチャにレンダリングする必要はありません。事前乗算が必要なすべてのテクスチャについて、シェーダーで常に事前乗算します。

于 2012-11-05T15:58:25.483 に答える
0

問題が解決しました。破損した DDS テクスチャがありました。フラグメント シェーダでデフォルトで行っていた手動の事前乗算は、有効な DXT5 で完全に機能します。

于 2012-11-09T15:37:02.023 に答える