#include #include using namespace metal; struct Scene { float2 imagePosition; float2 _imageSize; float2 anchorPoint; float2 scale; float alpha; float borderWidth; uint flags; float4 baseColor; float4 rounding; float4 edgeColor; }; struct type_StructuredBuffer_Scene { Scene _m0[1]; }; struct type_Uniforms { float2 Extents; }; struct main0_out { float4 out_var_TEXCOORD0 [[user(locn0)]]; float2 out_var_TEXCOORD1 [[user(locn1)]]; float2 out_var_TEXCOORD2 [[user(locn2)]]; uint out_var_TEXCOORD3 [[user(locn3)]]; float4 gl_Position [[position]]; }; struct main0_in { float3 in_var_TEXCOORD0 [[attribute(0)]]; float2 in_var_TEXCOORD3 [[attribute(3)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant type_Uniforms& Uniforms [[buffer(0)]], const device type_StructuredBuffer_Scene& scene [[buffer(1)]], uint gl_InstanceIndex [[instance_id]]) { main0_out out = {}; float2 _63 = scene._m0[gl_InstanceIndex]._imageSize / Uniforms.Extents; float2 _69 = (((scene._m0[gl_InstanceIndex].imagePosition / Uniforms.Extents) * 2.0) - float2(1.0)) - ((scene._m0[gl_InstanceIndex].anchorPoint * _63) * scene._m0[gl_InstanceIndex].scale); float2 _99 = ((in.in_var_TEXCOORD0.xy - scene._m0[gl_InstanceIndex].anchorPoint) * float2(0.5)) * scene._m0[gl_InstanceIndex]._imageSize; _99.y = scene._m0[gl_InstanceIndex]._imageSize.y - _99.y; out.out_var_TEXCOORD0 = scene._m0[gl_InstanceIndex].baseColor; out.out_var_TEXCOORD1 = float2(1.0 - in.in_var_TEXCOORD3.x, in.in_var_TEXCOORD3.y); out.out_var_TEXCOORD2 = _99; out.out_var_TEXCOORD3 = gl_InstanceIndex; out.gl_Position = float4(_69.x + ((in.in_var_TEXCOORD0.x * _63.x) * scene._m0[gl_InstanceIndex].scale.x), _69.y + (((-in.in_var_TEXCOORD0.y) * _63.y) * scene._m0[gl_InstanceIndex].scale.y), in.in_var_TEXCOORD0.z, 1.0); return out; }