Packing Data Format

During shader development, packing/unpacking from one format to another format is very common. Sometimes, the purpose is to support older graphics card and occasionally, it is more efficient to do so. Below are growing list of packing/unpacking methods in shader.

Packing Float to RGBA32

float4 packFloatToRGBA32(float f)
{
    const float4 pack = float4(1, 256, 65536, 16777216);
    return f * pack;
}

Unpacking RGBA32 to Float

float unpackRGBA32ToFloat(float4 rgba)
{
    const float4 unpack = float4(1.0f, 1.0f/256, 1.0f/65536, 1.0f/16777216);
    return dot(rgba, unpack);
}

Jan17

Leave a Reply