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,到处找不到,还是翻墙下的。。。哎

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