[require] GLSL >= 1.40 [fragment shader] #version 140 out vec4 sk_FragColor; uniform vec4 uellipse_Stage1_c1_c0_c0_c0_c0_c0; uniform vec4 urectUniform_Stage1_c1_c0_c0_c0_c1_c0; uniform vec4 uinnerRect_Stage1_c1_c0_c1_c0_c0_c0; uniform vec2 uradiusPlusHalf_Stage1_c1_c0_c1_c0_c0_c0; uniform vec2 uScale_Stage1_c1_c0_c1_c0_c1_c0; uniform vec4 uTexDom_Stage1_c1_c0_c1_c0_c1_c0; uniform vec3 uDecalParams_Stage1_c1_c0_c1_c0_c1_c0; uniform sampler2D uTextureSampler_0_Stage0; uniform sampler2D uTextureSampler_0_Stage1; uniform sampler2D uTextureSampler_1_Stage1; uniform sampler2D uTextureSampler_2_Stage1; noperspective in vec2 vTransformedCoords_0_Stage0; noperspective in vec2 vTransformedCoords_1_Stage0; noperspective in vec2 vtextureCoords_Stage0; flat in vec4 vtextureDomain_Stage0; flat in vec4 vcolor_Stage0; vec4 ColorTableEffect_Stage1_c0_c0(vec4 _input) { vec4 _output; float nonZeroAlpha = max(_input.w, 9.9999997473787516e-05); vec4 coord = vec4(_input.xyz / nonZeroAlpha, nonZeroAlpha); coord = coord * 0.9960939884185791 + vec4(0.0019529999699443579, 0.0019529999699443579, 0.0019529999699443579, 0.0019529999699443579); _output.w = texture(uTextureSampler_0_Stage1, vec2(coord.w, 0.125)).w; _output.x = texture(uTextureSampler_0_Stage1, vec2(coord.x, 0.375)).w; _output.y = texture(uTextureSampler_0_Stage1, vec2(coord.y, 0.625)).w; _output.z = texture(uTextureSampler_0_Stage1, vec2(coord.z, 0.875)).w; _output.xyz *= _output.w; return _output; } vec4 EllipseEffect_Stage1_c1_c0_c0_c0_c0_c0(vec4 _input) { vec4 _output; vec2 d = gl_FragCoord.xy - uellipse_Stage1_c1_c0_c0_c0_c0_c0.xy; vec2 Z = d * uellipse_Stage1_c1_c0_c0_c0_c0_c0.zw; float implicit = dot(Z, d) - 1.0; float grad_dot = 4.0 * dot(Z, Z); { grad_dot = max(grad_dot, 1.1754999560161448e-38); } float approx_dist = implicit * inversesqrt(grad_dot); float alpha; { alpha = approx_dist > 0.0 ? 0.0 : 1.0; } _output = _input * alpha; return _output; } vec4 AARectEffect_Stage1_c1_c0_c0_c0_c1_c0(vec4 _input) { vec4 _output; float alpha; { float xSub, ySub; xSub = min(gl_FragCoord.x - urectUniform_Stage1_c1_c0_c0_c0_c1_c0.x, 0.0); xSub += min(urectUniform_Stage1_c1_c0_c0_c0_c1_c0.z - gl_FragCoord.x, 0.0); ySub = min(gl_FragCoord.y - urectUniform_Stage1_c1_c0_c0_c0_c1_c0.y, 0.0); ySub += min(urectUniform_Stage1_c1_c0_c0_c0_c1_c0.w - gl_FragCoord.y, 0.0); alpha = (1.0 + max(xSub, -1.0)) * (1.0 + max(ySub, -1.0)); } { alpha = 1.0 - alpha; } _output = _input * alpha; return _output; } vec4 blend_exclusion(vec4 src, vec4 dst) { return vec4((dst.xyz + src.xyz) - (2.0 * dst.xyz) * src.xyz, src.w + (1.0 - src.w) * dst.w); } vec4 ComposeTwo_Stage1_c1_c0_c0_c0(vec4 _input) { vec4 _output; vec4 inputColor = vec4(_input.xyz, 1.0); _output = blend_exclusion(EllipseEffect_Stage1_c1_c0_c0_c0_c0_c0(inputColor), AARectEffect_Stage1_c1_c0_c0_c0_c1_c0(inputColor)); _output *= _input.w; return _output; } vec4 CircularRRect_Stage1_c1_c0_c1_c0_c0_c0(vec4 _input) { vec4 _output; vec2 dxy0 = uinnerRect_Stage1_c1_c0_c1_c0_c0_c0.xy - gl_FragCoord.xy; vec2 dxy1 = gl_FragCoord.xy - uinnerRect_Stage1_c1_c0_c1_c0_c0_c0.zw; vec2 dxy = max(max(dxy0, dxy1), 0.0); float alpha = clamp(uradiusPlusHalf_Stage1_c1_c0_c1_c0_c0_c0.x - length(dxy), 0.0, 1.0); _output = _input * alpha; return _output; } vec4 DisplacementMap_Stage1_c1_c0_c1_c0_c1_c0(vec4 _input) { vec4 _output; vec4 dColor = texture(uTextureSampler_1_Stage1, vTransformedCoords_0_Stage0); dColor.xyz = dColor.w < 9.9999999747524271e-07 ? vec3(0.0) : clamp(dColor.xyz / dColor.w, 0.0, 1.0); vec2 cCoords = vTransformedCoords_1_Stage0 + uScale_Stage1_c1_c0_c1_c0_c1_c0 * (dColor.zw - vec2(0.5)); { vec2 origCoord = cCoords; vec2 clampedCoord; clampedCoord = clamp(origCoord, uTexDom_Stage1_c1_c0_c1_c0_c1_c0.xy, uTexDom_Stage1_c1_c0_c1_c0_c1_c0.zw); vec4 textureColor = texture(uTextureSampler_2_Stage1, clampedCoord); float err = max(abs(clampedCoord.x - origCoord.x) * uDecalParams_Stage1_c1_c0_c1_c0_c1_c0.x, abs(clampedCoord.y - origCoord.y) * uDecalParams_Stage1_c1_c0_c1_c0_c1_c0.y); if (err > uDecalParams_Stage1_c1_c0_c1_c0_c1_c0.z) { err = 1.0; } else if (uDecalParams_Stage1_c1_c0_c1_c0_c1_c0.z < 1.0) { err = 0.0; } _output = mix(textureColor, vec4(0.0, 0.0, 0.0, 0.0), err); } return _output; } float _guarded_divide(float n, float d) { return n / d; } float _soft_light_component(float sc, float sa, float dc, float da) { if (2.0 * sc <= sa) { return (_guarded_divide((dc * dc) * (sa - 2.0 * sc), da) + (1.0 - da) * sc) + dc * ((-sa + 2.0 * sc) + 1.0); } else if (4.0 * dc <= da) { float DSqd = dc * dc; float DCub = DSqd * dc; float DaSqd = da * da; float DaCub = DaSqd * da; return _guarded_divide(((DaSqd * (sc - dc * ((3.0 * sa - 6.0 * sc) - 1.0)) + ((12.0 * da) * DSqd) * (sa - 2.0 * sc)) - (16.0 * DCub) * (sa - 2.0 * sc)) - DaCub * sc, DaSqd); } return ((dc * ((sa - 2.0 * sc) + 1.0) + sc) - sqrt(da * dc) * (sa - 2.0 * sc)) - da * sc; } vec4 blend_soft_light(vec4 src, vec4 dst) { if (dst.w == 0.0) { return src; } return vec4(_soft_light_component(src.x, src.w, dst.x, dst.w), _soft_light_component(src.y, src.w, dst.y, dst.w), _soft_light_component(src.z, src.w, dst.z, dst.w), src.w + (1.0 - src.w) * dst.w); } vec4 ComposeTwo_Stage1_c1_c0_c1_c0(vec4 _input) { vec4 _output; vec4 inputColor = vec4(_input.xyz, 1.0); _output = blend_soft_light(CircularRRect_Stage1_c1_c0_c1_c0_c0_c0(inputColor), DisplacementMap_Stage1_c1_c0_c1_c0_c1_c0(inputColor)); _output *= _input.w; return _output; } vec4 blend_modulate(vec4 src, vec4 dst) { return src * dst; } vec4 ComposeTwo_Stage1_c1_c0(vec4 _input) { vec4 _output; vec4 inputColor = vec4(_input.xyz, 1.0); _output = blend_modulate(ComposeTwo_Stage1_c1_c0_c0_c0(inputColor), ComposeTwo_Stage1_c1_c0_c1_c0(inputColor)); _output *= _input.w; return _output; } vec4 blend_dst_atop(vec4 src, vec4 dst) { return (1.0 - dst.w) * src + src.w * dst; } void main() { vec4 outputColor_Stage0; { vec2 textureCoords; textureCoords = vtextureCoords_Stage0; vec4 textureDomain; textureDomain = vtextureDomain_Stage0; outputColor_Stage0 = vcolor_Stage0; outputColor_Stage0 = texture(uTextureSampler_0_Stage0, clamp(textureCoords, textureDomain.xy, textureDomain.zw)) * outputColor_Stage0; } vec4 output_Stage1; { vec4 inputColor = vec4(outputColor_Stage0.xyz, 1.0); output_Stage1 = blend_dst_atop(ColorTableEffect_Stage1_c0_c0(inputColor), ComposeTwo_Stage1_c1_c0(inputColor)); output_Stage1 *= outputColor_Stage0.w; } { sk_FragColor = output_Stage1; } } [vertex shader] #version 140 uniform vec4 sk_RTAdjust; uniform mat3 uCoordTransformMatrix_0_Stage0; uniform mat3 uCoordTransformMatrix_1_Stage0; in vec2 position; in vec2 textureCoords; in vec4 textureDomain; in vec4 color; noperspective out vec2 vTransformedCoords_0_Stage0; noperspective out vec2 vTransformedCoords_1_Stage0; noperspective out vec2 vtextureCoords_Stage0; flat out vec4 vtextureDomain_Stage0; flat out vec4 vcolor_Stage0; void main() { vec2 pos2 = position; vTransformedCoords_0_Stage0 = (uCoordTransformMatrix_0_Stage0 * vec3(textureCoords, 1.0)).xy; vTransformedCoords_1_Stage0 = (uCoordTransformMatrix_1_Stage0 * vec3(textureCoords, 1.0)).xy; vtextureCoords_Stage0 = textureCoords; vtextureDomain_Stage0 = textureDomain; vcolor_Stage0 = color; gl_Position = vec4(pos2.x, pos2.y, 0.0, 1.0); gl_Position = vec4(gl_Position.xy * sk_RTAdjust.xz + gl_Position.ww * sk_RTAdjust.yw, 0.0, gl_Position.w); }