2

元の PNG から DXT 圧縮を使用して、テクスチャを DDS 形式に変換/圧縮しようとしています。私は Mac を使用しているので、Graphic Converter を使用しています (他のツールも試しました)。しかし、使用するDXTレベル(DXT1-5)に関係なく、ファイルサイズは元のPNGとほぼ同じです。

4

2 に答える 2

7

PNG は、いくつかの特殊なフィルターを備えたzlibに基づく可逆圧縮形式です。オリジナルとまったく同じイメージを再現することを保証します。

その結果、PNG 圧縮率は可変です。複雑な画像では、圧縮が不十分になります。完全な黒の画像では、圧縮は非常に良好です。

対照的に、DXT 圧縮の圧縮率は固定されています。この比率は、DXT1 では 8:1、DXT5 では 4:1 です (32 ビット RGBA 入力を想定)。DXT5 の利点は、(透明度のための) アルファ チャネルが優れていることです。必要ない場合は使用しないでください。帯域幅の無駄です。

ご想像のとおり、トレードオフは、DXT の品質が変動することです。DXT の品質は単に「十分」と考えられていますが、完璧にはほど遠いものです。画像の複雑な部分では、目に見えるアーティファクト/歪みがいくつかあります。単純なパーツでは、複製はオリジナルにほぼ正確になります。

PNG が機能する方法は、画像全体を 1 バイト ストリームとして圧縮することです。DXT 圧縮のしくみは、画像を 4x4 ピクセルの小さなブロックに分割し、それらを個別に固定圧縮率に圧縮することです。

これにより、根本的に異なるプロパティが作成されます。DXT テクスチャは、GPU ハードウェアによって直接デコードされることになっています。これは非常に高速で、ほとんど無料です。これは、テクスチャが小さなブロックにカットされるという事実によって助けられます。単一のピクセルをプッシュするためにテクスチャ全体をデコードする必要はありません => 適切な 4x4 ブロックをデコードするだけです。このプロパティは、デコード プロセスの鍵となります。

対照的に、PNG は画像全体をデコードするため、すぐ近くの 4x4 近傍を超えた相関関係を見つけることで、圧縮を改善する余地がはるかに大きくなります。しかし、トレードオフは、ピクセルの小さなブロックを取得するだけでは不可能だということです。それは画像全体か、何もないかです。

ご覧のとおり、いずれかの圧縮方法を選択することは、圧縮率の問題ではありません。保存の目的で PNG を選択してください。大量のテクスチャをリアルタイムで高速表示するには (3D ゲームの典型的なシナリオ)、DXT が唯一の方法です。

于 2012-10-18T15:12:00.200 に答える
1

DDS / DXTテクスチャは、PNGよりも小さいことが保証されていません。テクスチャの内容とサイズによって異なります。単色のPNGまたは漫画のpngのようなほとんどの単色は非常に小さく圧縮されますが、写真は一般に十分に圧縮されません。DXTは、DXT1、DXT3、DXT5のいずれであるかに応じて、4対1または6対1の圧縮期間になります。

于 2012-10-13T00:41:56.587 に答える