uniform sampler2D frame1;
uniform sampler2D frame2;
uniform sampler2D frame3;
uniform sampler2D frame4;
//uint packUnorm4x8(vec4 c)
//{
//    uint val = uint(round(clamp(c.r, 0.0, 1.0) * 255.0)) * 16777216u + uint(round(clamp(c.g, 0.0, 1.0) * 255.0)) * 65536u + uint(round(clamp(c.b, 0.0, 1.0) * 255.0)) * 256u + uint(round(clamp(c.a, 0.0, 1.0) * 255.0));
//    return val;
//}

vec3 packCoord(vec2 position)
{
    vec4 colorr = texture2D(tex1, position);
    vec4 colorg = texture2D(tex2, position);
    vec4 colorb = texture2D(tex3, position);
    vec4 colora = texture2D(tex4, position);
    float x = uintBitsToFloat(packUnorm4x8(vec4(colorr.r, colorg.r, colorb.r, colora.r)));
    float y = uintBitsToFloat(packUnorm4x8(vec4(colorr.g, colorg.g, colorb.g, colora.g)));
    float z = uintBitsToFloat(packUnorm4x8(vec4(colorr.b, colorg.b, colorb.b, colora.b)));
    return vec3(x, y, z);
}