2017-01-09 11 views
2

Xcodeでtexturetoolを試して、SceneKitシーンで使用する.pngテクスチャを圧縮しました。 Apple docsごとにいくつかのオプションを試しました。SceneKitで使用するテクスチャを圧縮する方法

texturetool -e PVRTC --channel-weighting-linear --bits-per-pixel-4 -o ImageL4.pvrtc Image.png 

元のpngの3~4倍のサイズになります。私はそれがかなり小さくなることを期待しました。これらは正方形のテクスチャ、2のべき乗などです。最終的にはそれを小さくし、損失の多い最適化パスを実行します。

テクスチャ圧縮(iOS10用)の正しいアプローチは何ですか?

圧縮テスト結果で更新されました。この画像では約だった。サイズの2倍。当然のことながら、結果はtextureToolと同じでした。 PVRTexTool(Imagination Technologies)は、より多様な形式を選択できます。

PVRTests

+0

個人的には、私はPhotoshopと、ほとんどの幾何学的およびベクトル的なもののための非常に良い.png圧縮をお勧めします。視覚的に複雑な画像/写真の場合は.jpg。エンドユーザーの利益のために、アプリケーションの圧縮解除と使用を合理化する方法を見つけること。 PVRTCはパイプラインのビットです。 – Confused

答えて

1

テクスチャの圧縮の観点から「権利」について考えるために(私の頭の上から)三つの主要な方法があります。

  1. 質感が占めるストレージ、そしてあなたが小さいテクスチャファイルサイズの追求の細部の損失の面で受け入れて喜んで妥協。これは実際にテクスチャを物理的に縮小して後で拡大することを含むことができますが、一般的にはさまざまなロッシーなフォーマットで対処しています...

  2. 圧縮率はローディング時間に影響します。パッケージはGPU/CPUとアプリケーションで使用するために圧縮解除されていなければなりません。画像にはテクスチャなどの画像が表示されます。一部の画像フォーマットと圧縮タイプは、他よりも圧縮解除に時間がかかります。あるものは雷が速いが大きいものもある。

  3. 最終的な懸念事項は、GPUメモリでテクスチャを使用する形式です。これは一般的にビットの詳細ですが、いくつかのハードウェアにはいくつかのオプションがあります。それは1色あたり2、4、5、8ビットですか?アルファのビット数は何ですか?

すべてのビデオアクセラレータとシステムが、複数のテクスチャフォーマットに対応しているわけではありませんが、おそらくあなたが発見したようにAppleはそうしています。これらのそれぞれは、サイズとディテールのトレードオフのブレンドです。色の数が少ないほど、グラデーションの定義が少なくなります。アップルのハードウェアは、いくつかのフォーマットを解凍するのにも非常によく、他のフォーマットではひどいものです。パッケージの最終的なサイズは、明らかにデバイスの種類によって異なる懸念があります。

いくつかのストレージ管理を使用する前に、Apple TVで200MBに制限されています。

など

100メガバイトセルデータ以上のアプリのための制限、

+0

pvrtc圧縮後にファイルサイズが小さくなるのは間違っていますか? Appleのドキュメントやその他の記事はすべて、ファイルサイズが小さいことを示しています。テクスチャツールを使って何かが欠けていますか?テクスチャ上のImageOptimのような非可逆圧縮ツールを使用すると、他の問題が発生します。シーンケットエディタではシーンが単色で赤くレンダリングされる場合もありますが、すべてではありません。 – sambro

+0

PVRTCは、.png、TIFF、またはその他の圧縮されていない形式であれ、非圧縮のビットマップよりも小さなファイルサイズを提供します。広く知られていないのは、ほとんどの.png輸出業者(Photoshopなど)が実際に(デフォルトで)非損失性の圧縮を使用していることです。したがって、Photoshopからエクスポートされたシンプルなグラフィック/ベクタースタイルのイメージは、ビットとピクセルのバイトの合計よりもずっと小さくなり、その色は非圧縮状態になります。 PVRTCは、PowerVR GPUでの非常に迅速な復元のために設計された非常に軽くて非常に単純な圧縮形式です。したがって、名前。それは大きな圧縮ではありません。 – Confused

+0

.jpg、賢明に、そして複雑な画像(写真を考えて)を使用すると、圧縮された.pngやPVRTCよりも効果的な圧縮が得られます。 .jpg圧縮のコストは、GPUに必要な正確なデータを解凍して画面に表示するのに、PVRTCファイルを解凍するよりもはるかに時間がかかります。 PVRTCファイルは非常に高速に解凍できるため、ビデオのフルサイズのフレームをフォーマットで保存し、ビデオとして表示するのに十分速く解凍することができます。 .jpg圧縮解除は、PC上であっても、この圧縮解除速度に近いところには到達できません。 – Confused

1

これは、あなたの質問に接線に少しですが、PVRTC here含むテクスチャ圧縮の議論があります。

TLDNR:PNGとJPEGは、テクスチャデータの保存/送信するためには良いかもしれないが、GPUは、それらにアクセスする前に、彼らは完全にメモリに解凍する必要があります)

しかし、あなたが行う場合は質感を持っています圧縮されたPVRTC/ETC/S3TC画像は、PNGでうまく圧縮されますが、データの並べ替えを少しだけ行うと、圧縮されたPVRTC/ETC/S3TC画像がロスレス圧縮(zlibなど)の恩恵を受ける可能性があります。ストレージの問題を解決する可能性があります。

+1

説明とリンクを気に入ってください。いくつかのテストデータで質問を更新しました。 – sambro

+0

更新情報:「ファイルサイズの違いはありません。最高の品質」PVRTexTool + PVRTCを参照しているとします。その設定は、圧縮された表現を検索するとき、すなわち視覚的な違いを減らそうとするときに、圧縮ツールがどれくらいの労力*(すなわちCPUサイクル)を費やすかを変えるだけである。圧縮データは常に4bppまたは2bppのいずれかになります。 時間があれば、〜1MBのPNGを生成する2k * 2kイメージ(RGB * A *?と仮定します)を作成し、gzip/zlibを適用できるかどうかを確認しますメンバーはこれに取り組んだが、彼はそれが完了して棚に置かれる前に残った) –

関連する問題