#version 430
#ifdef GL_ARB_fragment_shader_interlock
#extension GL_ARB_fragment_shader_interlock : enable
#define SPIRV_Cross_beginInvocationInterlock() beginInvocationInterlockARB()
#define SPIRV_Cross_endInvocationInterlock() endInvocationInterlockARB()
#elif defined(GL_INTEL_fragment_shader_ordering)
#extension GL_INTEL_fragment_shader_ordering : enable
#define SPIRV_Cross_beginInvocationInterlock() beginFragmentShaderOrderingINTEL()
#define SPIRV_Cross_endInvocationInterlock()
#endif
// Shader Name: 925d1eff277a4bf2eb0694d316973907c5f5f8cfc5bb3364e3706cb921203f88

layout(binding = 3, std140) uniform GxmRenderFragBufferBlock
{
    float back_disabled;
    float front_disabled;
    float writing_mask;
    float use_raw_image;
    float res_multiplier;
} renderFragInfo;

layout(binding = 1, rgba8) uniform readonly image2D f_mask;

layout(location = 1) in vec4 v_Color0;
layout(location = 0) out vec4 out_color;
vec4 pa[32];
vec4 sa[32];
vec4 internals[3];
vec4 r[20];
bool p[4];
int idx[2];
vec4 outs[20];

void frag_init()
{
    if ((renderFragInfo.front_disabled != 0.0) && gl_FrontFacing)
    {
        discard;
    }
    if ((renderFragInfo.back_disabled != 0.0) && (!gl_FrontFacing))
    {
        discard;
    }
}

float pack2xF16(vec2 _154)
{
    return uintBitsToFloat(packHalf2x16(_154));
}

void primary_program()
{
    vec2 _137 = vec2(pa[0].x, pa[0].y);
    vec2 _144 = vec2(pa[0].z, pa[0].w);
    vec4 _149 = vec4(_137.x, _137.y, _144.x, _144.y);
    vec2 _165 = vec2(pack2xF16(vec2(_149.x, _149.y)), pack2xF16(vec2(_149.z, _149.w)));
    pa[0] = vec4(_165.x, _165.y, pa[0].z, pa[0].w);
}

vec2 unpack2xF16(float _84)
{
    return unpackHalf2x16(floatBitsToUint(_84));
}

void frag_output_finalize()
{
    vec2 _81 = vec2(pa[0].x, pa[0].y);
    vec2 _90 = unpack2xF16(_81.x);
    vec2 _92 = unpack2xF16(_81.y);
    out_color = vec4(_90.x, _90.y, _92.x, _92.y);
    if (all(lessThan(imageLoad(f_mask, ivec4(gl_FragCoord).xy), vec4(0.5))))
    {
        discard;
    }
}

void main()
{
    pa[0] = v_Color0;
    frag_init();
    primary_program();
    frag_output_finalize();
}

