Away 教程 http://away3d.com/tutorials/Introduction_to_ATF_Textures
starling 教程 http://wiki.starling-framework.org/manual/atf_textures#other_resources
abobe 官方教程 http://www.adobe.com/cn/devnet/flashruntimes/articles/introducing-compressed-textures.html
http://www.adobe.com/cn/devnet/flashruntimes/articles/atf-users-guide.html
1、用texturepacker打包圖片 --pack-mode Best --no-trim --size-constraints AnySize --png-opt-level 0 --algorithm MaxRects --reduce-border-artifacts
默認會設置shape pading 爲2,這樣打包出來會比cs6的spritesheet打包圖片大一點
--reduce-border-artifacts 實際沒有看到效果,不知道是作用在圖片還是作用在生成的xml,官方說明爲:
Adds color to transparent pixels by repeating a sprite's outer color values.
These color values can reduce artifacts around sprites and removes dark halos at transparent borders. This feature is also known as "Alpha bleeding".
--size-constraints AnySize 轉成atf時,是要求長款是2的冪,如果是塊數據(DXT1、 ETC1 和 PVRTC 4bpp)則長寬相等並且都是2的冪,所以也是不是一定必要
2、關於atf與png
此片文章有比較詳細說明:http://jacksondunstan.com/articles/2010
基本是說png用的cpu內存,在傳給gpu,atf是直接可以給gpu用的bytearray
3、png2atf 工具各參數
主要說一下官方沒有說明確的參數
-e 這個參數是生成minimap時,用空圖片替代(項目裏看到的,實踐出是這個效果,所以大小會小一點)
-r 爲使用JPEG-XP方式壓縮,只對塊格式有效,對RGBA格式沒有效果
http://jacksondunstan.com/articles/2040 比較了ZLib和LZMA的壓縮效率,abode默認提供zlib和jpeg-xp壓縮,好像jpeg-xp使用lzma壓縮
當然壓縮瞭解壓費時可能會大也是一個考慮因素
http://jacksondunstan.com/articles/2013 講到不同的圖片內容,各格式出來的大小不同,atf可能比png更大,在沒有壓縮的情況下
-4 |
命令 JPEG XR 編碼器在內部使用 4:4:4 色彩空間。 這是基於塊的壓縮的默認設置。 在某些情況下,最好對 RGB/RGBA 紋理使用這個色彩空間,例如,在您發現紅色或藍色圖形或者法線貼圖周圍存在滲色僞像的情況下。 |
-2 |
命令 JPEG XR 編碼器在內部使用 4:2:2 色彩空間。 Adobe 建議您不要對基於塊的壓縮使用此色彩空間,因爲它可能會造成嚴重僞像。 |
-0 |
命令 JPEG XR 編碼器在內部使用 4:2:0 色彩空間。 通常情況下,Adobe 建議您不要對基於塊的壓縮使用此色彩空間,因爲它可能會造成嚴重僞像。 不過,如果圖像數據爲單色,可以考慮採用這個選項。 |
塊 不壓縮 不影響大小
塊 壓縮 影響大小
RGBA 壓縮/不壓縮 影響大小,而且同一參數效果一樣
4、各格式圖片運行效率
自己沒有具體去測試,http://forum.starling-framework.org/topic/atf-observations-ymmv 測試表明,atf運行時間和使用內容遠強過png,同等quality下 PVRTC 圖片效果會好於dxt和etc1,之後就在討論怎麼在保證時間和使用內存的前提下,有更好的顯示效果
如果atf用uncompressed RGB888 格式,0.3s的時間和用ImageDecodingPolicy.ON_LOAD下載png的0.37s相差不大,但是不會有圖像的損失。
最後總結了顯示效果的影響因素:
Factors
at play:
- Position of sprite in sprite sheet when the block encoding happens.
- Alpha bleed affected by nearby sprites
- Art style
- Translucency vs on/off transparency.
項目裏戰鬥外2D,如果圖片用pngalpha查看爲alpha,則用uncompressed RGB888,如果是 opaque,則用dxt 加壓縮
吐槽下天朝的網,下個atftools,到處找不到,還是翻牆下的。。。哎