@@ -104,12 +104,34 @@ layout(location = 0, index = 0) out vec4 Color;
104
104
105
105
void main()
106
106
{
107
+ uint subgroupId = gl_SubgroupInvocationID;
108
+
107
109
vec4 fragdata = vec4(0);
108
110
109
111
if(IsTest(1) || IsTest(2))
110
- fragdata = vec4(gl_SubgroupInvocationID, 0, 0, 1);
112
+ {
113
+ fragdata = vec4(subgroupId, 0, 0, 1);
114
+ }
111
115
else if(IsTest(4))
112
- fragdata = vec4(subgroupAdd(gl_SubgroupInvocationID), 0, 0, 0);
116
+ {
117
+ fragdata = vec4(subgroupAdd(subgroupId), 0, 0, 0);
118
+ }
119
+ else if(IsTest(5))
120
+ {
121
+ // subgroupQuadBroadcast : unit tests
122
+ fragdata.x = float(subgroupQuadBroadcast(subgroupId, 0));
123
+ fragdata.y = float(subgroupQuadBroadcast(subgroupId, 1));
124
+ fragdata.z = float(subgroupQuadBroadcast(subgroupId, 2));
125
+ fragdata.w = float(subgroupQuadBroadcast(subgroupId, 3));
126
+ }
127
+ else if(IsTest(6))
128
+ {
129
+ // subgroupQuadSwapDiagonal, subgroupQuadSwapHorizontal, subgroupQuadSwapVertical : unit tests
130
+ fragdata.x = float(subgroupQuadSwapDiagonal(subgroupId));
131
+ fragdata.y = float(subgroupQuadSwapHorizontal(subgroupId));
132
+ fragdata.z = float(subgroupQuadSwapVertical(subgroupId));
133
+ fragdata.w = subgroupQuadBroadcast(fragdata.x, 2);
134
+ }
113
135
114
136
Color = vertdata + fragdata;
115
137
}
0 commit comments