纹理压缩格式DXT/PVR/ETC编码
(Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu)
参考文档:
https://www.khronos.org/registry/DataFormat/specs/1.1/dataformat.1.1.pdf
http://cdn.imgtec.com/sdk-documentation/PVRTC%20Specification%20and%20User%20Guide.pdf
未详细的总结梳理,下面是对纹理压缩格式认识的简述,认识可能多有不足;仓促期间,后续有机会再详细总结。
1. DXT纹理格式
DXT格式常位于的.DDS文件中,常见的格式有DXT1, DXT3, DXT5:也即BC1/BC2/BC3。
DXT1表达RGB色,不带mipmap情况,平均4Bit/像素-4BPP;
DXT3/DXT5表达RGBA色,8BPP。
DXT格式划分为4*4的块Block,每块的颜色组成上:
DXT1:4BPP
- RGB颜色上:存两个RGB565的颜色值,耗费32Bit;16个像素-每个像素存2Bit选取两个颜色blend方式,耗费32bit – 共计: 64Bit
DXT3:8BPP
- RGB颜色上:同DXT1,共计: 64Bit
- Alpha: 每个像素存4Bit透明度值 - 共计: 64Bit
DXT5:8BPP
- 颜色上:同DXT1,共计: 64Bit
- Alpha: 存两个8Bit的透明度值,耗费16Bit, 每个像素存3Bit在两个透明度上插值 – 共计: 64Bit
2. ETC纹理格式
ETC格式有ETC1, ETC2两个版本
ETC1仅支持RGB格式
ETC2格式有多种,有RGB的,有R/RG的,也有支持RGBA格式的种类。
也是划分4*4的block块
2.1 ETC1纹理格式
ETC1: 4BPP
etc1只存储RGB色,不存储alpha通道值,平均4Bit/像素-4BPP;
块上也是划分为4*4的块,每块的颜色组成上:
存2组RGB值: 占用24字节
一种是:R4,R4,G4,G4,B4,B4值,合成为两个RGB颜色;
另一种是:R5,R-Delta3, G5,G-Delta3, B5, G-Delta3,也是合成两个RGB颜色值;存两个颜色变化组选择索引:占用6Bit
每个索引占3Bit,颜色变动组有8种,每个组上:有2个向下调整量,2各向上调整量下来是各1Bit的控制位2各,占2Bit
第一个控制位DiffBit,用于设置2组RGB值,是使用第一种还是第二种拆分方法;
第二各控制位设定,像素组的拆分,是划分为 [42 或 24] 的2个区域;接下来是32Bit, 每个像素占2Bit选取索引,选取颜色组中的向下调整,还是向上调整的量。
2.1 ETC2纹理格式
ETC2-RGB: 4BPP
兼容 etc1,并且扩展了两外3种拆分模式;
ETC2-RGBA: 8BPP
- etc2的RGB部分和etc2-RGB一致,占64bit
- 另外有alpha部分拆分模式如下
a. alpha值占8位
b. multipier占4位,取值0-15
c. 数据偏移表索引占4位,取值16种
d. 每个像素占3Bit,共使用48Bit,每个bit选取使用数据偏移中的一项
3. PVR纹理格式
pvr格式有4种:
Format_PVR_2BPP_RGB
Format_PVR_4BPP_RGB
Format_PVR_2BPP_RGBA
Format_PVR_4BPP_RGBA
4BPP划分的block也为4*4的块,每块的颜色组成上:
包含2个颜色,和颜色的插值设置块,划分了多种设置的方式;
另外这两个颜色值被拆分成不同的位数,同样的位数可以表示RGB/RGBA,包含了alpha时,位数并未增多。
2BPP划分的block为8*4的块,不同于4BPP的图片,对于像素混合控制块定义也进行了简化/插值控制,进一步简化占用。
不同于etc/dds,移动端对于pvr纹理要求是square,长宽一致。
附录
最后, 推介一下参考的文档, 是两个特别赞的文档, 从中可以详细看到编码的格式和说明.
另外里面有一个图片很经典,印象深刻:
描述了使用压缩纹理 vs 使用压缩图片的资源消耗差异。
(Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu)
纹理压缩格式DXT/PVR/ETC编码相关推荐
- 常用纹理和纹理压缩格式
简单纹理格式 RGBA8888 每个像素4字节,RGBA通道各占用8位 RGBA4444 每个像素2字节,RGBA通道各占用4位 RGB888 每个像素3字节,RGB通道各占用8位,无透明通道 RGB ...
- unity 纹理压缩格式‘_纹理优化:让你的纹理也“瘦”下来
在上一期<纹理优化:不仅仅是一张图片那么简单>中,我们针对纹理相关的优化,挑选了部分知识点分析.无论是大家在开发时的疏忽,还是对相关知识点的理解不足,这些问题的积累最终都会反映到项目的性能 ...
- Unity 优化翻译官方文档(二) ------ 平台特定覆盖的纹理压缩格式
官方文档 : https://docs.unity3d.com/Manual/class-TextureImporterOverride.html 虽然Unity支持许多常见的图像格式作为导入纹理的源 ...
- Unity常见纹理压缩格式
前言:本人一直对RGB16bit有一个疑惑,比如RGB565其表值范围只有(32,64,32)如何能表示0-255,今天就用这篇文章梳理一下. 预备知识: 一个字节有8位:1byte = 8 bit. ...
- unity 纹理压缩格式‘_[2018.1]Unity贴图压缩格式设置
一.移动平台GPU 参考文档: 各种移动GPU压缩纹理的使用方法 - LuMing - 博客园www.cnblogs.com 1.Imagination Technologies的PowerVR S ...
- DXT纹理压缩格式解析
我们知道游戏中对于3D物体表面细节的表现最重要的还是靠贴图来实现的,那么越是高分辨率越是真彩色的贴图自然表现力也是越强,但是同时带来的问题是所需占用的内存会成倍的上升,而节省内存这一点在目前的游戏中还 ...
- 游戏中纹理压缩格式之Texture压缩纹理
记载目录 1.杂言杂语 2.纹理格式与文件格式的区别 3.常见的纹理格式和应用场合及硬件的特定要求常见的压缩纹理格式硬件需求 4.压缩纹理特殊处理RGBA16 + Dithering 处理ETC1的通 ...
- 【百人计划】图形3.5 纹理压缩的格式
笔记部分> 一.什么是纹理压缩格式(概念) 为了解决内存和带宽问题,在计算机图形渲染中(储存纹理)的一种图像压缩.优化技术. 二.为什么要进行纹理压缩? 对于低硬件设备和移动端,有两个问题需要解 ...
- Unity 之 纹理类型导入设置和压缩格式介绍
Unity 之 纹理类型导入设置和压缩格式介绍 一,纹理相关 1.1 导入设置 1.2 支持格式 二,纹理类型 2.1 纹理类型说明 2.2 纹理尺寸大小 三,所有支持的纹理压缩格式 一,纹理相关 1 ...
- 【TA-霜狼_may-《百人计划》】图形3.6 纹理压缩——包体瘦身术
[TA-霜狼_may-<百人计划>]图形3.6 纹理压缩--包体瘦身术 @[TOC]([TA-霜狼_may-<百人计划>]图形3.6 纹理压缩--包体瘦身术 3.6.1 纹理压 ...
最新文章
- vs2010 将.mc编译为.rc文件
- 其他信息: 线程间操作无效: 从不是创建控件“控件名”的线程访问它。
- C++ vector容器 find erase的使用:查找并删除指定元素
- Data Lake Analytics: 以SQL方式查询Redis数据
- 禅道设置bug模板_禅道的自定义功能:表格切换和创建页面的自定义
- C++常用强制类型转换
- xubuntu16.04是linux系统,win10建立Ubuntu16.04子系统,安装经常使用软件以及图形界面(包括win10远程桌面链接Ubuntu)...
- springboot网上图书商城源码
- 【微软商店(Microsoft Store)重置后打不开,商店下载不了应用的解决方法】
- 现代雷达系统分析与设计---动目标检测(MTD)
- Vue入门项目:学生管理系统之班级管理 【含源码】
- 《SEM长尾搜索营销策略解密》一一2.12 宝洁里的长尾与创新
- eSpeak: Linux文本转语音工具
- java Io,读写文件拒绝访问
- Linux man中文手册的安装与使用
- 理解类8583报文协议
- Revit二次开发前期准备
- tableau连接不上oracle,Oracle
- 技术型产品经理的思维能力
- Python:实现gamma 伽玛功能算法(附完整源码)
热门文章
- 超级详细-NMOS、PMOS的工作原理及相关内容整理(上)
- 随机生成验证码,并判断是否正确(String版)
- h5怎么做分享到QQ 、朋友圈、微信 、微博等功能
- 从零学习Belief Propagation算法(三)
- 如何设计一个网络程序
- python批量生成经纬度坐标查询_用Python评测三种批量查询经纬度的方法,你pick哪一种?...
- 2. evaluate-reverse-polish-notation
- 自然常数e的由来以及计算机为什么是二进制
- 从消费互联网到产业互联网:平台思维始终是主导
- 学习问题--js图片路径加载问题