简单来说,ASTC是GPU上支持解压的一种压缩格式,相对于jpg、png作为CPU上支持解压的压缩格式。
如果使用jpg、png这种图片格式送显会消耗带宽,尤其是高分辨率。例如,1080*1920png来说,送显的步骤,png先解压为rgba,其解压后的数据1080*1920*4.然后这些数据送到GPU去渲染。
而ASTC格式直接将原数据送到GPU后再解压显示,CPU和GPU之间传送的数据少很多。
在Unity中经测试,一张1344*768的jpg图片转成同分辨率astc8*8的图片,其在硬盘占用的数据由261KB变成了375KB,虽然硬盘占用变大了,但是加载显示二者在内存中占用相差近20倍。jpg图片加载到内存的大小是13MB,astc图片加载内存的大小是0.7MB。
硬盘占用 | 内存占用 | |
jpg | 261KB | 13MB |
astc | 375KB | 0.7MB |
首先省去CPU解码步骤,加载到内存更快。另外,和网络中的带宽一样,CPU和GPU之间带宽有限,传输的数据减少会更通畅。CPU需要处理的数据减少,功耗也会降低,游戏中图片资源处理是大头。
最终表现就是画面更流畅。