Actualmente estoy ocupado con el sombreado diferido en webgl y necesito decodificar 3 valores enteros (en el rango [0..256] = 256^3) a un Flotador simple de 32 bits y codifíquelo más tarde. porque esto es para WebGL, tiene que hacerse sin operaciones bit a bit. la precisión no es importante para mí (pero se puede lograr, creo).decodificar valor de rgb para un solo flotante sin desplazamiento de bits en glsl
esto es lo que tengo pero creo que esto es incorrecto debido a la precisión de la textura donde almaceno el valor codificado.
float packColor(vec3 color) { return (color.r + (color.g*256.) + (color.b*256.*256.))/(256.*256.*256.); }
vec3 decodeColor(float f) {
float b = floor(f * 256.0);
float g = floor(f * 65536.0) - (b*256.);
float r = (floor(f * 16777216.0) - (b*65536.)) - (g*256.);
return vec3(r, g, b)/ 256.0;//vec3(r, g, b)/256.0; }
gracias ..
creo que usted mezcló los significados de las palabras "codificar" y "Decode" ... – Tara