1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
|
[require]
GLSL >= 1.10
[vertex shader]
/**
* This test exercises arrays indexed with a variable.
* We test with two arrays to be sure at least one is positioned
* above TEMP[0].
*/
uniform float one;
uniform int writeIndex;
uniform int readIndex;
varying vec4 color;
void main()
{
// Setup two arrays
vec4 a1[5], a2[5];
a1[0] = vec4(0.0, 0.0, 0.0, 0.0);
a1[1] = vec4(0.0, 0.0, 0.0, 0.0);
a1[2] = vec4(0.0, 0.0, 0.0, 0.0);
a1[3] = vec4(0.0, 0.0, 0.0, 0.0);
a1[4] = vec4(0.0, 0.0, 0.0, 0.0);
a2[0] = vec4(0.0, 0.0, 0.0, 0.0);
a2[1] = vec4(0.0, 0.0, 0.0, 0.0);
a2[2] = vec4(0.0, 0.0, 0.0, 0.0);
a2[3] = vec4(0.0, 0.0, 0.0, 0.0);
a2[4] = vec4(0.0, 0.0, 0.25, 0.0);
gl_Position = gl_Vertex;
// write to the arrays
a1[writeIndex] = vec4(1.0, 0.25, 0.0, 1.0);
a2[writeIndex] = vec4(1.0, 0.25, 0.75, 1.0);
// add array elements
color = a1[readIndex] + a2[readIndex] + a2[4];
}
[fragment shader]
varying vec4 color;
void main()
{
gl_FragColor = color;
}
[test]
uniform int readIndex 1
uniform int writeIndex 1
draw rect -1 -1 2 2
relative probe rgb (0.0, 0.0) (1.0, 0.5, 1.0, 1.0)
relative probe rgb (1.0, 0.0) (1.0, 0.5, 1.0, 1.0)
relative probe rgb (0.0, 1.0) (1.0, 0.5, 1.0, 1.0)
relative probe rgb (1.0, 1.0) (1.0, 0.5, 1.0, 1.0)
|