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
|
#version 460
#extension GL_EXT_shader_explicit_arithmetic_types_int64 : require
#extension GL_EXT_buffer_reference2 : require
layout(buffer_reference) buffer MyBuffer;
struct A {
uint64_t a;
uint b;
};
struct B {
A a;
};
struct S1 { uint64_t x; };
struct S2 { float x; };
struct S3 { uvec3 x; };
struct S4 { uvec3 x[3][3][2][1][2]; };
struct S5 { mat3x3 x; };
struct S6 { MyBuffer x; };
struct S7 { B x; };
layout(set = 0, binding = 1) restrict readonly buffer SSBO {
S1 s1;
S2 s2;
S3 s3;
S4 s4;
S5 s5;
S6 s6;
S7 s7;
} InBuffer;
layout(buffer_reference) buffer MyBuffer {
S1 s1;
S2 s2;
S3 s3;
S4 s4;
S5 s5;
S6 s6;
S7 s7;
};
void main() {
MyBuffer payload;
payload.s1 = InBuffer.s1;
payload.s2 = InBuffer.s2;
payload.s3 = InBuffer.s3;
payload.s4 = InBuffer.s4;
payload.s5 = InBuffer.s5;
payload.s6 = InBuffer.s6;
payload.s7 = InBuffer.s7;
}
|