#version 450
#extension GL_ARB_sparse_texture_clamp: enable

uniform sampler2D               s2D;
uniform sampler3D               s3D;
uniform sampler2DShadow         s2DShadow;
uniform samplerCubeShadow       sCubeShadow;
uniform sampler2DArrayShadow    s2DArrayShadow;
uniform sampler2DRectShadow     s2DRectShadow;
uniform samplerCubeArrayShadow  sCubeArrayShadow;

uniform isamplerCube            isCube;
uniform isampler2DArray         is2DArray;

uniform usamplerCubeArray       usCubeArray;
uniform usampler2DRect          us2DRect;

in vec2 c2;
in vec3 c3;
in vec4 c4;

in float lodClamp;

out vec4 outColor;

void main()
{
    int   resident = 0;
    vec4  texel  = vec4(0.0);
    ivec4 itexel = ivec4(0);
    uvec4 utexel = uvec4(0);

    resident |= sparseTextureClampARB(s2D, c2, lodClamp, texel);
    resident |= sparseTextureClampARB(s3D, c3, lodClamp, texel, 2.0);
    resident |= sparseTextureClampARB(isCube, c3, lodClamp, itexel);
    resident |= sparseTextureClampARB(s2DShadow, c3, lodClamp, texel.x);
    resident |= sparseTextureClampARB(sCubeArrayShadow, c4, 1.0, lodClamp, texel.x);

    texel   += textureClampARB(s2D, c2, lodClamp);
    texel   += textureClampARB(s3D, c3, lodClamp, 2.0);
    itexel  += textureClampARB(isCube, c3, lodClamp);
    texel.x += textureClampARB(s2DShadow, c3, lodClamp);
    texel.x += textureClampARB(sCubeArrayShadow, c4, 1.0, lodClamp);

    resident |= sparseTextureOffsetClampARB(s3D, c3, ivec3(2), lodClamp, texel, 2.0);
    resident |= sparseTextureOffsetClampARB(us2DRect, c2, ivec2(3), lodClamp, utexel);
    resident |= sparseTextureOffsetClampARB(s2DArrayShadow, c4, ivec2(5), lodClamp, texel.z);

    texel   += textureOffsetClampARB(s3D, c3, ivec3(2), lodClamp, 2.0);
    utexel  += textureOffsetClampARB(us2DRect, c2, ivec2(3), lodClamp);
    texel.z += textureOffsetClampARB(s2DArrayShadow, c4, ivec2(5), lodClamp);

    resident |= sparseTextureGradClampARB(s3D, c3, c3, c3, lodClamp, texel);
    resident |= sparseTextureGradClampARB(sCubeShadow, c4, c3, c3, lodClamp, texel.y);
    resident |= sparseTextureGradClampARB(usCubeArray, c4, c3, c3, lodClamp, utexel);

    texel   += textureGradClampARB(s3D, c3, c3, c3, lodClamp);
    texel.y += textureGradClampARB(sCubeShadow, c4, c3, c3, lodClamp);
    utexel  += textureGradClampARB(usCubeArray, c4, c3, c3, lodClamp);

    resident |= sparseTextureGradOffsetClampARB(s2D, c2, c2, c2, ivec2(5), lodClamp, texel);
    resident |= sparseTextureGradOffsetClampARB(s2DRectShadow, c3, c2, c2, ivec2(6), lodClamp, texel.w);
    resident |= sparseTextureGradOffsetClampARB(is2DArray, c3, c2, c2, ivec2(2), lodClamp, itexel);

    texel   += textureGradOffsetClampARB(s2D, c2, c2, c2, ivec2(5), lodClamp);
    texel.w += textureGradOffsetClampARB(s2DRectShadow, c3, c2, c2, ivec2(6), lodClamp);
    itexel  += textureGradOffsetClampARB(is2DArray, c3, c2, c2, ivec2(2), lodClamp);

    outColor = sparseTexelsResidentARB(resident) ? texel : vec4(itexel) + vec4(utexel);
}