1#include <metal_stdlib> 2#include <simd/simd.h> 3#ifdef __clang__ 4#pragma clang diagnostic ignored "-Wall" 5#endif 6using namespace metal; 7struct SomeData { 8 float4 a; 9 float2 b; 10}; 11struct Inputs { 12 int bufferIndex [[user(locn2) flat]]; 13}; 14struct Outputs { 15 half4 sk_FragColor [[color(0)]]; 16}; 17struct storageBuffer { 18 uint offset; 19 SomeData inputData[1]; 20}; 21struct outputBuffer { 22 SomeData outputData[1]; 23}; 24struct Globals { 25 const device storageBuffer* _anonInterface0; 26 device outputBuffer* _anonInterface1; 27}; 28fragment Outputs fragmentMain(Inputs _in [[stage_in]], const device storageBuffer& _anonInterface0 [[buffer(0)]], device outputBuffer& _anonInterface1 [[buffer(1)]], bool _frontFacing [[front_facing]], float4 _fragCoord [[position]]) { 29 Globals _globals{&_anonInterface0, &_anonInterface1}; 30 (void)_globals; 31 Outputs _out; 32 (void)_out; 33 _globals._anonInterface1->outputData[_globals._anonInterface0->offset] = _globals._anonInterface0->inputData[_globals._anonInterface0->offset]; 34 _out.sk_FragColor = half4(_globals._anonInterface0->inputData[_in.bufferIndex].a * _globals._anonInterface0->inputData[_in.bufferIndex].b.x); 35 return _out; 36} 37