GPU PRO 5 - 1.2 Reducing Texture Memory Usage by 2-Channel Color Encoding 笔记

本笔记仅为个人的理解,如果有误欢迎指出。

Reducing Texture Memory Usageby 2-Channel Color Encoding

使用双通道颜色编码改善纹理内存

一般纹理上一个像素的颜色信息是存在RGB三个通道里,本篇文章将纹理通过一些前置条件把三个通道的信息有损压缩到两个通道上。

RGB颜色空间可以表示为一个三维表示的立方体,一张纹理的所有颜色都分布在这个立方体之内,但是普通的纹理他所有像素在这个立方体中存在一定的空间关联性,具体来说在三维空间中可以找到一个平面,他与这张纹理的所有像素点都相对较近。这个技术的实现的核心就是如何找到这个平面,并将这个平面用一个维度去表示。

文章将RGB颜色信息拆成了两个部分,一个是亮度信息,一个是色调/饱和度信息。这两个信息被两个通道所存储,通过这两个通道的信息最终得到一个在该平面上的颜色。

首先是如何计算出这个颜色平面。

第一步:将原始的RGB信息通过权重计算转换到一个新的RGB值。

这一步主要是为了调整各颜色在最终颜色平面的的影响,在文章中权重RGB的权重选择了1/2,1/4,1/2。γ表示从输入颜色空间转换到线性空间的 gamma 值

第二步:计算转换后的RGB到颜色平面的误差。

因为规定了平面是经过原点(0,0,0),所以颜色平面可以用一个法向量表示。转换后的点到平面的距离可以表示为点到法向量的点积

所以在这一步的目标是找到一个法向量使得各RGB点到该法向量的距离平方和最小,也就是:

而法向量如何选择文章中并没有给出详细说明,文章中说穷举候选法向量的方式来比较每个法向量的err,再选出误差最小的那个。但具体候选的法向量怎么来的:

第三步:将第一步的权重转换转换回来,这里直接用一个逆转置矩阵进行变换。

这个颜色平面在RGB颜色空间中与边界交叉可以获得几个顶点,一个顶点是(0,0,0),与顶点相邻的两个顶点(bc1,bc2)则定义为该颜色平面的基色。也就是平面的两个基向量。

平面上的所有颜色都位于原点和这两个基色点所构成的夹角范围内,而夹角则是最后所需要存储的数据。

夹角计算步骤如下:

1,将线RGB空间中的颜色点投影到该颜色平面上。

2,计算该点在平面上的二维坐标。

3,找到一条从原点开始经过该点的二维直线。

4,计算这条直线与两个基色之间的二维线段的交点比例,即得到基色的混合系数。

这个步骤将夹角映射到bc1 到 bc2 的线段上,用线段的比例表示这个夹角。

两个通道,一个通道存储基色的混合系数,表示色调。另一个通道存储亮度。

亮度由一个固定的公式从RGB信息计算得到:

颜色还原代码如下:


文章主要的思想其实还是如何用一个颜色平面拟合一张在RGB空间下的纹理,这个平面才是能够双通道存储的核心,这里用的是最小二乘法进行的拟合。

而每个颜色在映射到平面上后,已经可以用一个二维坐标表示,这个时候其实已经是实现了双通道存储数据的基础。但文章将xy坐标这个二维信息转换为了亮度和色调这两个信息,这应该是为了抽出亮度这个信息,方便在实际应用中调整图片效果。毕竟调整通道中xy的值会导致颜色失准,而调整亮度值并不会。

文章中的压缩示例:

参考链接:

GPU Pro5 渲染篇

相关推荐
猎头南楼5 小时前
VLA 模型落地端侧:从架构选型到量化部署的工程实践笔记
笔记·架构·大模型
Capricorn19886 小时前
日志级幻觉排障:GPT-6 Astra 迈入 AGI 时代,知芽 Notebook Skill 如何以引用校验与零命中诚实弃权解决长文失忆
论文阅读·人工智能·笔记·gpt·agi
疯狂打码的少年6 小时前
【数据库技术】多值依赖与第四范式(4NF)
数据库·笔记·算法
tq10866 小时前
算法的另一面
笔记
点心的游戏开发世界9 小时前
GDScript 入门笔记(五):函数
笔记·游戏引擎·godot
wp123_110 小时前
硬件设计笔记:1μH功率电感选型实战——线艺 XFL4020-102MEC 与 国产 pin to pin MVLH4020-1R0M 详细参数测评
笔记·科技·硬件架构·硬件工程
摇滚侠11 小时前
《SpringBoot 3:入门与应用实战》第 14 章 打包与部署 Spring Boot 应用打包 阅读笔记 41
spring boot·笔记·后端
金立基包装胶水11 小时前
纸袋热封胶常见都有哪些问题?
大数据·笔记·其他
chnyi6_ya11 小时前
论文阅读笔记 | HoneyBee: Data Recipes for Vision-Language Reasoners
论文阅读·笔记
repetitiononeoneday11 小时前
【每日规划与反思】2026.9.4
笔记