Я реализую глобальное освещение в своем игровом движке с помощью «отражающих карт теней». RSM имеет в т.ч. цвет текстуры. Для экономии памяти. Я упаковываю 24-битное значение в 8-битное значение. В порядке. Я знаю, как его упаковать. Но как распаковать? У меня была идея создать 1D текстуру с 8-битной палитрой, с 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;