#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 float2& uMaskUvScale [[buffer(0)]], constant float2& uMaskUvOffset [[buffer(1)]], constant float& uMaskHi [[buffer(2)]], constant float& uMaskLo [[buffer(3)]], texture2d<float> uTex [[texture(0)]], texture2d<float> uMask [[texture(1)]], sampler uTexSmplr [[sampler(0)]], sampler uMaskSmplr [[sampler(1)]])
{
    main0_out out = {};
    out.oColor = uTex.sample(uTexSmplr, in.vUv) * fast::clamp(smoothstep(uMaskLo, fast::max(uMaskHi, uMaskLo + 0.001000000047497451305389404296875), uMask.sample(uMaskSmplr, ((in.vUv * uMaskUvScale) + uMaskUvOffset)).x), 0.0, 1.0);
    return out;
}

