110 lines
1.9 KiB
Plaintext
110 lines
1.9 KiB
Plaintext
|
#version 450
|
||
|
layout(local_size_x = 64) in;
|
||
|
|
||
|
layout(set = 0, binding = 0) buffer SSBO_A
|
||
|
{
|
||
|
float data[];
|
||
|
} ssbo_a;
|
||
|
|
||
|
layout(set = 0, binding = 0) buffer SSBO_B
|
||
|
{
|
||
|
uvec2 data[];
|
||
|
} ssbo_b;
|
||
|
|
||
|
layout(set = 0, binding = 0) readonly buffer SSBO_BRO
|
||
|
{
|
||
|
uvec2 data[];
|
||
|
} ssbo_b_readonly;
|
||
|
|
||
|
layout(set = 0, binding = 1) uniform UBO_C
|
||
|
{
|
||
|
float data[1024];
|
||
|
} ubo_c;
|
||
|
|
||
|
layout(set = 0, binding = 1) uniform UBO_D
|
||
|
{
|
||
|
uvec2 data[1024];
|
||
|
} ubo_d;
|
||
|
|
||
|
layout(set = 0, binding = 2) buffer SSBO_As
|
||
|
{
|
||
|
float data[];
|
||
|
} ssbo_as[4];
|
||
|
|
||
|
layout(set = 0, binding = 2) buffer SSBO_Bs
|
||
|
{
|
||
|
uvec2 data[1024];
|
||
|
} ssbo_bs[4];
|
||
|
|
||
|
layout(set = 0, binding = 2) readonly buffer SSBO_BsRO
|
||
|
{
|
||
|
uvec2 data[1024];
|
||
|
} ssbo_bs_readonly[4];
|
||
|
|
||
|
layout(set = 0, binding = 3) uniform UBO_Cs
|
||
|
{
|
||
|
float data[1024];
|
||
|
} ubo_cs[4];
|
||
|
|
||
|
layout(set = 0, binding = 3) uniform UBO_Ds
|
||
|
{
|
||
|
uvec2 data[1024];
|
||
|
} ubo_ds[4];
|
||
|
|
||
|
layout(set = 2, binding = 0) buffer SSBO_E
|
||
|
{
|
||
|
float data[];
|
||
|
} ssbo_e;
|
||
|
|
||
|
layout(set = 2, binding = 0) buffer SSBO_F
|
||
|
{
|
||
|
uvec2 data[];
|
||
|
} ssbo_f;
|
||
|
|
||
|
layout(set = 2, binding = 1) uniform UBO_G
|
||
|
{
|
||
|
float data[1024];
|
||
|
} ubo_g;
|
||
|
|
||
|
layout(set = 2, binding = 1) uniform UBO_H
|
||
|
{
|
||
|
uvec2 data[1024];
|
||
|
} ubo_h;
|
||
|
|
||
|
layout(set = 2, binding = 0) readonly buffer SSBO_I
|
||
|
{
|
||
|
uvec2 data[];
|
||
|
} ssbo_i;
|
||
|
|
||
|
void func0()
|
||
|
{
|
||
|
ssbo_a.data[gl_GlobalInvocationID.x] = ubo_c.data[gl_WorkGroupID.x];
|
||
|
ssbo_b.data[gl_GlobalInvocationID.x] =
|
||
|
ubo_d.data[gl_WorkGroupID.y] + ssbo_b_readonly.data[gl_GlobalInvocationID.x];
|
||
|
}
|
||
|
|
||
|
void func1()
|
||
|
{
|
||
|
ssbo_as[gl_WorkGroupID.x].data[gl_GlobalInvocationID.x] = ubo_cs[gl_WorkGroupID.x].data[0];
|
||
|
}
|
||
|
|
||
|
void func2()
|
||
|
{
|
||
|
ssbo_bs[gl_WorkGroupID.x].data[gl_GlobalInvocationID.x] =
|
||
|
ubo_ds[gl_WorkGroupID.x].data[0] + ssbo_bs_readonly[gl_WorkGroupID.x].data[gl_GlobalInvocationID.x];
|
||
|
}
|
||
|
|
||
|
void func3()
|
||
|
{
|
||
|
ssbo_e.data[gl_GlobalInvocationID.x] = ubo_g.data[gl_WorkGroupID.x];
|
||
|
ssbo_f.data[gl_GlobalInvocationID.x] = ubo_h.data[gl_WorkGroupID.y] + ssbo_i.data[gl_GlobalInvocationID.x];
|
||
|
}
|
||
|
|
||
|
void main()
|
||
|
{
|
||
|
func0();
|
||
|
func1();
|
||
|
func2();
|
||
|
func3();
|
||
|
}
|