ATF (Adobe Texture Format)
08 / 30, 2013
各个平台的GPU处理格式
平台 | 格式 |
---|---|
ImgTech (IOS) | PVRTC |
Qualcom (Android) | ETC1 |
Mali (Android) | ETC1 |
NVidia (Android) | ETC1/DXT1/DXT5 |
Android (PowerVR) | PVRT/ETC1 |
Windows | DXT1/DXT5 |
MacOS | DXT1/DXT5 |
如何使用工具
把工具和原格式图片文件放置在同一文件夹下,例子中使用C盘根目录,DOS使用工具指令如下:
//package leaf.png with all 3 formats (DXT5, PVRTC and ETC1x2)
C:\png2atf.exe -c -i leaf.png -o leaf.atf
[In 213KB][Out 213KB][Ratio 99.9703%][LZMA:0KB JPEG-XR:213KB]
//package specific range of mipmaps
C:\png2atf.exe -c -n 0,5 -i leaf.png -o leaf0,5.atf
[In 213KB][Out 213KB][Ratio 99.8825%][LZMA:0KB JPEG-XR:213KB]
//package only DXT format
C:\png2atf.exe -c d -i leaf.png -o leaf_dxt5.atf
[In 85KB][Out 85KB][Ratio 100.045%][LZMA:0KB JPEG-XR:85KB]
//package only ETC1 format
C:\png2atf.exe -c e -i leaf.png -o leaf_etc1.atf
[In 85KB][Out 85KB][Ratio 100.045%][LZMA:0KB JPEG-XR:85KB]
//package only PVRTC format
C:\png2atf.exe -c p -i leaf.png -o leaf_pvrtc.atf
[In 42KB][Out 42KB][Ratio 100.089%][LZMA:0KB JPEG-XR:42KB]
如果你想在你的ATF存储未压缩的纹理,只要不使用-c参数
//package as uncompressed (RGBA) format
C:\png2atf.exe -i leaf.png -o leaf_rgba.atf
[In 341KB][Out 43KB][Ratio 12.8596%][LZMA:0KB JPEG-XR:43KB]
还有一个很酷的功能是,流式纹理的ATF也可以使用,你可以这样做以生成3个文件:
png2atf -m -n 0,0 -c -i cubecat0.png -o cubecat_c_high.atf
png2atf -m -n 1,2 -c -i cubecat0.png -o cubecat_c_med.atf
png2atf -m -n 3,20 -c -i cubecat0.png -o cubecat_c_low.atf
在Stage3D
中使用压缩纹理
你需要使用Texture.uploadCompressedTextureFromByteArray 这个方法来上传压缩纹理,这个API可以设定该压缩纹理是否使用透明通:
class Example
{
[Embed( source = "mytexture.atf", mimeType="application/octet-stream")]
public static const TextureAsset:Class;
public var context3D:Context3D;
public function init():void
{
var texture:Texture = context3D.createTexture(256, 256,
Context3DTextureFormat.COMPRESSED_ALPHA, false);
var textureAsset:ByteArray = new TextureAsset() as ByteArray;
texture.uploadCompressedTextureFromByteArray(textureAsset, 0);
}
}; 立方体纹理你可以这样写:
var texCubemap:CubeTexture = context3D.createCubeTexture(256, Context3DTextureFormat.COMPRESSED_ALPHA, false);
var textureAsset:ByteArray = new TextureAsset() as ByteArray;
texCubemap.uploadCompressedTextureFromByteArray(textureAsset, 0);
另外,根据是否使用透明通道,必须在的片段着色器里使用下面的设置:
1、普通的纹理 Context3DTextureFormat.BGRA
2、“DXT1”(没有透明通道的压缩纹理)Context3DTextureFormat.COMPRESSED
3、“DXT5”(拥有透明通道的压缩纹理)Context3DTextureFormat.COMPRESSED_ALPHA
在Starling
中的用法
[Embed(source="starling.atf", mimeType="application/octet-stream")]
public static const CompressedData:Class;
var data:ByteArray = new CompressedData();
var texture:Texture = Texture.fromAtfData(data);
var image:Image = new Image(texture);
addChild(image);
使用要求
如果你使用ATF纹理,那么你需要注意下面几点:
1、如果您使用是`starling`,你至少需要`1.2`版本。在`[Github](https://github.com/PrimaryFeather/Starling-Framework)`上获取,或者官方下载最新版本。
2、如果你是自己封装`Stage3D`,那么你需要使用最新的`AGALMiniAssembler`
3、你至少需要`AIR SDK 3.4` ,或者下载`Flash Builder 4.7AIR 3.4 SDK`。
4、需要Flash播放器`11.4/AIR 3.4`
5、您需要添加编译器参数`“-swf-version=17”`
命令说明:
-i 指定需要转换的文件名
-o 指定输出的文件名
-c 是否压缩。如果不压缩不要填写该参数即可
-q <0-180> 压缩质量越低质量越高
-r 是否使用JPEG-XR+LZMA压缩以减少文件大小
-n <start,end> 生成mip的等级
例子 png2atf -c -r -q 0 -n 0,1 -i ui.png -o ui.atf
comments powered by Disqus