Convertendo a cor de 8 bits em valor RGB
Estou implementando iluminação global no meu mecanismo de jogo com "mapas de sombra refletivos". RSM tem i.a. textura de cor. Para economizar memória. Eu estou empacotando o valor de 24 bits em um valor de 8 bits. Está bem. Eu sei como fazer as malas. Mas como faço para descompactar? Eu tive a idéia de criar uma textura 1D com paleta de 8 bits, com 255 cores diferentes. Minha cor de 8 bits seria o índice de pixel nessa textura. Não sei como gerar esse tipo de textura. Existem maneiras matemáticas de converter o valor de 8 bits em rgb?
@edit A cor está neste formato:
RRR GGG BB
@ edit2: E estou arrumando minha cor assim:
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:
Tudo bem, eu encontrei uma maneira de fazer isso, eu acho. Me diga se está errado.
@ edit4 Está errado ...
int r = (packed >> 5) * 32;
int g = ((packed >> 2) << 3) * 32;
int b = (packed << 6) * 64;