I’m having compile issues with the following shader. On nVidia Geforce 8 there is no problem, but on a Radeon 4850 with Cat 9.2 (and previous) using a GL 2.1 context, the following does not compile. Even using ATI’s GPU Analyser tool - it also shows a problem with accessing the array. Not sure why. Bug ?
uniform sampler2D blursrc;
varying vec2 texCoord;
float texScaler = 1.0/256.0;
float texOffset = -0.5/256.0;
vec4 gaussFilter[7];
void main(void)
{
vec4 color = vec4(0.0,0.0,0.0,0.0);
gaussFilter[0] = vec4(-3.0, 0.0, 0.0, 1.0/64.0);
gaussFilter[1] = vec4(-2.0, 0.0, 0.0, 6.0/64.0);
gaussFilter[2] = vec4(-1.0, 0.0, 0.0, 15.0/64.0);
gaussFilter[3] = vec4( 0.0, 0.0, 0.0, 20.0/64.0);
gaussFilter[4] = vec4( 1.0, 0.0, 0.0, 15.0/64.0);
gaussFilter[5] = vec4( 2.0, 0.0, 0.0, 6.0/64.0);
gaussFilter[6] = vec4( 3.0, 0.0, 0.0, 1.0/64.0);
int i;
for (i=0;i<7;i++)
{
color += texture2D(blursrc,vec2(texCoord.x + gaussFilter[i].x * texScaler + texOffset,
texCoord.y + gaussFilter[i].y * texScaler + texOffset)) * gaussFilter[i].w;
} // End for
color.a *= 2.0;
gl_FragColor = color;
}
The specific issue is:
color += texture2D(blursrc, … gaussFilter[i]
Can anyone else shed light on this?
This is preventing me from performing blurs and creating rotating billboards. Very fustraiting!