ATF(Adobe Texture Format)简介

2024-02-04 15:18
文章标签 简介 adobe format texture atf

本文主要是介绍ATF(Adobe Texture Format)简介,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

[转]ATF(Adobe <wbr>Texture <wbr>Format)简介


ATF(Adobe Texture Format)是一种能提供最佳压缩效果的文件格式。ATF 文件主要是一个存储有损纹理数据(lossy texture data)的文件容器。它主要使用了两种类似技术:JPEG-XR1 压缩技术和基于块的压缩技术(简称块压缩技术),来实现它的有损压缩。
ATF 为 GPU 优化贴图,支持压缩贴图格式 ATF,减少在使用中显存的总量。这点对于移动设备特别重要。
ATF 格式全称 Adobe Texture Format,说白了,就是奥多比专用贴图格式。这里大家注意到没有?Texture 这个词是在 GPU 加速的字典里才出现的。普通的图只能叫 BitmapData 而到了 GPU 里才能叫 Texture。证明这个 ATF 格式是和 Flash Player 11 支持 GPU 硬件加速是紧密相连的。
那么 ATF 能实现哪些功能让 GPU 加速?ATF 支持2种格式,其中支持一种 DXT1 的格式。问谷哥,这种格式由显卡公司 S3 开发,能够大幅节省显存。而目前流行的格式有 DXT1,DXT3,DXT5 等。这里得给大家做个科普,一张图片在内存里的大小,是根据公式 size = width * height * BPP 决定的。加入一张1024 X 1024的真彩色图片,那么在内存里就 占用了 4MB 空间 。假如使用 DXT1 格式,那么将大幅度减少占用量减少到原来的30%。大幅节省空间。由于解压缩算法是GPU硬件完成,所以能够同时获得空间压缩以及GPU加速的效果。这也就是为什么这种格式如此流行的原因了。
此外还有朋友问,JPEG和PNG也是压缩格式也能获得压缩他们和ATF有什么区别呢JPEG和PNG在外部的确是压缩保存的,当他们被加载, Flash 会做2件事情:
1. 从外部读取2进制文件;
2. Decode,从压缩的二进制还原到 BitmapData;
大家注意到没有?这里就存在巨大的性能损失了!因为 Decode 是由 CPU 完成的,在游戏运行时做这件事情比较频繁的话,就很容易引起卡顿。而这是众多大型MMO游戏卡的根本原因。
而用了 ATF 格式,由于解压缩算法由 GPU 完成,所以 Flash 只要做一件事情,就是加载上传就搞定了,具体调用的 API 接口是 Texture3D.uploadCompressTexture 直接加载,上传搞定。不存在 CPU 开销巨大的 Decode,从根本上保证了游戏流畅度。
当然 ATF 格式作为一个新生儿,还是有很大的成长空间。
1. ATF 需要在未来支持更多的 DXT 格式,最好1-5都能支持。当然这取决于目标硬件的普及程度。(赵客注:ATF 已经支持 DXT5了。感谢James Li 提醒!)
2. ATF 需要优化算法和存储结构,减少本身的体积占用,目前 ATF 格式要比 PNG 格式大20%。
3. 需要整合进 Adobe 各种产品线,比如 Photoshop 能够直接保存出 ATF 格式。
4. 外围拓展,将 ATF 整合进3ds Max,Maya 等3D工具,以及整合进各种3D引擎。

关于Texture:
Mip 映射是一个重要却简单易懂的概念。将一个纹理保存多个缩小版本的方式就叫做 Mip 映射。
【PS:如一个 256*256 尺寸的纹理被保存了 128*128、64*64….1*1 这么多版本的纹理于内存中】。
需要注意的是,若要使用 Mip 映射,那么你的纹理尺寸必须保证为2的倍数(1, 2, 4, 8, 16, 32, 64, 128, 256,512, 1024, 2048),但形状不一定必须是矩形。如果你没有遵守这个规则,那么 Starling 将会为你自动创建一个与当前纹理尺寸最接近的能被2整除的数值作为尺寸的纹理(如你使用的纹理尺寸为31*31,那么 Starling 会为你创建一个32*32尺寸的纹理),但这可能会对内存有一点消耗。为了确保尽可能地优化纹理的内存占用,我们建议您最好使 texture atlases(翻译成中文叫做纹理贴图集,但是没多少人会用中文称呼之),也被广泛称作 SpriteSheet(翻译成中文叫做精灵表,但是也没人这么叫它,都直接用英文名称呼的)的素材集成、使用方式。稍后我们会接着讨论它。
为了保证最佳的呈现品质,GPU 需要一个图片的全部 Mip 映射等级,即由原始尺寸依次除以二直到除不尽 2 了为止。
【PS:对于一个 128*128 尺寸的纹理来说,它的全部 Mip 映射等级为:64*64,32*32,16*16,8*8,4*4,2*2 以及 1*1】
Starling框架能够自动替你生成全部 Mip 映射等级,若是你不用 Starling框架的话,那你就得通过使用 BitmapData.draw 这个 API 并使用一个缩小一倍的 Matrix 作为参数来手动地生成全部的映射等级。
建议为2D内容使用Mip映射,这样可以使它们在缩放时能够减少锯齿的产生。

原文出处:
​http://hi.baidu.com/sgfswen/item/5f8f15ea0a0cf8c9bbf37da6

这篇关于ATF(Adobe Texture Format)简介的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/677930

相关文章

Java Docx4j类库简介及使用示例详解

《JavaDocx4j类库简介及使用示例详解》Docx4j是一个强大而灵活的Java库,非常适合需要自动化生成、处理、转换MicrosoftOffice文档的服务器端或后端应用,本文给大家介绍Jav... 目录1.简介2.安装与依赖3.基础用法示例3.1 创建一个新 DOCX 并添加内容3.2 读取一个已存

Java中最全最基础的IO流概述和简介案例分析

《Java中最全最基础的IO流概述和简介案例分析》JavaIO流用于程序与外部设备的数据交互,分为字节流(InputStream/OutputStream)和字符流(Reader/Writer),处理... 目录IO流简介IO是什么应用场景IO流的分类流的超类类型字节文件流应用简介核心API文件输出流应用文

Spring Security简介、使用与最佳实践

《SpringSecurity简介、使用与最佳实践》SpringSecurity是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架,本文给大家介绍SpringSec... 目录一、如何理解 Spring Security?—— 核心思想二、如何在 Java 项目中使用?——

Java Stream 并行流简介、使用与注意事项小结

《JavaStream并行流简介、使用与注意事项小结》Java8并行流基于StreamAPI,利用多核CPU提升计算密集型任务效率,但需注意线程安全、顺序不确定及线程池管理,可通过自定义线程池与C... 目录1. 并行流简介​特点:​2. 并行流的简单使用​示例:并行流的基本使用​3. 配合自定义线程池​示

PostgreSQL简介及实战应用

《PostgreSQL简介及实战应用》PostgreSQL是一种功能强大的开源关系型数据库管理系统,以其稳定性、高性能、扩展性和复杂查询能力在众多项目中得到广泛应用,本文将从基础概念讲起,逐步深入到高... 目录前言1. PostgreSQL基础1.1 PostgreSQL简介1.2 基础语法1.3 数据库

Python库 Django 的简介、安装、用法入门教程

《Python库Django的简介、安装、用法入门教程》Django是Python最流行的Web框架之一,它帮助开发者快速、高效地构建功能强大的Web应用程序,接下来我们将从简介、安装到用法详解,... 目录一、Django 简介 二、Django 的安装教程 1. 创建虚拟环境2. 安装Django三、创

MySQL中DATE_FORMAT时间函数的使用小结

《MySQL中DATE_FORMAT时间函数的使用小结》本文主要介绍了MySQL中DATE_FORMAT时间函数的使用小结,用于格式化日期/时间字段,可提取年月、统计月份数据、精确到天,对大家的学习或... 目录前言DATE_FORMAT时间函数总结前言mysql可以使用DATE_FORMAT获取日期字段

MySQL 索引简介及常见的索引类型有哪些

《MySQL索引简介及常见的索引类型有哪些》MySQL索引是加速数据检索的特殊结构,用于存储列值与位置信息,常见的索引类型包括:主键索引、唯一索引、普通索引、复合索引、全文索引和空间索引等,本文介绍... 目录什么是 mysql 的索引?常见的索引类型有哪些?总结性回答详细解释1. MySQL 索引的概念2

Qt QCustomPlot库简介(最新推荐)

《QtQCustomPlot库简介(最新推荐)》QCustomPlot是一款基于Qt的高性能C++绘图库,专为二维数据可视化设计,它具有轻量级、实时处理百万级数据和多图层支持等特点,适用于科学计算、... 目录核心特性概览核心组件解析1.绘图核心 (QCustomPlot类)2.数据容器 (QCPDataC

rust 中的 EBNF简介举例

《rust中的EBNF简介举例》:本文主要介绍rust中的EBNF简介举例,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. 什么是 EBNF?2. 核心概念3. EBNF 语法符号详解4. 如何阅读 EBNF 规则5. 示例示例 1:简单的电子邮件地址