GPU PRO 5 - 4.6 Adaptive Scalable Texture Compression 笔记

本笔记仅为个人的理解,如果有误欢迎指出。

Adaptive Scalable Texture Compression

自适应可拓展纹理压缩

简称ASTC,移动端一种常用的贴图压缩格式,在现代的游戏引擎中多有应用,比如Untiy。

ASTC 是 ARM 公司开发的一种纹理压缩格式,其目标是为此前种类繁杂、灵活性不足的纹理压缩格式提供一种统一且灵活的解决方案。它是一种基于块的纹理压缩算法。

基于块的意思是对数据的处理都是基于Block的,也就是图片会被分割成很多的大小相同的小的Block,然后一个Block的数据会被用更少的数据表示,压缩后的数据也只用来表示这个Block的数据。

而ASTC中,每个块都可以存储最多4个顶点(正方形的四个角)的颜色,并根据从预设的颜色计算公式中挑选合适的算法保存。如下图,在文章中这个算法称为分布模式(Distribution Pattern)

最后,在解压缩时就可以根据块上存的顶点颜色以及颜色的分布模式计算出当前块压缩前的颜色。由此可见,ASTC是一种有损的图像压缩格式,因为不是所有颜色块都能有完美的颜色分布模式保证颜色和压缩前一致。

同时,一个Block中,可能存在多个符合条件的分布模式,ASTC算法就会在这里对压缩后最终图像的质量和时间做权衡。质量要求越高,压缩算法在最终决定最佳方案之前,就会尝试更多种候选组合。

但是解压缩的时间是固定的。

参考资料:

深入理解ASTC

相关推荐
Rabitebla4 小时前
【Linux】进程控制(十二) 自定义 Shell(二):内建命令与进程工作目录管理
linux·c++·笔记·学习·bash
坤坤子吖9 小时前
Linux网络编程:TCP 粘包与半包问题,如何正确处理 TCP 流式数据?
linux·服务器·网络·笔记·网络协议·学习
YLCHUP13 小时前
【思维&图论建模】题解:债权(debt)_图论_建模_思路转化_思维题目_C++算法竞赛
c++·笔记·算法·数学建模·贪心算法·深度优先·图论
旖旎夜光14 小时前
【C++ 基础入门】C++11 新特性(中):右值引用、移动语义与完美转发
开发语言·c++·笔记·学习
星恒随风1 天前
MySQL 从零入门(五):MySQL 内置函数详解——日期、字符串、数学函数与实战案例
linux·数据库·笔记·sql·mysql
2603_969694851 天前
【JavaWeb学习记录】MyBatis核心知识点与实战笔记:从入门到动态SQL
笔记·sql·学习·mysql·mybatis·javaweb·学习方法
可乐ea1 天前
智能体记忆该拆成几层:笔记、记忆表示与注入上下文
服务器·数据库·笔记·ai智能体·提示词工程·上下文工程·记忆系统
Go Work1 天前
两个等值条件摆着,MySQL 偏要全表扫
经验分享·笔记
Oll Correct1 天前
Adobe illustrator 案例十四:花元素标志草图绘制
笔记·ui·adobe·illustrator
每月一号准时摆烂2 天前
服务器运维笔记(一)——使用shell编写实时查看BMC功率的脚本
运维·服务器·笔记