纹理压缩(二) ETC格式
ETC:
每个子块中只存储一个基色,剩下的由亮度变换得到。
先存一个基色和一个luma index值,通过luma index从亮度表中查出亮度四个亮度修改值,然后加到基色上得到四个基色,再按照后面的索引表中的索引进行填充即可。
ETC1:
两个ETC拼在一起,做一个4x4的像素块,分两中模式,individual模式中两个基色color0、color1都是444格式的,differential模式中,color0用555格式,color1用3bit的差值存储,R1=R0+dR0得到。剩下两个标志位:diff指定是哪种模式,flip指定4x4块是水平还是垂直分割。
ETC2:
ETC1差值模式中如果颜色有溢出,用ETC2可以节省编码。
溢出按照RGB三种模式分:
R通道溢出按照59T模式
G通道溢出按照58H模式
B通道溢出按照57P模式
如果都不溢出的话就按照ETC1解压,所以ETC2是兼容ETC1的。
这三种模式是有优先级的,优先级是按照上面的顺序,不能同时有两个通道溢出。
59T模式:
ETC1 diff模式下溢出情况的编码:
基本是减除来得负数或者加的结果超出5位,这种情况用后面的四位进行编码,这个编码刚好就是R0的后两位和dR1的后两位,解码的时候判断是否溢出就看R0的两个高位是否相等,相等就是溢出,G和B用4bit按照ETC1的格式存储。
这里不需要ETC1中的T0和T1,不再需要查表,通过后面的distance值计算出另外两个基色,假设存储的两个基色分别是A和B,另外两个基色
C0 =(A -(d,d,d))
C1 =(A +(d,d,d))
在RG坐标系中就是一个T形
这里的distance是一个3bit的index值,按照下表查找
58H模式:
58H的溢出编码和59T一样, 不同的地方在另外两个基色的计算方法,C0、C1用A计算,C2、C3用B计算,如下图:
这里distance中只存了低两位,高位用A、B大小计算判断,A大于B时高位不去,否则补0.
57P:
和上面两种完全不同,直接存RGB676的三个基色:C0、CH和CV,然后按照下面公式,线性差值计算出其他颜色:
X、Y的范围是0~3,组合计算出来16个颜色。
ETC的编码格式如下
ETC1和ETC2中没有alpha值,puchtrough alpha版本中和BC1a一样,用1bit表示alpha值,只能表示全透明和全不透明,ETC2中的diff位来指定是否有alpha,如果是1,没有,如果是0,编码表中的10表示全透明。
ETC 的sRGB编码和ETC算法没有区别,只是其中颜色格式转换一下,sRGB的范围是0.0~1.0,sRGB是经过gamma矫正的,转换公式如下:
纹理压缩(二) ETC格式相关推荐
- UE4 Material 101学习笔记——08-12 凹凸和视差贴图/纹理压缩/布料/体积冰/摇曳树叶
UE4 Material 101学习笔记--08-12 凹凸和视差贴图/纹理压缩/布料/体积冰/摇曳树叶 Lec08 凹凸和视差贴图 Bump Offset and Parallax Occlusio ...
- 【TA-霜狼_may-《百人计划》】图形3.6 纹理压缩——包体瘦身术
[TA-霜狼_may-<百人计划>]图形3.6 纹理压缩--包体瘦身术 @[TOC]([TA-霜狼_may-<百人计划>]图形3.6 纹理压缩--包体瘦身术 3.6.1 纹理压 ...
- Unity 优化翻译官方文档(二) ------ 平台特定覆盖的纹理压缩格式
官方文档 : https://docs.unity3d.com/Manual/class-TextureImporterOverride.html 虽然Unity支持许多常见的图像格式作为导入纹理的源 ...
- unity 纹理压缩格式‘_[2018.1]Unity贴图压缩格式设置
一.移动平台GPU 参考文档: 各种移动GPU压缩纹理的使用方法 - LuMing - 博客园www.cnblogs.com 1.Imagination Technologies的PowerVR S ...
- 【百人计划】图形3.5 纹理压缩的格式
笔记部分> 一.什么是纹理压缩格式(概念) 为了解决内存和带宽问题,在计算机图形渲染中(储存纹理)的一种图像压缩.优化技术. 二.为什么要进行纹理压缩? 对于低硬件设备和移动端,有两个问题需要解 ...
- unity 纹理压缩格式‘_纹理优化:让你的纹理也“瘦”下来
在上一期<纹理优化:不仅仅是一张图片那么简单>中,我们针对纹理相关的优化,挑选了部分知识点分析.无论是大家在开发时的疏忽,还是对相关知识点的理解不足,这些问题的积累最终都会反映到项目的性能 ...
- DXT纹理压缩格式解析
我们知道游戏中对于3D物体表面细节的表现最重要的还是靠贴图来实现的,那么越是高分辨率越是真彩色的贴图自然表现力也是越强,但是同时带来的问题是所需占用的内存会成倍的上升,而节省内存这一点在目前的游戏中还 ...
- 常用纹理和纹理压缩格式
简单纹理格式 RGBA8888 每个像素4字节,RGBA通道各占用8位 RGBA4444 每个像素2字节,RGBA通道各占用4位 RGB888 每个像素3字节,RGB通道各占用8位,无透明通道 RGB ...
- 游戏中纹理压缩格式之Texture压缩纹理
记载目录 1.杂言杂语 2.纹理格式与文件格式的区别 3.常见的纹理格式和应用场合及硬件的特定要求常见的压缩纹理格式硬件需求 4.压缩纹理特殊处理RGBA16 + Dithering 处理ETC1的通 ...
- Unity常见纹理压缩格式
前言:本人一直对RGB16bit有一个疑惑,比如RGB565其表值范围只有(32,64,32)如何能表示0-255,今天就用这篇文章梳理一下. 预备知识: 一个字节有8位:1byte = 8 bit. ...
最新文章
- 切换执行等级的命令init
- Ubuntu Linux 安装 .7z 解压和压缩文件
- linux 管道使用方法,Linux 管道命令
- 斯坦福大学机器学习第十课“应用机器学习的建议(Advice for applying machine learning)”
- robotframework(12)修改用户密码(从数据库查询短信验证码)
- 智能合约开发solidity编程语言实例
- 【转】关键字过滤算法
- Oracle中的单行函数
- UCI数据集+机器学习+十折交叉验证
- android hardware解析
- COM口(DB9) 连 RJ45 线序
- iOS 幸运转盘抽奖+粒子动画
- Google - 搜索图片快速设置
- 谨防打黑工丨被“偷走”的实习期
- MongoDB 极简实践入门
- 关于如何有效锻炼肌肉的十个小贴士(转)
- 王者荣耀服务器微信怎么和电脑,[技术贴]微信账号与游戏账号独立的终极版教程...
- 虚拟机配置opc服务器,组态王怎么配置成opc服务器
- OpenMV的资料下载
- win7下安装配置opengrok
热门文章
- 什么是MES系统软件,如何用大白话理解MES,公司有了ERP还有必要上MES吗?
- 图像的峰值信噪比(peak signal to noise ratio, PSNR)
- 汉明码(计算机组成原理)没听课也能懂
- 关于 ajax Content-Type 的问题 贼拉有用的!!!
- 不看好叮咚买菜的N个理
- 不符合正态分布的配对数据也有自己的统计方法。
- 苹果a7处理器_苹果A系处理器崛起的秘密:靠山寨起家,最后打败巨头芯片商
- 嵌入式ARM设计编程(四) ARM启动过程控制
- mysql定时任务简单例子
- 大数据与云计算技术---(一)hadoop大数据平台