一、移动平台GPU

参考文档:

各种移动GPU压缩纹理的使用方法 - LuMing - 博客园​www.cnblogs.com

1、Imagination Technologies的PowerVR SGX系列

代表机型:Apple iPhone全系、iPad全系等
2、Imagination Technologies的 PowerVR Rogue系列

3、Qualcomm( 高通)的 Adreno系列

4、ARM的 Mali系列

5、 nVIDIA的Tegra系列

二、常用的纹理格式占用的大小

R8G8B8每个像素占用3个字节,A8R8G8B8每个像素占用 4个字节,可以计算出一张1024*1024大小的RGB 24bits的贴图在不压缩的情况下纹理所占用的大小为3MRGBA 32bits的贴图在不压缩的情况下纹理所占用的大小为4M。所以我们需要对纹理进行压缩。

三、ETC纹理压缩格式(Ericssontexture compression)

  • ETC(ETC1)

ETC原ETC1格式,是OpenGL ES图形标准的一部分,被所有的Android设备所支持。

ETC 4bits 压缩格式每个像素占用0.5字节。常用的压缩格式RGB Compressed ETC 4bits,一张1024*1024大小的贴图压缩后的大小为0.5M,但是ETC并不支持透明通道,早期对于RGBA 32 bits的贴图纹理通常会选用RGBA16 压缩,将一张1024*1024大小的贴图从4M压缩为2M,或者拆分为两张RGB贴图再进行ETC格式的压缩,从4M压缩为2张0.5M。

  • ETC2

自从OpenGL ES 3.0发布后,ETC2压缩格式成为一种标准。 Unity5.2以后,默认的压缩格式为ETC2,ETC2支持透明通道,对于RGB24 bits的贴图可以选择压缩为RGB Compressed ETC2 4bits,一张1024*1024的贴图压缩后的大小为0.5M ;RGBA32 bits的贴图可以选择压缩为RGBA Compressed ETC 8bits,一张1024*1024大小的贴图压缩后的大小为1M。

ETC2的限制是Android设备的GPU必须支持 OpenGL ES 3.0,如果GPU不支持OpenGL ES 3.0,会对这种格式的纹理进行解压缩,占用更多的显存和内存。

  • 压缩质量对比

ETC2 4bits的压缩质量高于ETC 4bits

RGBA ETC2 8bits的压缩质量高于拆分两张RGB ETC 4bits
带透明通道的贴图,使用2张ETC 4bits与2张ETC2 4bits与1张ETC2 8bits对比,ETC2 8bits的压缩质量高于2张ETC2 4bits高于2张ETC 4bits

从左到右:两张ETC1,两张ETC2,一张ETC2

四、PVRTC 纹理压缩格式(PowerVR texture compression)

  • PVRTC

支持PVRTC格式的GPU为ImaginationTechnologies的PowerVR SGX系列。也就是所有的苹果设备可以使用PVRTC压缩格式

PVRTC 4bits 格式每个像素占用0.5字节。对于RGB 24 bits的贴图可以选择压缩为RGB Compressed PVRTC 4bits;RGBA 32 bits的贴图可以选择压缩为RGBA Compressed PVRTC 4bits,一张1024*1024大小的贴图压缩后的大小为0.5M。可见,带透明通道的贴图压缩质量会很差,可以选择拆分为两张RGB贴图再进行RGB Compressed PVRTC 4bits格式的压缩。

PVRTC格式要求纹理的长宽相等,且都是2的幂次(POT),在压缩时会将长宽比非1:1的贴图压缩为1:1,一张1024*512大小的贴图会压缩为1024*1024大小。

五、ASTC纹理压缩格式

  • ASTC

参考文档:

Using ASTC Texture Compression for Game Assets​developer.nvidia.com

ASTC是在OpenGL ES3.0出现后在2012年中产生的一种业界领先的压缩格式,它的压缩分块从4x4到12x12最终可以压缩到每个像素占用1bit以下,压缩比例有多种可选。很重要的是支持RGBA,且适用于2的幂次方长宽等比尺寸和无尺寸要求的NPOT(非2的幂次方)纹理。

以ASTC 4x4 block压缩格式为例,每个像素占用1字节,8bits。一张1024*1024大小的贴图压缩后的大小为1M。

六、其他纹理压缩格式

  • ATITC (ATI texture compression)

支持ATITC格式的GPU为Qualcomm的Adreno系列。

  • DXTC (Directx texture compression)

S3TC(S3 texturecompression)也被称为DXTC,在PC上广泛被使用,支持的GPU为NVIDIA Tegra系列。移动设备上使用GPU为nVIDIA的极少。

七、总结

1、安卓设备运行平台要求支持OpenGL ES 3.0的使用ETC2,RGB压缩为RGB Compressed ETC2 4bits,RGBA压缩为RGBA Compressed ETC2 8bits。

2、安卓设备运行平台需要兼容OpenGL ES 2.0的使用ETC,RGB压缩为RGB Compressed ETC 4bits,RGBA压缩为RGBA 16bits。(压缩大小不能接受的情况下,压缩为2张RGB Compressed ETC 4bits)

3、苹果设备运行平台要求支持OpenGL ES 3.0的使用ASTC,RGB压缩为RGB CompressedASTC 6x6 block,RGBA压缩为RGBA Compressed ASTC 4x4 block。对于法线贴图的压缩精度较高可以选择RGB CompressedASTC 5x5 block。

4、 苹果设备运行平台需要兼容 OpenGLES 2.0的使用 PVRTC,RGB压缩为PVRTC 4bits,RGBA压缩为RGBA 16bits。(压缩大小不能接受的情况下,压缩为2张RGB Compressed PVRTC 4bits)

unity 纹理压缩格式‘_[2018.1]Unity贴图压缩格式设置相关推荐

  1. 中的ama格式_想发SCI?期刊引用格式选好了没?

    我~芳~老师~又回来开坑了哈哈哈哈哈!!! 对于一心想要冲向SCI.EI顶峰,拉都拉不住的同学来说,我们需要把论文中的每一个细节都抠得死死的.合乎规范地引用科学期刊(Scientific Journa ...

  2. unity 继承了 获取_为什么说Unity能用单纯脚本实现的功能,尽量避免继承MonoBehavior,保持纯粹性?...

    原回答有疏漏之处,此处再次补充~ 题主所问,其直接解答有2点: 一是为了保持内核独立,解耦引擎,为了未来的移植其他引擎做准备 二是为了保障性能,由于Unity的MonoBehavior底层机制原因,会 ...

  3. unity人物刚体移动_教程篇 | Unity人物移动动画

      人物移动动画    HCI 人机交互 PART-1 首先创建一个Unity3D工程,命名为Hero,选择3D,右下角创建项目. PART-2 在Asset Store中下载一些免费的素材,场景和人 ...

  4. 图片压缩软件_简单易用的图片压缩软件gt;给图片减肥

    正文共816字,预计阅读时间为:3分钟 无论你是设计师 自媒体.办公编辑人员 还是学生 很多时候都会遇到 图片文件体积太大 导致无法上传 或传输太过耗时耗流量的问题 这时我们就需要 一款免费图片压缩工 ...

  5. penpyxl 格式_【上海校区】数据集.npy格式与png格式互换

    深度学习中,有时我们需要对数据集进行预处理,这样能够更好的读取数据. 一.png格式生成.npy格式 import numpy as np import os from PIL import Imag ...

  6. nupkg格式_如何使用新的符号包格式“.snupkg”发布 NuGet 符号包 | Microsoft Docs

    创建符号包 (.snupkg)Creating symbol packages (.snupkg) 10/30/2018 本文内容 良好的调试体验依赖于调试符号的存在,因为它们提供了一些关键信息,例如 ...

  7. 广数系统u盘支持什么格式_支持转换50+种三维软件格式还能减面还是免费的,什么工具这么强大?...

    插件作者:Samuel T 当前版本:1.0.2 发布时间:2020.1.3 插件来源: https://sketchucation.com/pluginstore?pln=universal_imp ...

  8. 计算机学报格式_如何快速写好一篇格式正确的参考文献?

    常规的论文参考文献的格式写法有两种. 第一种,对照下面的规范格式一点点自己写. 参考文献格式及举例 (1)期刊 [序号] 主要作者.文献题名[J].刊名,出版年份,卷号(期号):起止页码. 例如: [ ...

  9. js日期格式判断(2018/01/30) -方法 小时分秒格式判断((HH:MM)

    案例如下: //日期格式判斷         function lo_isDatePart(dateStr) {             var parts;             if (date ...

最新文章

  1. 字符串拼接还在用StringBuilder?快试试Java8中的StringJoiner吧,真香!
  2. 聊天机器人之需求分析和流程介绍
  3. 支付宝支付成功之后的接口_支付宝放支付大招,花呗借呗之后又来一“呗”,快告诉家人吧!...
  4. 综合布线系统设计遵循的标准和条件
  5. 【Android 安全】DEX 加密 ( Java 工具开发 | 加密解密算法 API | 编译代理 Application 依赖库 | 解压依赖库 aar 文件 )
  6. 就差一点点-微妙的强制类型转换
  7. .net core webapi 前后端开发分离后的配置和部署
  8. mysql数据库连接地址utf8_在Python中连接到MySQL数据库时UTF8不工作
  9. mysql 重装之后_mysql重装之后 复制data
  10. 二叉树的字符图形显示程序_每个程序员都必须知道的8种通用数据结构
  11. 获取mysql 时钟,员工时钟的MySQL数据库结构
  12. 太阳能灯_【产品中心】太阳能野营灯
  13. java集合课程,I学霸官方免费课程三十三:Java集合框架之Map集合
  14. Linux学习笔记 -- 日志管理
  15. Android中Bitmap、Drawable、byte[]转换
  16. 什么是OpenStack
  17. 正则表达式相关:C# RichTextBox显示html文本内容
  18. matlab 计算一元函数解,遗传算法简单一元函数优化实例
  19. 用单摆测量重力加速度
  20. Android——ECG心电图的绘制实现

热门文章

  1. 请查收你的GitHub 2020 年度报告!
  2. 每日一皮:这一定是“宅”的极致了...
  3. 代表Java未来的ZGC深度剖析,牛逼!
  4. Innodb Buffer Pool的三种Page和链表
  5. OpenWrite 新增扩散渠道:慕课手记,支持图片转存!
  6. matlab配对交易回测,精品案例 | 经典投资策略之配对交易策略
  7. yolor 测试笔记
  8. 大厂常见笔试题 滑动窗口内数的和
  9. 昇腾 OSError: [Errno 22] Invalid argument: ‘protocol‘
  10. 探究Facebook相似性搜索工具 faiss的原理