#version 450 layout(local_size_x = 1) in; struct M0 { double v; dvec2 b[2]; dmat2x3 c; dmat3x2 d; }; // Test buffer layout handling. layout(std430, binding = 0) buffer SSBO0 { dvec4 a; M0 m0; dmat4 b; } ssbo_0; layout(std430, binding = 1) buffer SSBO1 { dmat4 a; dvec4 b; M0 m0; } ssbo_1; layout(std430, binding = 2) buffer SSBO2 { double a[4]; dvec2 b[4]; } ssbo_2; layout(std140, binding = 3) buffer SSBO3 { double a[4]; dvec2 b[4]; } ssbo_3; void main() { ssbo_0.a += dvec4(10, 20, 30, 40); ssbo_0.a += 20; dvec4 a = ssbo_0.a; dmat4 amat = ssbo_0.b; ssbo_0.a = abs(a); ssbo_0.a = sign(a); ssbo_0.a = floor(a); ssbo_0.a = trunc(a); ssbo_0.a = round(a); ssbo_0.a = roundEven(a); ssbo_0.a = ceil(a); ssbo_0.a = fract(a); ssbo_0.a = mod(a, 20.0); ssbo_0.a = mod(a, a); ssbo_0.a = min(a, a); ssbo_0.a = max(a, a); ssbo_0.a = clamp(a, a, a); ssbo_0.a = mix(a, a, a); ssbo_0.a = step(a, a); ssbo_0.a = smoothstep(a, a, a); bvec4 b = isnan(a); bvec4 c = isinf(a); double f = packDouble2x32(uvec2(10, 40)); uvec2 g = unpackDouble2x32(f); double d = length(a); d = distance(a, a); d = dot(a, a); dvec3 e = cross(a.xyz, a.yzw); a = faceforward(a, a, a); a = reflect(a, a); a = refract(a, a, a.x); dmat4 l = matrixCompMult(amat, amat); l = outerProduct(a, a); l = transpose(l); double m = determinant(l); l = inverse(l); bvec4 k = lessThan(a, a); k = lessThanEqual(a, a); k = greaterThan(a, a); k = greaterThanEqual(a, a); ssbo_1.b.x += 1.0lf; ssbo_2.b[0].x += 1.0lf; ssbo_3.b[0].x += 1.0lf; }