1#include <metal_stdlib>
2#include <simd/simd.h>
3
4using namespace metal;
5
6struct Light
7{
8    packed_float3 Position;
9    float Radius;
10    float4 Color;
11};
12
13struct UBO
14{
15    float4x4 uMVP;
16    Light lights[4];
17};
18
19struct main0_out
20{
21    float4 vColor [[user(locn0)]];
22    float4 gl_Position [[position]];
23};
24
25struct main0_in
26{
27    float4 aVertex [[attribute(0)]];
28    float3 aNormal [[attribute(1)]];
29};
30
31vertex main0_out main0(main0_in in [[stage_in]], constant UBO& _21 [[buffer(0)]])
32{
33    main0_out out = {};
34    out.gl_Position = _21.uMVP * in.aVertex;
35    out.vColor = float4(0.0);
36    for (int _96 = 0; _96 < 4; )
37    {
38        float3 _68 = in.aVertex.xyz - float3(_21.lights[_96].Position);
39        out.vColor += ((_21.lights[_96].Color * fast::clamp(1.0 - (length(_68) / _21.lights[_96].Radius), 0.0, 1.0)) * dot(in.aNormal, normalize(_68)));
40        _96++;
41        continue;
42    }
43    return out;
44}
45
46