blob: 20f4db4627d8bc5cf9a20e00f937cfa284f2fa89 [file] [log] [blame]
layout(set=0, binding=0) buffer sizeBuffer {
int2[] sizes; // in1, in2, out
};
layout(set=0, binding=1) readonly buffer inputs1 {
float data1[];
};
layout(set=0, binding=2) readonly buffer inputs2 {
float data2[];
};
layout(set=0, binding=3) writeonly buffer result {
float resultData[];
};
void main() {
sizes[2] = int2(sizes[0].x, sizes[1].y);
int2 resultCell = int2(sk_GlobalInvocationID.x, sk_GlobalInvocationID.y);
float result = 0.0;
for (int i = 0; i < sizes[0].y; ++i) {
int a = i + resultCell.x * sizes[0].y;
int b = resultCell.y + i * sizes[1].y;
result += data1[a] * data2[b];
}
int index = resultCell.y + resultCell.x * sizes[1].y;
resultData[index] = result;
}