summaryrefslogtreecommitdiff
path: root/tests/spec/glsl-1.10/execution/variable-indexing/vs-varying-array-mat4-index-row-wr.shader_test
blob: 709c6a4a43c55154629e2f7133c6d45d64f11d88 (plain)
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
# Test generated by:
# ../../../glsl-1.10/variable-index-write.sh 1.10

[require]
GLSL >= 1.10

[vertex shader]
#version 110
uniform mat4 src_matrix;
uniform vec4 v;
uniform vec4 expect;
uniform int index;
uniform int row;
uniform int col;
uniform float value;
varying mat4 dst_matrix[3];

void main()
{
    gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;

    dst_matrix[0] = mat4(0.0);
    dst_matrix[1] = mat4(0.0);
    dst_matrix[2] = mat4(0.0);

    /* Patch the supplied matrix with the supplied value.  If the resulting
     * matrix is correct, it will transform the input vector to the expected
     * value.  Verify that the distance between the result and the expected
     * vector is less than epsilon.
     *
     * NOTE: This test assumes that reads of arrays using non-constant
     * indicies works correctly.  If reads and writes happen to fail in an
     * identical manner, this test may give false positives.
     */
    dst_matrix[index] = src_matrix;
    dst_matrix[index][1][row] = value;
}

[fragment shader]
#version 110
uniform mat4 src_matrix;
uniform vec4 v;
uniform vec4 expect;
uniform int index;
uniform int row;
uniform int col;
uniform float value;
varying mat4 dst_matrix[3];

void main()
{
    gl_FragColor = (distance(dst_matrix[index] * v, expect) < 1e-6)
        ? vec4(0.0, 1.0, 0.0, 1.0) : vec4(1.0, 0.0, 0.0, 1.0);
}

[test]
clear color 0.5 0.5 0.5 0.5
clear
ortho

uniform int index 0
uniform int row 0
uniform vec4 v 0.0394868046587045 0.8922408276905568 0.3337495624366961 0.8732295730825839
uniform vec4 expect 1.03935908892461 1.18846180713529 1.10078681232072 1.72434439561820
uniform mat4x4 src_matrix 0.922040144261674 0.158053783109488 0.357016429866574 0.836368810383957 666.0 0.171634921595771 0.602494709909111 0.693273570571311 0.350720358904176 0.912192627475775 0.688544081259531 0.913891056231967 0.442058176039301 0.829835836794679 0.365674411003021 0.879197364462782
uniform float value 0.560251913703792
draw rect 20 5 10 10
probe rgb 25 10 0.0 1.0 0.0

uniform int row 1
uniform vec4 v 0.0394868046587045 0.8922408276905568 0.3337495624366961 0.8732295730825839
uniform vec4 expect 1.03935908892461 1.18846180713529 1.10078681232072 1.72434439561820
uniform mat4x4 src_matrix 0.922040144261674 0.158053783109488 0.357016429866574 0.836368810383957 0.560251913703792 666.0 0.602494709909111 0.693273570571311 0.350720358904176 0.912192627475775 0.688544081259531 0.913891056231967 0.442058176039301 0.829835836794679 0.365674411003021 0.879197364462782
uniform float value 0.171634921595771
draw rect 20 20 10 10
probe rgb 25 25 0.0 1.0 0.0

uniform int row 2
uniform vec4 v 0.0394868046587045 0.8922408276905568 0.3337495624366961 0.8732295730825839
uniform vec4 expect 1.03935908892461 1.18846180713529 1.10078681232072 1.72434439561820
uniform mat4x4 src_matrix 0.922040144261674 0.158053783109488 0.357016429866574 0.836368810383957 0.560251913703792 0.171634921595771 666.0 0.693273570571311 0.350720358904176 0.912192627475775 0.688544081259531 0.913891056231967 0.442058176039301 0.829835836794679 0.365674411003021 0.879197364462782
uniform float value 0.602494709909111
draw rect 20 35 10 10
probe rgb 25 40 0.0 1.0 0.0

uniform int row 3
uniform vec4 v 0.0394868046587045 0.8922408276905568 0.3337495624366961 0.8732295730825839
uniform vec4 expect 1.03935908892461 1.18846180713529 1.10078681232072 1.72434439561820
uniform mat4x4 src_matrix 0.922040144261674 0.158053783109488 0.357016429866574 0.836368810383957 0.560251913703792 0.171634921595771 0.602494709909111 666.0 0.350720358904176 0.912192627475775 0.688544081259531 0.913891056231967 0.442058176039301 0.829835836794679 0.365674411003021 0.879197364462782
uniform float value 0.693273570571311
draw rect 20 50 10 10
probe rgb 25 55 0.0 1.0 0.0

uniform int index 1
uniform int row 0
uniform vec4 v 0.0394868046587045 0.8922408276905568 0.3337495624366961 0.8732295730825839
uniform vec4 expect 1.03935908892461 1.18846180713529 1.10078681232072 1.72434439561820
uniform mat4x4 src_matrix 0.922040144261674 0.158053783109488 0.357016429866574 0.836368810383957 666.0 0.171634921595771 0.602494709909111 0.693273570571311 0.350720358904176 0.912192627475775 0.688544081259531 0.913891056231967 0.442058176039301 0.829835836794679 0.365674411003021 0.879197364462782
uniform float value 0.560251913703792
draw rect 90 5 10 10
probe rgb 95 10 0.0 1.0 0.0

uniform int row 1
uniform vec4 v 0.0394868046587045 0.8922408276905568 0.3337495624366961 0.8732295730825839
uniform vec4 expect 1.03935908892461 1.18846180713529 1.10078681232072 1.72434439561820
uniform mat4x4 src_matrix 0.922040144261674 0.158053783109488 0.357016429866574 0.836368810383957 0.560251913703792 666.0 0.602494709909111 0.693273570571311 0.350720358904176 0.912192627475775 0.688544081259531 0.913891056231967 0.442058176039301 0.829835836794679 0.365674411003021 0.879197364462782
uniform float value 0.171634921595771
draw rect 90 20 10 10
probe rgb 95 25 0.0 1.0 0.0

uniform int row 2
uniform vec4 v 0.0394868046587045 0.8922408276905568 0.3337495624366961 0.8732295730825839
uniform vec4 expect 1.03935908892461 1.18846180713529 1.10078681232072 1.72434439561820
uniform mat4x4 src_matrix 0.922040144261674 0.158053783109488 0.357016429866574 0.836368810383957 0.560251913703792 0.171634921595771 666.0 0.693273570571311 0.350720358904176 0.912192627475775 0.688544081259531 0.913891056231967 0.442058176039301 0.829835836794679 0.365674411003021 0.879197364462782
uniform float value 0.602494709909111
draw rect 90 35 10 10
probe rgb 95 40 0.0 1.0 0.0

uniform int row 3
uniform vec4 v 0.0394868046587045 0.8922408276905568 0.3337495624366961 0.8732295730825839
uniform vec4 expect 1.03935908892461 1.18846180713529 1.10078681232072 1.72434439561820
uniform mat4x4 src_matrix 0.922040144261674 0.158053783109488 0.357016429866574 0.836368810383957 0.560251913703792 0.171634921595771 0.602494709909111 666.0 0.350720358904176 0.912192627475775 0.688544081259531 0.913891056231967 0.442058176039301 0.829835836794679 0.365674411003021 0.879197364462782
uniform float value 0.693273570571311
draw rect 90 50 10 10
probe rgb 95 55 0.0 1.0 0.0

uniform int index 2
uniform int row 0
uniform vec4 v 0.0394868046587045 0.8922408276905568 0.3337495624366961 0.8732295730825839
uniform vec4 expect 1.03935908892461 1.18846180713529 1.10078681232072 1.72434439561820
uniform mat4x4 src_matrix 0.922040144261674 0.158053783109488 0.357016429866574 0.836368810383957 666.0 0.171634921595771 0.602494709909111 0.693273570571311 0.350720358904176 0.912192627475775 0.688544081259531 0.913891056231967 0.442058176039301 0.829835836794679 0.365674411003021 0.879197364462782
uniform float value 0.560251913703792
draw rect 160 5 10 10
probe rgb 165 10 0.0 1.0 0.0

uniform int row 1
uniform vec4 v 0.0394868046587045 0.8922408276905568 0.3337495624366961 0.8732295730825839
uniform vec4 expect 1.03935908892461 1.18846180713529 1.10078681232072 1.72434439561820
uniform mat4x4 src_matrix 0.922040144261674 0.158053783109488 0.357016429866574 0.836368810383957 0.560251913703792 666.0 0.602494709909111 0.693273570571311 0.350720358904176 0.912192627475775 0.688544081259531 0.913891056231967 0.442058176039301 0.829835836794679 0.365674411003021 0.879197364462782
uniform float value 0.171634921595771
draw rect 160 20 10 10
probe rgb 165 25 0.0 1.0 0.0

uniform int row 2
uniform vec4 v 0.0394868046587045 0.8922408276905568 0.3337495624366961 0.8732295730825839
uniform vec4 expect 1.03935908892461 1.18846180713529 1.10078681232072 1.72434439561820
uniform mat4x4 src_matrix 0.922040144261674 0.158053783109488 0.357016429866574 0.836368810383957 0.560251913703792 0.171634921595771 666.0 0.693273570571311 0.350720358904176 0.912192627475775 0.688544081259531 0.913891056231967 0.442058176039301 0.829835836794679 0.365674411003021 0.879197364462782
uniform float value 0.602494709909111
draw rect 160 35 10 10
probe rgb 165 40 0.0 1.0 0.0

uniform int row 3
uniform vec4 v 0.0394868046587045 0.8922408276905568 0.3337495624366961 0.8732295730825839
uniform vec4 expect 1.03935908892461 1.18846180713529 1.10078681232072 1.72434439561820
uniform mat4x4 src_matrix 0.922040144261674 0.158053783109488 0.357016429866574 0.836368810383957 0.560251913703792 0.171634921595771 0.602494709909111 666.0 0.350720358904176 0.912192627475775 0.688544081259531 0.913891056231967 0.442058176039301 0.829835836794679 0.365674411003021 0.879197364462782
uniform float value 0.693273570571311
draw rect 160 50 10 10
probe rgb 165 55 0.0 1.0 0.0