Я пытаюсь оптимизировать память текстур, и все, что мешает мне преобразовать GL_RGBA32F LUT в GL_RGBA16F, — это один индекс, который (может) превышать предел. Могу ли я в C взять число с плавающей запятой и разделить его на 2 значения, а затем в GLSL восстановить это число с плавающей запятой из двух значений, хранящихся в LUT?
Я имею в виду что-то вроде этого:
[ C ]
float v0,v1, *pixel_array;
magic_function_in_c( my_big_value, &v0, &v1 );
pixel_array[ index++ ] = pos.x; // R
pixel_array[ index++ ] = pos.y; // G
pixel_array[ index++ ] = v0; // B
pixel_array[ index++ ] = v1; // A
[ ГЛСЛ ]
vec4 lookup = texture2D( sampler0, texcoord );
float v = magic_function_in_glsl( lookup.b, lookup.a );
ps: я использую GLES 2.0 (чтобы также быть совместимым с WebGL)