带你读《2022技术人的百宝黑皮书》——内存优化: 纹理压缩技术(2)

简介: 带你读《2022技术人的百宝黑皮书》——内存优化: 纹理压缩技术(2)

带你读《2022技术人的百宝黑皮书》——内存优化: 纹理压缩技术(1)https://developer.aliyun.com/article/1340980?groupCode=taobaotech


主流纹理压缩格式、原理及兼容性情况

 

纹理压缩格式


 

格式

 

WebGL扩展名

 

简介

 

 

ETC1

 

 

WEBGL_compressed_- texture_etc1

 

ETC(Ericsson Texture Compression)是Khronos 开放标准,专利来自于瑞典爱立信公司,它在移动平台中广泛采用,是一种为感知质量设计的有损算法,它基于人眼对亮度而不是色度更敏感这一事实,在每个block定义四种不同的亮度偏移,即四种不同的颜色可用,可以认为这些颜色就是一个局部调色板,ETC会把4x4的像素块压缩成一个64或128位的数据块。 ETC有两种压缩格式:ETC1和ETC2。纹理长宽必须是2的幂次方; ETC1基本所有Android机型都支持,但是缺陷是不支持Alpha通道; ETC2是ETC1的扩展,向下兼容ETC1。支持Alpha,但是需要开启OpenGL ES 3.x。

image.png

 

ETC1

 

WEBGL_compressed_- texture_etc1

 

 

ASTC

 

 

WEBGL_compressed_- texture_astc

 

ASTC(Adaptive Scalable Texture Compression)是目前最强大的纹理压缩格式,由ARM & AMD研发。ASTC同样是基于block的压缩方式,但块的大小却较支持多种尺寸,比如从基本的4x4到12x12;每个块内的内容用128bits来进行存储,因而不同的块就对应着不同的压缩率;相比ETC, ASTC不要求长宽是2的幂次方。

 

image.png

 

 

PVRTC

 

 

WEBGL_compressed_- texture_pvrtc

PVRTC(PowerVR Texture Compression),专为 PowerVR 图形核心系列设计,IOS平台都支持,它使用2张双线性放大的低分辨率图,根据精度和每个像素的权重,融合到一起来呈现纹理;PVRTC 2-bpp把一个8×4的像素单元组压成一个64位的数据块,压缩效果比较差;PVRTC 4-bpp把一个4×4的像素单元组压成一个64位的数据块;PVRTC压缩要求图片的大小必需是正方形而且边长必需是2的幂次方。

image.png

S3TC

WEBGL_compressed_- texture_s3tc

S3TC(S3 Texture  Compression)基本思想是把4x4的像素块压缩成一个64或128位的数据块,有损压缩。S3TC算法有五种变化DXT1-DXT5,一 般在桌面设备上面使用,详见wiki。

 

 

压缩纹理素材生产

 

image.png

 

如上所示,设计师产出png/jpeg素材后,可以通过工具生成.ktx格式的压缩纹理素材,随后就可以在项目中直接使用了。不同格式的压缩纹理生产工具也不一样(PVETextTool、Adreno Texture Tool、...),而为了在各个平台中都能使用,通常需要生成不同格式的压缩纹理,社区有一些工具做了二次封装,可以生成多种格式的压缩纹理, 如texture-compressor等。

 

带你读《2022技术人的百宝黑皮书》——内存优化: 纹理压缩技术(3)https://developer.aliyun.com/article/1340978?groupCode=taobaotech

相关文章
|
1月前
|
KVM 虚拟化
KVM的热添加技术之内存
文章介绍了KVM虚拟化技术中如何通过命令行调整虚拟机内存配置,包括调小和调大内存的步骤,以及一些相关的注意事项。
42 4
KVM的热添加技术之内存
|
1月前
ARM64技术 —— MMU处于关闭状态时,内存访问是怎样的?
ARM64技术 —— MMU处于关闭状态时,内存访问是怎样的?
|
3月前
|
存储 缓存 Java
Android性能优化:内存管理与LeakCanary技术详解
【7月更文挑战第21天】内存管理是Android性能优化的关键部分,而LeakCanary则是进行内存泄漏检测和修复的强大工具。
|
3月前
|
机器学习/深度学习 存储 缓存
操作系统中的内存管理技术
在数字世界的复杂架构中,操作系统扮演着枢纽的角色,其中内存管理作为其核心组件之一,保障了计算资源的高效利用与稳定运行。本文将深入探讨操作系统中内存管理的关键技术,包括虚拟内存、分页和分段机制,以及现代操作系统如何通过这些技术优化性能和提高系统稳定性。通过具体实例和数据分析,我们将揭示这些技术如何在实际应用中发挥作用,并讨论它们面临的挑战及未来发展方向。 【7月更文挑战第16天】
|
3月前
|
存储 缓存 安全
操作系统中的内存管理:技术与挑战
在数字化时代,操作系统的内存管理成为计算机科学领域中一个至关重要的技术环节。本文将深入探讨现代操作系统中内存管理的基本原理、关键技术及其面临的挑战。通过对分页、分段、虚拟存储和缓存策略等核心概念的介绍,我们旨在揭示内存管理如何优化系统性能,保障数据安全,并提高资源利用率。同时,文章还将讨论内存泄漏、碎片化以及安全性问题等当前内存管理技术所面临的主要挑战。
56 0
|
2月前
|
存储 编译器 C语言
【C语言篇】数据在内存中的存储(超详细)
浮点数就采⽤下⾯的规则表⽰,即指数E的真实值加上127(或1023),再将有效数字M去掉整数部分的1。
|
3月前
|
存储 分布式计算 Hadoop
HadoopCPU、内存、存储限制
【7月更文挑战第13天】
215 14
|
2月前
|
存储 监控 Docker
如何限制docker使用的cpu,内存,存储
如何限制docker使用的cpu,内存,存储
|
3月前
|
存储 固态存储 芯片
计算机中内存与存储
【7月更文挑战第28天】
44 1
|
3月前
|
存储 弹性计算 程序员
新手程序员如何阿里云服务器配置?新人开发者CPU内存带宽存储怎么选?
对于新手开发者、个人或学生选择阿里云服务器,推荐ECS经济型e实例(ecs.e-c1m1.large),适用于小型网站或轻量应用。配置2核2G内存、3M固定带宽、40G ESSD系统盘,仅99元/年且续费同价。

热门文章

最新文章

下一篇
无影云桌面