FBO, MRT and GLSL on ATI (current state of play)

hey,

I just want to check I’m not going insane here my code whic uses MRT, FBO and GLSL together with ATI’s Cat5.6 drivers.

I understand that the FBO code isnt finished yet by a long shot in this driver, however I want to sanity check the rest of my code anyways :slight_smile:

I’m trying to bind two textures to GL_COLOR_ATTACHMENT0_EXT and GL_COLOR_ATTACHMENT1_EXT respectively.

I then use glDrawBuffers() specifying those two enums as the targets to draw to.

In the fragment shader I write different values to glFragData[0] and glFragData[1], however both textures take the value which is sent to glFragData[0].

It also crashes the framerate down to 16fps from 72fps before (readings taken via Fraps).

So, do the 5.6 drivers not deal with MRT with GLSL?
or is it the FBO which currently doesnt work with MRT?
or something else?

on a whim, as writing this I swapped the ordering of my MRT buffers from
GLenum mrtdrawbuffs[] = {GL_COLOR_ATTACHMENT0_EXT, GL_COLOR_ATTACHMENT1_EXT};
to
GLenum mrtdrawbuffs[] = {GL_COLOR_ATTACHMENT1_EXT, GL_COLOR_ATTACHMENT0_EXT};

and the output of gl_FragData[0] is still ending up in both textures.

Fragment shader output section is :

gl_FragData[0] = newColor + (lastColor * vec4(1.0,1.0,1.0,alpha));
gl_FragData[1] = vec4(0.0,1.0,0.0,1.0);

Any pointers on this would be great, specifically if someone could confirm that MRT and GLSL works on Cat5.6 drivers at least via pbuffers :slight_smile: