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
|
// func-resource-param-array.slang.glsl
#version 450
#define a a_0
#define b b_0
#define c c_0
#define ii ii_0
#define jj jj_0
#define kk kk_0
#define f_a f_0
#define f_b f_1
#define g_b g_0
#define g_c g_1
#define a_block _S1
#define b_block _S2
#define c_block _S3
#define f_a_i _S4
#define f_b_t _S5
#define f_b_i _S6
#define g_b_i _S7
#define g_b_j _S8
#define g_c_t _S9
#define g_c_i _S10
#define g_c_j _S11
#define tmp_f_a_ii _S12
#define tmp_f_a_jj _S13
#define tmp_f_b _S14
#define tmp_g_b _S15
#define tmp_g_c _S16
layout(std430, binding = 0) buffer a_block {
int _data[];
} a;
layout(std430, binding = 1) buffer b_block {
int _data[];
} b[3];
layout(std430, binding = 2) buffer c_block {
int _data[];
} c[4][3];
int f_a(uint f_a_i)
{
return a._data[f_a_i];
}
int f_b(uint f_b_t, uint f_b_i)
{
return b[f_b_t]._data[f_b_i];
}
int g_b(uint g_b_i, uint g_b_j)
{
return b[g_b_i]._data[g_b_j];
}
int g_c(uint g_c_t, uint g_c_i, uint g_c_j)
{
return c[g_c_t][g_c_i]._data[g_c_j];
}
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
void main()
{
uint ii = gl_GlobalInvocationID.x;
uint jj = gl_GlobalInvocationID.y;
uint kk = gl_GlobalInvocationID.z;
int tmp_f_a_ii = f_a(ii);
int tmp_f_a_jj = f_a(jj);
int tmp_0 = tmp_f_a_ii + tmp_f_a_jj;
int tmp_f_b = f_b(ii, jj);
int tmp_1 = tmp_0 + tmp_f_b;
int tmp_g_b = g_b(ii, jj);
int tmp_2 = tmp_1 + tmp_g_b;
int tmp_g_c = g_c(ii, jj, kk);
int tmp_3 = tmp_2 + tmp_g_c;
a._data[ii] = tmp_3;
return;
}
|