PDA

View Full Version : Packing a float into a texture



hippynerd
05-28-2005, 06:12 PM
I know there are probably a couple of ways to do this. But is there a stardard way people use to pack a floating point into a texture.

I would like to extract it as a float in a fragment shader.

If its a 32 bit int I can cleanly take 8 bits and store them in the RGBA channel, then in my fragment shader do something like

vec4 texVal = glTexture1d(tex,value.u);
float number = dot(texVal,vec4(1,256,2^16,2^24)

(except I'll also have to account for normalisation of the texture values to [-1,1]..gah)

Just wondering if there was a way of doing this with a float, or even if I can use some other channel (such as a depth texture). To store the values.

(I know above if I can figure out how to pack an int, I can convert my float to an int in the main application and convert it back in the frag shader...however all these conversions will start slowing things down)

Thanks,

Relic
05-29-2005, 10:32 PM
There are floating point texture internalFormats to store IEEE 32 bit data directly.
Look with glGetString(GL_EXTENSIONS) what "float" extensions your implementaion offers (e.g. something like GL_ARB_texture_float, GL_ATI_texture_float, GL_NV_float_buffer)
Specs are here: http://oss.sgi.com/projects/ogl-sample/registry/