#version 310 es precision mediump float; struct Uniforms { uint dstTextureFlipY; uint channelCount; uvec2 srcCopyOrigin; uvec2 dstCopyOrigin; uvec2 copySize; }; layout(binding = 2) buffer OutputBuf_1 { uint result[]; } tint_symbol; layout(binding = 3) uniform Uniforms_1 { uint dstTextureFlipY; uint channelCount; uvec2 srcCopyOrigin; uvec2 dstCopyOrigin; uvec2 copySize; } uniforms; bool aboutEqual(float value, float expect) { return (abs((value - expect)) < 0.001f); } struct tint_symbol_3 { uvec3 GlobalInvocationID; }; uniform highp sampler2D src_1; uniform highp sampler2D dst_1; void tint_symbol_1_inner(uvec3 GlobalInvocationID) { ivec2 srcSize = textureSize(src_1, 0); ivec2 dstSize = textureSize(dst_1, 0); uvec2 dstTexCoord = uvec2(GlobalInvocationID.xy); vec4 nonCoveredColor = vec4(0.0f, 1.0f, 0.0f, 1.0f); bool success = true; bool tint_tmp_2 = (dstTexCoord.x < uniforms.dstCopyOrigin.x); if (!tint_tmp_2) { tint_tmp_2 = (dstTexCoord.y < uniforms.dstCopyOrigin.y); } bool tint_tmp_1 = (tint_tmp_2); if (!tint_tmp_1) { tint_tmp_1 = (dstTexCoord.x >= (uniforms.dstCopyOrigin.x + uniforms.copySize.x)); } bool tint_tmp = (tint_tmp_1); if (!tint_tmp) { tint_tmp = (dstTexCoord.y >= (uniforms.dstCopyOrigin.y + uniforms.copySize.y)); } if ((tint_tmp)) { bool tint_tmp_3 = success; if (tint_tmp_3) { tint_tmp_3 = all(equal(texelFetch(dst_1, ivec2(dstTexCoord), 0), nonCoveredColor)); } success = (tint_tmp_3); } else { uvec2 srcTexCoord = ((dstTexCoord - uniforms.dstCopyOrigin) + uniforms.srcCopyOrigin); if ((uniforms.dstTextureFlipY == 1u)) { srcTexCoord.y = ((uint(srcSize.y) - srcTexCoord.y) - 1u); } vec4 srcColor = texelFetch(src_1, ivec2(srcTexCoord), 0); vec4 dstColor = texelFetch(dst_1, ivec2(dstTexCoord), 0); if ((uniforms.channelCount == 2u)) { bool tint_tmp_5 = success; if (tint_tmp_5) { tint_tmp_5 = aboutEqual(dstColor.r, srcColor.r); } bool tint_tmp_4 = (tint_tmp_5); if (tint_tmp_4) { tint_tmp_4 = aboutEqual(dstColor.g, srcColor.g); } success = (tint_tmp_4); } else { bool tint_tmp_9 = success; if (tint_tmp_9) { tint_tmp_9 = aboutEqual(dstColor.r, srcColor.r); } bool tint_tmp_8 = (tint_tmp_9); if (tint_tmp_8) { tint_tmp_8 = aboutEqual(dstColor.g, srcColor.g); } bool tint_tmp_7 = (tint_tmp_8); if (tint_tmp_7) { tint_tmp_7 = aboutEqual(dstColor.b, srcColor.b); } bool tint_tmp_6 = (tint_tmp_7); if (tint_tmp_6) { tint_tmp_6 = aboutEqual(dstColor.a, srcColor.a); } success = (tint_tmp_6); } } uint outputIndex = ((GlobalInvocationID.y * uint(dstSize.x)) + GlobalInvocationID.x); if (success) { tint_symbol.result[outputIndex] = 1u; } else { tint_symbol.result[outputIndex] = 0u; } } layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; void tint_symbol_1(tint_symbol_3 tint_symbol_2) { tint_symbol_1_inner(tint_symbol_2.GlobalInvocationID); return; } void main() { tint_symbol_3 inputs; inputs.GlobalInvocationID = gl_GlobalInvocationID; tint_symbol_1(inputs); }