我正在使用“反射阴影贴图”在我的游戏引擎中实现全局照明。RSM 具有 ia 颜色纹理。为了节省内存。我将 24 位值打包成 8 位值。行。我知道怎么打包。但是我该如何解压呢?我想用 8 位调色板创建一个 1D 纹理,有 255 种不同的颜色。我的 8 位颜色将是该纹理中像素的索引。我不确定如何生成这种纹理。是否有任何数学方法可以将 8 位值转换为 rgb?
@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;