2

現時点では、これが完全に公式にサポートされているわけではないことは承知していますが、オープンソースプロジェクトのATF-Encoderを使用してATFテクスチャを生成しようとしています。uploadCompressedTextureFromByteArray次に、それ自体をFP11以降でサポートされているStage3DTextureにアップロードしようとしています。

これは、テクスチャが正しくアップロードおよび表示されるという意味で機能します。また、特にエンコード中に量子化係数を増やした場合、結果のテクスチャに圧縮アーティファクトがあり、結果のByteArrayが「生の」テクスチャよりもはるかに小さい(約20分の1)ことを確認できます。

ただし、Process ExplorerでGPUの使用量を測定すると、予想されるはるかに小さい値ではなく、テクスチャごとにまったく同じ量のVRAM(つまり、ピクセルごとに5.333バイト)を消費しています。

テクスチャは、圧縮モードではなくBGRAモードで作成されます。圧縮しようとすると、アップロードしようとすると「互換性のない形式」になります。私が収集できることから、ATF形式は「圧縮モード」テクスチャをサポートしていますが、ATFエンコーダはそのフラグが設定されたテクスチャを出力しませんか?(圧縮が完了した後にフラグを強制的にオンにしようとしましたが、当然のことながら、Flashがクラッシュするだけです)

誰かがこの問題に関する詳細情報を持っていますか?適切なATFをエンコードし、圧縮フラグを使用してアップロードすると、問題は解決しますか?または、これは実装のバグであり、圧縮されたペイロードを受け入れますが、アップロード時に圧縮を解除しますか?ここにある情報は本当に貴重です。

これはハードウェアモードで、AMD Radeon 6450、Windows 7 64ビット、Flash Player 11.3(11.4ベータでも同じことが起こります)です。

4

2 に答える 2

4

renaunが何を言っているかを明確にするために、ATFでは複数のタイプの圧縮が機能しています。

ブロック圧縮(PVRTC、DXT5、およびETC1)は、GPUメモリの節約を反映する圧縮タイプです。ブロック圧縮を使用しない場合、テクスチャはRGBAとしてアップロードされ、PNGと同じ量のGPUメモリを使用します。

それとは別に、ブロック圧縮を使用したかどうかに関係なく、JPEGXRをATFファイルに適用することもできます。これにより、ATFのファイルサイズは減少しますが、必要なGPUメモリの量は減少しません。量子化レベル0はロスレスであるため、それ以上のアーティファクトは発生しませんが、Adobeのpng2atfユーティリティを使用すると、量子化係数(圧縮レベル)を設定できます。

結論:引用したオープンソースのATFエンコーダーはブロックレベルの圧縮をサポートしていないため(オープンソースの圧縮コードがないため)、GPUメモリの使用量を減らすテクスチャを作成できません。

さらに、ATFはコンテナ形式です。これは、画像の1つ以上のエンコーディング(ブロック圧縮のタイプ)を保持できることを意味します。ATFを動作させるプラットフォームに応じて、PVRTC、ETC1、DXT5の任意の組み合わせを含むATFファイルを作成できます。たとえば、iOSのビルドプロセスパッケージ.atfファイルは、.ipaファイルをパッケージ化する場合にのみ使用でき、Androidの場合は.apkファイルをパッケージ化する場合にのみ使用できます。

IMO、スイートスポットはブロック圧縮+ロスレスJPEGXR圧縮です。これは、GPUメモリの節約+小さなファイルサイズを表します。このためのコマンドライン(ここでも、Adobeのpng2atfを使用)は次のとおりです。

PVRTC(iOS):

png2atf -cp -r -i image.png -o image.atf
ETC1(Android):
png2atf -ce -r -i image.png -o image.atf
DXT5(デスクトップ):
png2atf -cd -r -i image.png -o image.atf
1つの.atfファイルに含まれる3つの形式すべて:
png2atf -c -r -i image.png -o image.atf

また、ブロック圧縮により、かなり醜いアーティファクトが発生する可能性があることにも注意してください。GPUメモリの節約が必要な場合にのみ使用します。

更新-DaveWalkerのコメントに関して-はい、PVRTexToolは高品質の結果を作成する上でより良い仕事をします。GUIとコマンドラインがあり、GUIを使用してすべてのオプションを自分で調べることができますが、私のお気に入りのコマンドラインオプション(漫画風のスプライトを使用した半透明のPNGの最高品質)は次のとおりです。

PVRTexToolCL -i image.png -o image.pvr -m -l -f PVRTC1_4 -q pvrtcbest -mfilter cubic

于 2013-01-25T15:57:28.780 に答える
2

ATFは、さまざまな形式を1つのファイルにパッケージ化するのに役立つ単なるファイルコンテナ形式です。複数のファイルタイプをATFファイルに入れる必要はありませんが、入れることはできます。dxt1 / 5、pvrtcなど、デスクトップおよびモバイルデバイス用のさまざまな圧縮テクスチャがあります。ATFはRGBAデータの包含もサポートしているため、同じテクスチャメモリサイズが表示されます。圧縮されたテクスチャがある場合は、おそらく異なるでしょう。

ある時点でAdobeから提供されるATFツールがいくつかあります。このフォーラムでThibaultのコメントを参照してください-http ://forum.starling-framework.org/topic/atf-adobe-texture-format/page/2

ATF-Encoderソースコードを使用して、その圧縮がdxtで機能するかどうかを確認していません。

于 2012-08-27T21:22:36.683 に答える