ASTC图片纹理压缩探讨

ASTC中ARM研发的一种较新的贴图压缩格式,从IOS9(A8架构,现在都iOS12了)开始支持ASTC压缩格式 ,相对于PVRTC2/4而言,ASTC(4X4)的压缩比会增加到0.25,不过显示效果也会好很多,而且不要求图片长宽相等且为2的幂次方。而且Android设备也支持。

图片压缩核心思想是将大图分为多个颜色块,每个颜色块固定大小为16-bytes,单个颜色块里的颜色像素怎么划分不关心,这里只记录下ASTC格式图片压缩后的像素大小、图片压缩率、图片总体大小。

对此格式图片的压缩率可能是一些公司面试的考点。

公式

像素大小 = 16-bytes / 分块宽高 * 8-bit;

压缩率 = 原始像素大小(32-bit) / 像素块大小;

图像大小 = 原始图片大小 / 压缩率;

假设一张4MB的1024*1024原始图片:

块宽高 像素大小(bits) 压缩率 压缩后图片大小
4*4 8 4 1MB
5*5 5.12 6.25 655KB
8*8 2 16 256KB
10*10 1.28 25 163KB
12*12 0.89 35.95 113.93KB

参考:

https://www.khronos.org/opengl/wiki/ASTC_Texture_Compression

https://www.khronos.org/registry/OpenGL/extensions/KHR/KHR_texture_compression_astc_hdr.txt

https://blog.csdn.net/ltycloud/article/details/81630515

在官方文档上也有ASTC的压缩率:

https://docs.unity3d.com/Manual/class-TextureImporterOverride.html

原文地址:https://www.cnblogs.com/bylle/p/12212823.html

时间: 2024-10-14 18:41:34

ASTC图片纹理压缩探讨的相关文章

干货:Unity游戏开发图片纹理压缩方案

原文:http://www.jianshu.com/p/f7c3741f22af Unity3D引擎对纹理的处理是智能的:不论你放入的是PNG,PSD还是TGA,它们都会被自动转换成Unity自己的Texture2D格式. 在Texture2D的设置选项中,你可以针对不同的平台,设置不同的压缩格式,如IOS设置成PVRTC4,Android平台设置成RGBA16等. 嗯,非常的智能. 但是,在一些进阶的使用中,一些情况是难以满足的. 比如,我们NGUI的图集纹理,在Android平台,使用ETC

纹理压缩

CCImage作为cocos2dx texture的核心处理函数包含了丰富的底层API调用和纹理格式操作,我想以CCImage来作为切入点发散性地去做扩展可能更加容易加深我们对cocos2dx引擎的理解,话不多说. #define CC_GL_ATC_RGB_AMD 0x8C92 #define CC_GL_ATC_RGBA_EXPLICIT_ALPHA_AMD 0x8C93 #define CC_GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD 0x87EE CCImage

移动平台纹理压缩格式选择

1)移动平台纹理压缩格式选择2)Unity 2018是否在Mali GPU上支持Alpha 8格式3)如何在Unity自带的Navmesh上获取地面高度4)ParticleSystem无法重新播放5)UI开发中按界面的打开顺序返回到上级面板的问题 Texture Q:在这之前了解过纹理压缩的相关知识和UWA的一些推荐方式.但还是有一点小的疑问,所以在这里再次提出来,希望得到解答. 在纹理压缩格式的选择上,如果Android选用ETC,iOS选用PVRTC,因为有2的次方(ETC1和PVRTC)长

常用纹理和纹理压缩格式

转载至: http://blog.csdn.net/ynnmnm/article/details/44983545 by 夜风 简单纹理格式 RGBA8888 每个像素4字节,RGBA通道各占用8位 RGBA4444 每个像素2字节,RGBA通道各占用4位 RGB888 每个像素3字节,RGB通道各占用8位,无透明通道 RGB565 每个像素2字节,RGB通道各占用5/6/5位,无透明通道 RGBA5551 每个像素2字节,RGB通道各占用5位,透明通道1位,所以要么完全透明要么不透明 DXT纹

为什么需要纹理压缩

"最近在玩什么游戏,推荐一个".不管是谁,总会说过或听过这个问题吧. 这时候,你脑海里面浮现的也许是这样的画面 或许最终小伙伴们也能接受这样的游戏 但还是会有一些玩家更怀念这样的游戏 在软件开发,特别是三维应用中,纹理随处可见,但受限于网络环境和硬件能力,纹理也是一大瓶颈.而且在一般的三维应用中,纹理所占大小基本都会在1/2以上,模型中往往超过2/3.或许你会说,纹理不就是一张图吗,有那么重要吗? 如下两张对比图,可能你会认为前者逼格高,但对于正常人而言,后者显然要好很多.正是有了纹理

cocos2d-x 图片纹理优化 资源加载方案

原文地址:http://blog.sina.com.cn/s/blog_64d591e80101me1y.html 文章主要解决了我一直以来疑惑的几个问题 1.到底用不用2的N次幂的图片 2.为什么加载资源的时候,内存会突然飙高 3.内存突然飙高的解决方案 4.如何解决程序在加载资源卡的问题 首先是cocos2d-x官网上的优化建议 一帧一帧载入游戏资源 减少绘制调用,使用"Use CCSpriteBatchNode" 载入纹理时按照从大到小的顺序 避免高峰内存使用 使用载入屏幕预载入

移动前端—H5实现图片先压缩再上传

在做移动端图片上传的时候,用户传的都是手机本地图片,而本地图片一般都相对比较大,拿iphone6来说,平时拍很多图片都是一两M的,如果直接这样上传,那图片就太大了,如果用户用的是移动流量,完全把图片上传显然不是一个好办法. 目前来说,HTML5的各种新API都在移动端的webkit上得到了较好的实现.根据查看caniuse,本demo里使用到的FileReader.Blob.Formdata对象均已在大部分移动设备浏览器中得到了实现(safari6.0+.android 3.0+),所以直接在前

Atitit. 图像处理jpg图片的压缩 清理垃圾图片 java版本

Atitit. 图像处理jpg图片的压缩  清理垃圾图片 java版本 1. 清理图片压缩图片尺寸 1 2. 所以要使用ImageWriter 1 3. Thumbnails质量压缩builder.outputQuality(0.9); 2 4. attilax框架的处理 code 2 5. 到一篇文章提到如何控制jpg图片后压缩的质量 3 6. 参考 4 1. 清理图片压缩图片尺寸 目标::300kb>>>10kb.. 处理流程:::scale,outputQuality(0.5) 裁

android图片的压缩

1.质量压缩  bmp.compress() 这种压缩方法之所以称之为质量压缩,是因为它不会减少图片的像素.它是在保持像素的前提下改变图片的位深及透明度等,来达到压缩图片的目的.进过它压缩的图片文件大小会有改变,但是导入成bitmap后占得内存是不变的.因为要保持像素不变,所以它就无法无限压缩,到达一个值之后就不会继续变小了.显然这个方法并不适用与缩略图,其实也不适用于想通过压缩图片减少内存的适用,仅仅适用于想在保证图片质量的同时减少文件大小的情况而已. 2.大小压缩 BitmapFactory