_blitz
10-27-2011, 06:00 AM
When setting a specific component of an array using gl_InvocationID, I get undefined results from patch varyings set in my tessellation control shaders with vectors while arrays work fine. I don't see why vectors should give an undefined result.
Here's some code illustrating the problem (using triangular patches):
// tessellation control shader
#version 410
layout(location = 0) patch out vec3 oData1;
layout(location = 1) patch out float oData2[3];
[...]
void main()
{
oData1[gl_InvocationID] = someScalarValue(gl_InvocationID); // undefined in my tessellation evaluation shader
oData2[gl_InvocationID] = someScalarValue(gl_InvocationID); // works fine in my tessellation evaluation shader
}
Either I missed something in the specs, either it's a driver bug, I'm on Catalyst 11.9.
Here's some code illustrating the problem (using triangular patches):
// tessellation control shader
#version 410
layout(location = 0) patch out vec3 oData1;
layout(location = 1) patch out float oData2[3];
[...]
void main()
{
oData1[gl_InvocationID] = someScalarValue(gl_InvocationID); // undefined in my tessellation evaluation shader
oData2[gl_InvocationID] = someScalarValue(gl_InvocationID); // works fine in my tessellation evaluation shader
}
Either I missed something in the specs, either it's a driver bug, I'm on Catalyst 11.9.