4

DXTn および BCn テクスチャ圧縮に関する記事をいくつか読み、これらの形式をエンコードする方法を学びました。しかし、DXT2 と DXT3 フォーマットの違い、または DXT4 と DXT5 フォーマットの違いはまだわかりません。これらのフォーマットの違いは同じだと思います。

D3D SDK のドキュメントには、次のように書かれています。

DXT2 と DXT3 の違いは、DXT2 形式では、カラー データが事前にアルファで乗算されていると見なされることです。DXT3 形式では、色がアルファで事前に乗算されていないと見なされます。これら 2 つの形式が必要になるのは、ほとんどの場合、テクスチャが使用されるまでに、データを調べるだけでは、色の値がアルファで乗算されているかどうかを判断するのに十分ではないためです。この情報は実行時に必要になるため、これらのケースを区別するために 2 つの FOURCC コードが使用されます。ただし、これら 2 つの形式で使用されるデータと補間方法は同じです。

これはつまり、RGB 127,127,127 でアルファ 0 のピクセルがある場合、DXT2 では実際には RGB 0,0,0 が格納されるということです。なぜなら、127 にアルファ 0 が掛けられているからです。

もしそれが正しかったとしたら、実際のゲーム開発において私たちは何の恩恵を受けることができるでしょうか? 私の意見では、それはまったく不要です。

その上、BC2 と BC3 フォーマットはどうなったのですか? 私が知っているように、DXT2/3 は BC2 にマッピングされ、DXT4/5 は BC3 にマッピングされるため、区別はもう存在しません。放置ですか?なんで?

どんな助けでも感謝します、ありがとう!

4

1 に答える 1

4

私の知る限り、DXT2&3とDXT4&5の間に物理的な違いは実際にはありませんでした-GPUは同じ方法でそれらをデコードしました。ドキュメントからの引用によると、唯一の理由は、テクスチャが事前に乗算されているかどうかについて開発者にヒントを与え、使用するフレームバッファブレンドモードを知ることだったと思います。(1、1-SrcAlpha)vs(SrcAlpha、1-SrcAlpha)。

于 2012-11-15T14:52:20.137 に答える