#include <metal_stdlib>
#include <simd/simd.h>

using namespace metal;

struct main0_out
{
    float4 oColor [[color(0)]];
};

struct main0_in
{
    float2 vUv [[user(locn0)]];
};

fragment main0_out main0(main0_in in [[stage_in]], constant float& uStarGlow [[buffer(0)]], constant float& uTime [[buffer(1)]], constant float& uTwinkleSpeed [[buffer(2)]], constant float2& uResolution [[buffer(3)]], constant float& uSpeed [[buffer(4)]], constant float& uScale [[buffer(5)]], constant float& uBrightness [[buffer(6)]], constant float3& uColor [[buffer(7)]])
{
    main0_out out = {};
    float _313 = (uTime * 0.00999999977648258209228515625) * uSpeed;
    float _317 = _313 * 0.0900000035762786865234375;
    float3 _674;
    float2 _675;
    _675 = ((in.vUv * uResolution) - (uResolution * 0.5)) / float2(uResolution.y);
    _674 = float3(0.0);
    float2 _366;
    float3 _385;
    for (int _673 = 0; _673 < 4; _675 = _366, _674 = _385, _673++)
    {
        float _332 = float(_673) * 0.25;
        float _337 = fract(_332 + _313);
        float _361 = (_317 * _332) * (-10.0);
        float _418 = sin(_361);
        float _420 = cos(_361);
        _366 = _675 * float2x2(float2(_420, -_418), float2(_418, _420));
        float2 _376 = ((_366 * mix(3.0, 0.00999999977648258209228515625, _337)) * uScale) + float2(_332 * (3430.0 + fract(_332)));
        float2 _456 = fract(_376) - float2(0.5);
        float2 _458 = floor(_376);
        float _462 = (uTime * 0.3499999940395355224609375) * uTwinkleSpeed;
        float3 _677;
        _677 = float3(0.0);
        float3 _685;
        for (int _676 = -1; _676 <= 1; _677 = _685, _676++)
        {
            _685 = _677;
            float3 _534;
            for (int _680 = -1; _680 <= 1; _685 = _534, _680++)
            {
                float2 _477 = float2(float(_680), float(_676));
                float2 _548 = fract((_458 + _477) * float2(123.4499969482421875, 345.670013427734375));
                float2 _556 = _548 + float2(dot(_548, _548 + float2(45.31999969482421875)));
                float _562 = fract(_556.x * _556.y);
                float2 _494 = (_456 - _477) - float2(_562 - 0.5, fract(_562 * 45.0) - 0.5);
                float _497 = fract(_562 * 1356.3299560546875);
                float _499 = smoothstep(0.89999997615814208984375, 1.0, _497);
                float _683;
                do
                {
                    float _575 = length(_494);
                    if (_575 >= 1.0)
                    {
                        _683 = 0.0;
                        break;
                    }
                    float _584 = (0.0900000035762786865234375 * uStarGlow) / fast::max(_575, 9.9999997473787516355514526367188e-05);
                    float _682;
                    if (_499 > 0.0)
                    {
                        float _589 = _313 * (-0.565486729145050048828125);
                        float _640 = sin(_589);
                        float _642 = cos(_589);
                        float2 _592 = _494 * float2x2(float2(_642, -_640), float2(_640, _642));
                        float2 _610 = _592 * float2x2(float2(0.707106769084930419921875, -0.707106769084930419921875), float2(0.707106769084930419921875));
                        _682 = (_584 + (fast::max(0.0, 1.0 - abs((_592.x * _592.y) * 3000.0)) * _499)) + ((fast::max(0.0, 1.0 - abs((_610.x * _610.y) * 3000.0)) * 0.300000011920928955078125) * _499);
                    }
                    else
                    {
                        _682 = _584;
                    }
                    _683 = _682 * smoothstep(1.0, 0.0500000007450580596923828125, _575);
                    break;
                } while(false);
                _534 = _685 + (((((sin(float3(0.699999988079071044921875, 0.300000011920928955078125, 0.89999997615814208984375) * ((fract(_562 * 2150.0) * 9.424777984619140625) * _462)) * (0.4000000059604644775390625 * sin(_462))) + float3(0.60000002384185791015625)) * float3(1.0, 0.100000001490116119384765625, 0.89999997615814208984375 + _497)) * (_683 * _497)) * 3.75);
            }
        }
        _385 = _674 + (_677 * (_337 * smoothstep(0.100000001490116119384765625, 1.10000002384185791015625, _337)));
    }
    out.oColor = float4(_674 * (uColor * uBrightness), 1.0);
    return out;
}

