#include #include using namespace metal; struct storage_block { uint4 baz; int2 quux; }; struct constant_block { float4 foo; int bar; }; #ifndef SPIRV_CROSS_CONSTANT_ID_0 #define SPIRV_CROSS_CONSTANT_ID_0 3 #endif constant int arraySize = SPIRV_CROSS_CONSTANT_ID_0; vertex void main0(constant constant_block* constants_0 [[buffer(4)]], constant constant_block* constants_1 [[buffer(5)]], constant constant_block* constants_2 [[buffer(6)]], constant constant_block* constants_3 [[buffer(7)]], device storage_block* storage_0 [[buffer(8)]], device storage_block* storage_1 [[buffer(9)]], array, 3> images [[texture(0)]]) { constant constant_block* constants[] = { constants_0, constants_1, constants_2, constants_3, }; device storage_block* storage[] = { storage_0, storage_1, }; storage[0]->baz = uint4(constants[3]->foo); storage[1]->quux = images[2].read(uint2(int2(constants[1]->bar))).xy; }