ATF Textures

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".

This only works when Premultiply alpha is turned off.
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,到處找不到,還是翻牆下的。。。哎

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章