我正在使用“反射阴影贴图”在我的游戏引擎中实现全局光照。RSM具有颜色纹理。为了节省内存,我将24位值打包成8位值。好的,我知道如何打包它。但是如何解包呢?我想创建一个带有8位调色板的1D纹理,其中包含255种不同的颜色。我的8位颜色将是该纹理中像素的索引。我不确定如何生成这种类型的纹理。是否有任何数学方法将8位值转换为RGB?
@edit 颜色格式如下:
RRR GGG BB @edit2: 我像这样打包我的颜色:
@edit 颜色格式如下:
RRR GGG BB @edit2: 我像这样打包我的颜色:
int packed = (red / 32 << 5) + (green / 32 << 2) + (blue / 64);
//the int is actually a byte, c# compiler is bitching if it's byte.
@edit3:
好的,我想我找到了一种方法来做这件事。如果有错误,请告诉我。
@edit4:它是错误的...
int r = (packed >> 5) * 32;
int g = ((packed >> 2) << 3) * 32;
int b = (packed << 6) * 64;