[require] GLSL >= 1.40 [fragment shader] #version 140 #extension GL_KHR_blend_equation_advanced : require #extension GL_ARB_fragment_coord_conventions : require layout(origin_upper_left) in vec4 gl_FragCoord; out vec4 sk_FragColor; layout (blend_support_all_equations) out ; uniform vec2 ubaseFrequency_Stage1_c0_c0_c0_c0_c1_c0; uniform float uz_Stage1_c0_c0_c0_c0_c1_c0; uniform vec2 uImageIncrement_Stage1_c0_c0_c1_c0; uniform vec4 uKernel_Stage1_c0_c0_c1_c0[1]; uniform vec2 uKernelOffset_Stage1_c0_c0_c1_c0; uniform float uGain_Stage1_c0_c0_c1_c0; uniform float uBias_Stage1_c0_c0_c1_c0; uniform vec2 uImageIncrement_Stage1_c1_c0_c0_c0; uniform float uSurfaceScale_Stage1_c1_c0_c0_c0; uniform vec3 uLightColor_Stage1_c1_c0_c0_c0; uniform float uKS_Stage1_c1_c0_c0_c0; uniform float uShininess_Stage1_c1_c0_c0_c0; uniform vec4 uTexDom_Stage1_c1_c0_c0_c0; uniform vec3 uDecalParams_Stage1_c1_c0_c0_c0; uniform vec3 uLightLocation_Stage1_c1_c0_c0_c0; uniform float uExponent_Stage1_c1_c0_c0_c0; uniform float uCosInnerConeAngle_Stage1_c1_c0_c0_c0; uniform float uCosOuterConeAngle_Stage1_c1_c0_c0_c0; uniform float uConeScale_Stage1_c1_c0_c0_c0; uniform vec3 uS_Stage1_c1_c0_c0_c0; uniform vec4 uinnerRect_Stage1_c1_c0_c1_c0; uniform vec2 uradiusPlusHalf_Stage1_c1_c0_c1_c0; uniform sampler2D uTextureSampler_0_Stage1; uniform sampler2D uTextureSampler_1_Stage1; uniform sampler2D uTextureSampler_2_Stage1; uniform sampler2D uTextureSampler_3_Stage1; noperspective in vec4 vinCircleEdge_Stage0; noperspective in vec3 vinClipPlane_Stage0; noperspective in vec3 vinUnionPlane_Stage0; noperspective in vec4 vinRoundCapCenters_Stage0; flat in float vcapRadius_Stage0; noperspective in vec4 vinColor_Stage0; noperspective in vec3 vTransformedCoords_0_Stage0; noperspective in vec2 vTransformedCoords_1_Stage0; noperspective in vec2 vTransformedCoords_2_Stage0; vec4 ConfigConversionEffect_Stage1_c0_c0_c0_c0_c0_c0(vec4 _input) { vec4 _output; _output = floor(_input * 255.0 + 0.5) / 255.0; { _output.xyz = floor((_output.xyz * _output.w) * 255.0 + 0.5) / 255.0; } return _output; } vec3 fade_Stage1_c0_c0_c0_c0_c1_c0(vec3 t) { return ((t * t) * t) * (t * (t * 6.0 - 15.0) + 10.0); } float perm_Stage1_c0_c0_c0_c0_c1_c0(float x) { return texture(uTextureSampler_0_Stage1, vec2(fract(x / 256.0), 0.0)).x * 255.0; } float grad_Stage1_c0_c0_c0_c0_c1_c0(float x, vec3 p) { return dot(texture(uTextureSampler_1_Stage1, vec2(fract(x / 16.0), 0.0)).xyz * 255.0 - vec3(1.0), p); } float lerp_Stage1_c0_c0_c0_c0_c1_c0(float a, float b, float w) { return a + w * (b - a); } float noise_Stage1_c0_c0_c0_c0_c1_c0(vec3 p) { vec3 P = mod(floor(p), 256.0); p -= floor(p); vec3 f = fade_Stage1_c0_c0_c0_c0_c1_c0(p); float A = perm_Stage1_c0_c0_c0_c0_c1_c0(P.x) + P.y; float AA = perm_Stage1_c0_c0_c0_c0_c1_c0(A) + P.z; float AB = perm_Stage1_c0_c0_c0_c0_c1_c0(A + 1.0) + P.z; float B = perm_Stage1_c0_c0_c0_c0_c1_c0(P.x + 1.0) + P.y; float BA = perm_Stage1_c0_c0_c0_c0_c1_c0(B) + P.z; float BB = perm_Stage1_c0_c0_c0_c0_c1_c0(B + 1.0) + P.z; float result = lerp_Stage1_c0_c0_c0_c0_c1_c0(lerp_Stage1_c0_c0_c0_c0_c1_c0(lerp_Stage1_c0_c0_c0_c0_c1_c0(grad_Stage1_c0_c0_c0_c0_c1_c0(perm_Stage1_c0_c0_c0_c0_c1_c0(AA), p), grad_Stage1_c0_c0_c0_c0_c1_c0(perm_Stage1_c0_c0_c0_c0_c1_c0(BA), p + vec3(-1.0, 0.0, 0.0)), f.x), lerp_Stage1_c0_c0_c0_c0_c1_c0(grad_Stage1_c0_c0_c0_c0_c1_c0(perm_Stage1_c0_c0_c0_c0_c1_c0(AB), p + vec3(0.0, -1.0, 0.0)), grad_Stage1_c0_c0_c0_c0_c1_c0(perm_Stage1_c0_c0_c0_c0_c1_c0(BB), p + vec3(-1.0, -1.0, 0.0)), f.x), f.y), lerp_Stage1_c0_c0_c0_c0_c1_c0(lerp_Stage1_c0_c0_c0_c0_c1_c0(grad_Stage1_c0_c0_c0_c0_c1_c0(perm_Stage1_c0_c0_c0_c0_c1_c0(AA + 1.0), p + vec3(0.0, 0.0, -1.0)), grad_Stage1_c0_c0_c0_c0_c1_c0(perm_Stage1_c0_c0_c0_c0_c1_c0(BA + 1.0), p + vec3(-1.0, 0.0, -1.0)), f.x), lerp_Stage1_c0_c0_c0_c0_c1_c0(grad_Stage1_c0_c0_c0_c0_c1_c0(perm_Stage1_c0_c0_c0_c0_c1_c0(AB + 1.0), p + vec3(0.0, -1.0, -1.0)), grad_Stage1_c0_c0_c0_c0_c1_c0(perm_Stage1_c0_c0_c0_c0_c1_c0(BB + 1.0), p + vec3(-1.0, -1.0, -1.0)), f.x), f.y), f.z); return result; } float noiseOctaves_Stage1_c0_c0_c0_c0_c1_c0(vec3 p) { float result = 0.0; float ratio = 1.0; for (float i = 0.0;i < 3.0; i++) { result += noise_Stage1_c0_c0_c0_c0_c1_c0(p) / ratio; p *= 2.0; ratio *= 2.0; } return (result + 1.0) / 2.0; } vec4 ImprovedPerlinNoise_Stage1_c0_c0_c0_c0_c1_c0(vec4 _input) { vec4 _output; vec2 vTransformedCoords_0_Stage0_ensure2D = vTransformedCoords_0_Stage0.xy / vTransformedCoords_0_Stage0.z; vec2 coords = vTransformedCoords_0_Stage0_ensure2D * ubaseFrequency_Stage1_c0_c0_c0_c0_c1_c0; float r = noiseOctaves_Stage1_c0_c0_c0_c0_c1_c0(vec3(coords, uz_Stage1_c0_c0_c0_c0_c1_c0)); float g = noiseOctaves_Stage1_c0_c0_c0_c0_c1_c0(vec3(coords, uz_Stage1_c0_c0_c0_c0_c1_c0)); float b = noiseOctaves_Stage1_c0_c0_c0_c0_c1_c0(vec3(coords, uz_Stage1_c0_c0_c0_c0_c1_c0)); float a = noiseOctaves_Stage1_c0_c0_c0_c0_c1_c0(vec3(coords, uz_Stage1_c0_c0_c0_c0_c1_c0)); _output = vec4(r, g, b, a); _output = clamp(_output, 0.0, 1.0); _output = vec4(_output.xyz * _output.www, _output.w); return _output; } vec4 blend_src_over(vec4 src, vec4 dst) { return src + (1.0 - src.w) * dst; } vec4 blend_lighten(vec4 src, vec4 dst) { vec4 result = blend_src_over(src, dst); result.xyz = max(result.xyz, (1.0 - dst.w) * src.xyz + dst.xyz); return result; } vec4 ComposeTwo_Stage1_c0_c0_c0_c0(vec4 _input) { vec4 _output; vec4 inputColor = vec4(_input.xyz, 1.0); _output = blend_lighten(ConfigConversionEffect_Stage1_c0_c0_c0_c0_c0_c0(inputColor), ImprovedPerlinNoise_Stage1_c0_c0_c0_c0_c1_c0(inputColor)); _output *= _input.w; return _output; } vec4 MatrixConvolution_Stage1_c0_c0_c1_c0(vec4 _input) { vec4 _output; vec4 sum = vec4(0.0, 0.0, 0.0, 0.0); vec2 coord = vTransformedCoords_1_Stage0 - uKernelOffset_Stage1_c0_c0_c1_c0 * uImageIncrement_Stage1_c0_c0_c1_c0; vec4 c; { float k = uKernel_Stage1_c0_c0_c1_c0[0].x; { vec2 origCoord = coord; vec2 clampedCoord; clampedCoord = origCoord; vec4 textureColor = texture(uTextureSampler_2_Stage1, clampedCoord); c = textureColor; } c.xyz /= c.w; c.xyz = clamp(c.xyz, 0.0, 1.0); sum += c * k; } { float k = uKernel_Stage1_c0_c0_c1_c0[0].y; { vec2 origCoord = coord + vec2(1.0, 0.0) * uImageIncrement_Stage1_c0_c0_c1_c0; vec2 clampedCoord; clampedCoord = origCoord; vec4 textureColor = texture(uTextureSampler_2_Stage1, clampedCoord); c = textureColor; } c.xyz /= c.w; c.xyz = clamp(c.xyz, 0.0, 1.0); sum += c * k; } { vec2 origCoord = vTransformedCoords_1_Stage0; vec2 clampedCoord; clampedCoord = origCoord; vec4 textureColor = texture(uTextureSampler_2_Stage1, clampedCoord); c = textureColor; } _output.w = c.w; _output.xyz = clamp(sum.xyz * uGain_Stage1_c0_c0_c1_c0 + uBias_Stage1_c0_c0_c1_c0, 0.0, 1.0); _output.xyz *= _output.w; _output *= _input; return _output; } vec4 blend_multiply(vec4 src, vec4 dst) { return vec4(((1.0 - src.w) * dst.xyz + (1.0 - dst.w) * src.xyz) + src.xyz * dst.xyz, src.w + (1.0 - src.w) * dst.w); } vec4 ComposeTwo_Stage1_c0_c0(vec4 _input) { vec4 _output; vec4 inputColor = vec4(_input.xyz, 1.0); _output = blend_multiply(ComposeTwo_Stage1_c0_c0_c0_c0(inputColor), MatrixConvolution_Stage1_c0_c0_c1_c0(inputColor)); _output *= _input.w; return _output; } vec4 light_Stage1_c1_c0_c0_c0(vec3 normal, vec3 surfaceToLight, vec3 lightColor) { vec3 halfDir = normalize(surfaceToLight + vec3(0.0, 0.0, 1.0)); float colorScale = uKS_Stage1_c1_c0_c0_c0 * pow(dot(normal, halfDir), uShininess_Stage1_c1_c0_c0_c0); vec3 color = lightColor * clamp(colorScale, 0.0, 1.0); return vec4(color, max(max(color.x, color.y), color.z)); } float sobel_Stage1_c1_c0_c0_c0(float a, float b, float c, float d, float e, float f, float scale) { return (((((-a + b) - 2.0 * c) + 2.0 * d) - e) + f) * scale; } vec3 pointToNormal_Stage1_c1_c0_c0_c0(float x, float y, float scale) { return normalize(vec3(-x * scale, -y * scale, 1.0)); } vec3 normal_Stage1_c1_c0_c0_c0(float m[9], float surfaceScale) { return pointToNormal_Stage1_c1_c0_c0_c0(sobel_Stage1_c1_c0_c0_c0(0.0, 0.0, m[3], m[4], m[6], m[7], 0.66666698455810547), sobel_Stage1_c1_c0_c0_c0(m[3], m[6], m[4], m[7], 0.0, 0.0, 0.66666698455810547), surfaceScale); } vec3 lightColor_Stage1_c1_c0_c0_c0(vec3 surfaceToLight) { float cosAngle = -dot(surfaceToLight, uS_Stage1_c1_c0_c0_c0); if (cosAngle < uCosOuterConeAngle_Stage1_c1_c0_c0_c0) { return vec3(0.0); } float scale = pow(cosAngle, uExponent_Stage1_c1_c0_c0_c0); if (cosAngle < uCosInnerConeAngle_Stage1_c1_c0_c0_c0) { return ((uLightColor_Stage1_c1_c0_c0_c0 * scale) * (cosAngle - uCosOuterConeAngle_Stage1_c1_c0_c0_c0)) * uConeScale_Stage1_c1_c0_c0_c0; } return uLightColor_Stage1_c1_c0_c0_c0; } vec4 SpecularLighting_Stage1_c1_c0_c0_c0(vec4 _input) { vec4 _output; vec2 coord = vTransformedCoords_2_Stage0; float m[9]; vec4 temp0; { vec2 origCoord = coord + vec2(-1.0, 1.0) * uImageIncrement_Stage1_c1_c0_c0_c0; vec2 clampedCoord; clampedCoord = clamp(origCoord, uTexDom_Stage1_c1_c0_c0_c0.xy, uTexDom_Stage1_c1_c0_c0_c0.zw); vec4 textureColor = texture(uTextureSampler_3_Stage1, clampedCoord); float err = max(abs(clampedCoord.x - origCoord.x) * uDecalParams_Stage1_c1_c0_c0_c0.x, abs(clampedCoord.y - origCoord.y) * uDecalParams_Stage1_c1_c0_c0_c0.y); if (err > uDecalParams_Stage1_c1_c0_c0_c0.z) { err = 1.0; } else if (uDecalParams_Stage1_c1_c0_c0_c0.z < 1.0) { err = 0.0; } temp0 = mix(textureColor, vec4(0.0, 0.0, 0.0, 0.0), err); } m[0] = temp0.w; vec4 temp1; { vec2 origCoord = coord + vec2(0.0, 1.0) * uImageIncrement_Stage1_c1_c0_c0_c0; vec2 clampedCoord; clampedCoord = clamp(origCoord, uTexDom_Stage1_c1_c0_c0_c0.xy, uTexDom_Stage1_c1_c0_c0_c0.zw); vec4 textureColor = texture(uTextureSampler_3_Stage1, clampedCoord); float err = max(abs(clampedCoord.x - origCoord.x) * uDecalParams_Stage1_c1_c0_c0_c0.x, abs(clampedCoord.y - origCoord.y) * uDecalParams_Stage1_c1_c0_c0_c0.y); if (err > uDecalParams_Stage1_c1_c0_c0_c0.z) { err = 1.0; } else if (uDecalParams_Stage1_c1_c0_c0_c0.z < 1.0) { err = 0.0; } temp1 = mix(textureColor, vec4(0.0, 0.0, 0.0, 0.0), err); } m[1] = temp1.w; vec4 temp2; { vec2 origCoord = coord + uImageIncrement_Stage1_c1_c0_c0_c0; vec2 clampedCoord; clampedCoord = clamp(origCoord, uTexDom_Stage1_c1_c0_c0_c0.xy, uTexDom_Stage1_c1_c0_c0_c0.zw); vec4 textureColor = texture(uTextureSampler_3_Stage1, clampedCoord); float err = max(abs(clampedCoord.x - origCoord.x) * uDecalParams_Stage1_c1_c0_c0_c0.x, abs(clampedCoord.y - origCoord.y) * uDecalParams_Stage1_c1_c0_c0_c0.y); if (err > uDecalParams_Stage1_c1_c0_c0_c0.z) { err = 1.0; } else if (uDecalParams_Stage1_c1_c0_c0_c0.z < 1.0) { err = 0.0; } temp2 = mix(textureColor, vec4(0.0, 0.0, 0.0, 0.0), err); } m[2] = temp2.w; vec4 temp3; { vec2 origCoord = coord + vec2(-1.0, 0.0) * uImageIncrement_Stage1_c1_c0_c0_c0; vec2 clampedCoord; clampedCoord = clamp(origCoord, uTexDom_Stage1_c1_c0_c0_c0.xy, uTexDom_Stage1_c1_c0_c0_c0.zw); vec4 textureColor = texture(uTextureSampler_3_Stage1, clampedCoord); float err = max(abs(clampedCoord.x - origCoord.x) * uDecalParams_Stage1_c1_c0_c0_c0.x, abs(clampedCoord.y - origCoord.y) * uDecalParams_Stage1_c1_c0_c0_c0.y); if (err > uDecalParams_Stage1_c1_c0_c0_c0.z) { err = 1.0; } else if (uDecalParams_Stage1_c1_c0_c0_c0.z < 1.0) { err = 0.0; } temp3 = mix(textureColor, vec4(0.0, 0.0, 0.0, 0.0), err); } m[3] = temp3.w; vec4 temp4; { vec2 origCoord = coord; vec2 clampedCoord; clampedCoord = clamp(origCoord, uTexDom_Stage1_c1_c0_c0_c0.xy, uTexDom_Stage1_c1_c0_c0_c0.zw); vec4 textureColor = texture(uTextureSampler_3_Stage1, clampedCoord); float err = max(abs(clampedCoord.x - origCoord.x) * uDecalParams_Stage1_c1_c0_c0_c0.x, abs(clampedCoord.y - origCoord.y) * uDecalParams_Stage1_c1_c0_c0_c0.y); if (err > uDecalParams_Stage1_c1_c0_c0_c0.z) { err = 1.0; } else if (uDecalParams_Stage1_c1_c0_c0_c0.z < 1.0) { err = 0.0; } temp4 = mix(textureColor, vec4(0.0, 0.0, 0.0, 0.0), err); } m[4] = temp4.w; vec4 temp5; { vec2 origCoord = coord + vec2(1.0, 0.0) * uImageIncrement_Stage1_c1_c0_c0_c0; vec2 clampedCoord; clampedCoord = clamp(origCoord, uTexDom_Stage1_c1_c0_c0_c0.xy, uTexDom_Stage1_c1_c0_c0_c0.zw); vec4 textureColor = texture(uTextureSampler_3_Stage1, clampedCoord); float err = max(abs(clampedCoord.x - origCoord.x) * uDecalParams_Stage1_c1_c0_c0_c0.x, abs(clampedCoord.y - origCoord.y) * uDecalParams_Stage1_c1_c0_c0_c0.y); if (err > uDecalParams_Stage1_c1_c0_c0_c0.z) { err = 1.0; } else if (uDecalParams_Stage1_c1_c0_c0_c0.z < 1.0) { err = 0.0; } temp5 = mix(textureColor, vec4(0.0, 0.0, 0.0, 0.0), err); } m[5] = temp5.w; vec4 temp6; { vec2 origCoord = coord + vec2(-1.0, -1.0) * uImageIncrement_Stage1_c1_c0_c0_c0; vec2 clampedCoord; clampedCoord = clamp(origCoord, uTexDom_Stage1_c1_c0_c0_c0.xy, uTexDom_Stage1_c1_c0_c0_c0.zw); vec4 textureColor = texture(uTextureSampler_3_Stage1, clampedCoord); float err = max(abs(clampedCoord.x - origCoord.x) * uDecalParams_Stage1_c1_c0_c0_c0.x, abs(clampedCoord.y - origCoord.y) * uDecalParams_Stage1_c1_c0_c0_c0.y); if (err > uDecalParams_Stage1_c1_c0_c0_c0.z) { err = 1.0; } else if (uDecalParams_Stage1_c1_c0_c0_c0.z < 1.0) { err = 0.0; } temp6 = mix(textureColor, vec4(0.0, 0.0, 0.0, 0.0), err); } m[6] = temp6.w; vec4 temp7; { vec2 origCoord = coord + vec2(0.0, -1.0) * uImageIncrement_Stage1_c1_c0_c0_c0; vec2 clampedCoord; clampedCoord = clamp(origCoord, uTexDom_Stage1_c1_c0_c0_c0.xy, uTexDom_Stage1_c1_c0_c0_c0.zw); vec4 textureColor = texture(uTextureSampler_3_Stage1, clampedCoord); float err = max(abs(clampedCoord.x - origCoord.x) * uDecalParams_Stage1_c1_c0_c0_c0.x, abs(clampedCoord.y - origCoord.y) * uDecalParams_Stage1_c1_c0_c0_c0.y); if (err > uDecalParams_Stage1_c1_c0_c0_c0.z) { err = 1.0; } else if (uDecalParams_Stage1_c1_c0_c0_c0.z < 1.0) { err = 0.0; } temp7 = mix(textureColor, vec4(0.0, 0.0, 0.0, 0.0), err); } m[7] = temp7.w; vec4 temp8; { vec2 origCoord = coord + vec2(1.0, -1.0) * uImageIncrement_Stage1_c1_c0_c0_c0; vec2 clampedCoord; clampedCoord = clamp(origCoord, uTexDom_Stage1_c1_c0_c0_c0.xy, uTexDom_Stage1_c1_c0_c0_c0.zw); vec4 textureColor = texture(uTextureSampler_3_Stage1, clampedCoord); float err = max(abs(clampedCoord.x - origCoord.x) * uDecalParams_Stage1_c1_c0_c0_c0.x, abs(clampedCoord.y - origCoord.y) * uDecalParams_Stage1_c1_c0_c0_c0.y); if (err > uDecalParams_Stage1_c1_c0_c0_c0.z) { err = 1.0; } else if (uDecalParams_Stage1_c1_c0_c0_c0.z < 1.0) { err = 0.0; } temp8 = mix(textureColor, vec4(0.0, 0.0, 0.0, 0.0), err); } m[8] = temp8.w; vec3 surfaceToLight = normalize(uLightLocation_Stage1_c1_c0_c0_c0 - vec3(gl_FragCoord.xy, uSurfaceScale_Stage1_c1_c0_c0_c0 * m[4])); _output = light_Stage1_c1_c0_c0_c0(normal_Stage1_c1_c0_c0_c0(m, uSurfaceScale_Stage1_c1_c0_c0_c0), surfaceToLight, lightColor_Stage1_c1_c0_c0_c0(surfaceToLight)); _output *= _input; return _output; } vec4 CircularRRect_Stage1_c1_c0_c1_c0(vec4 _input) { vec4 _output; vec2 dxy0 = uinnerRect_Stage1_c1_c0_c1_c0.xy - gl_FragCoord.xy; vec2 dxy1 = gl_FragCoord.xy - uinnerRect_Stage1_c1_c0_c1_c0.zw; vec2 dxy = max(max(dxy0, dxy1), 0.0); float alpha = clamp(uradiusPlusHalf_Stage1_c1_c0_c1_c0.x - length(dxy), 0.0, 1.0); _output = _input * alpha; return _output; } float _blend_color_saturation(vec3 color) { return max(max(color.x, color.y), color.z) - min(min(color.x, color.y), color.z); } vec3 _blend_set_color_saturation_helper(vec3 minMidMax, float sat) { if (minMidMax.x < minMidMax.z) { return vec3(0.0, (sat * (minMidMax.y - minMidMax.x)) / (minMidMax.z - minMidMax.x), sat); } return vec3(0.0); } vec3 _blend_set_color_saturation(vec3 hueLumColor, vec3 satColor) { float sat = _blend_color_saturation(satColor); if (hueLumColor.x <= hueLumColor.y) { if (hueLumColor.y <= hueLumColor.z) { hueLumColor.xyz = _blend_set_color_saturation_helper(hueLumColor, sat); } else if (hueLumColor.x <= hueLumColor.z) { hueLumColor.xzy = _blend_set_color_saturation_helper(hueLumColor.xzy, sat); } else { hueLumColor.zxy = _blend_set_color_saturation_helper(hueLumColor.zxy, sat); } } else if (hueLumColor.x <= hueLumColor.z) { hueLumColor.yxz = _blend_set_color_saturation_helper(hueLumColor.yxz, sat); } else if (hueLumColor.y <= hueLumColor.z) { hueLumColor.yzx = _blend_set_color_saturation_helper(hueLumColor.yzx, sat); } else { hueLumColor.zyx = _blend_set_color_saturation_helper(hueLumColor.zyx, sat); } return hueLumColor; } float _blend_color_luminance(vec3 color) { return dot(vec3(0.30000001192092896, 0.5899999737739563, 0.10999999940395355), color); } vec3 _blend_set_color_luminance(vec3 hueSatColor, float alpha, vec3 lumColor) { float lum = _blend_color_luminance(lumColor); vec3 result = (lum - _blend_color_luminance(hueSatColor)) + hueSatColor; float minComp = min(min(result.x, result.y), result.z); float maxComp = max(max(result.x, result.y), result.z); if (minComp < 0.0 && lum != minComp) { result = lum + ((result - lum) * lum) / (lum - minComp); } if (maxComp > alpha && maxComp != lum) { return lum + ((result - lum) * (alpha - lum)) / (maxComp - lum); } return result; } vec4 blend_saturation(vec4 src, vec4 dst) { float alpha = dst.w * src.w; vec3 sda = src.xyz * dst.w; vec3 dsa = dst.xyz * src.w; return vec4((((_blend_set_color_luminance(_blend_set_color_saturation(dsa, sda), alpha, dsa) + dst.xyz) - dsa) + src.xyz) - sda, (src.w + dst.w) - alpha); } vec4 ComposeTwo_Stage1_c1_c0(vec4 _input) { vec4 _output; vec4 inputColor = vec4(_input.xyz, 1.0); _output = blend_saturation(SpecularLighting_Stage1_c1_c0_c0_c0(inputColor), CircularRRect_Stage1_c1_c0_c1_c0(inputColor)); _output *= _input.w; return _output; } vec4 blend_plus(vec4 src, vec4 dst) { return min(src + dst, 1.0); } void main() { vec4 outputColor_Stage0; vec4 outputCoverage_Stage0; { vec4 circleEdge; circleEdge = vinCircleEdge_Stage0; vec3 clipPlane; clipPlane = vinClipPlane_Stage0; vec3 unionPlane; unionPlane = vinUnionPlane_Stage0; vec4 roundCapCenters; roundCapCenters = vinRoundCapCenters_Stage0; outputColor_Stage0 = vinColor_Stage0; float d = length(circleEdge.xy); float distanceToOuterEdge = circleEdge.z * (1.0 - d); float edgeAlpha = clamp(distanceToOuterEdge, 0.0, 1.0); float distanceToInnerEdge = circleEdge.z * (d - circleEdge.w); float innerAlpha = clamp(distanceToInnerEdge, 0.0, 1.0); edgeAlpha *= innerAlpha; float clip = clamp(circleEdge.z * dot(circleEdge.xy, clipPlane.xy) + clipPlane.z, 0.0, 1.0); clip = clamp(clip + clamp(circleEdge.z * dot(circleEdge.xy, unionPlane.xy) + unionPlane.z, 0.0, 1.0), 0.0, 1.0); edgeAlpha *= clip; float dcap1 = circleEdge.z * (vcapRadius_Stage0 - length(circleEdge.xy - roundCapCenters.xy)); float dcap2 = circleEdge.z * (vcapRadius_Stage0 - length(circleEdge.xy - roundCapCenters.zw)); float capAlpha = (1.0 - clip) * (max(dcap1, 0.0) + max(dcap2, 0.0)); edgeAlpha = min(edgeAlpha + capAlpha, 1.0); outputCoverage_Stage0 = vec4(edgeAlpha); } vec4 output_Stage1; { vec4 inputColor = vec4(outputColor_Stage0.xyz, 1.0); output_Stage1 = blend_plus(ComposeTwo_Stage1_c0_c0(inputColor), ComposeTwo_Stage1_c1_c0(inputColor)); output_Stage1 *= outputColor_Stage0.w; } { sk_FragColor = outputCoverage_Stage0 * output_Stage1; } } [vertex shader] #version 140 uniform vec4 sk_RTAdjust; uniform mat3 uCoordTransformMatrix_0_Stage0; uniform mat3 uCoordTransformMatrix_1_Stage0; uniform mat3 uCoordTransformMatrix_2_Stage0; in vec2 inPosition; in vec4 inColor; in vec4 inCircleEdge; in vec3 inClipPlane; in vec3 inUnionPlane; in vec4 inRoundCapCenters; noperspective out vec4 vinCircleEdge_Stage0; noperspective out vec3 vinClipPlane_Stage0; noperspective out vec3 vinUnionPlane_Stage0; noperspective out vec4 vinRoundCapCenters_Stage0; flat out float vcapRadius_Stage0; noperspective out vec4 vinColor_Stage0; noperspective out vec3 vTransformedCoords_0_Stage0; noperspective out vec2 vTransformedCoords_1_Stage0; noperspective out vec2 vTransformedCoords_2_Stage0; void main() { vinCircleEdge_Stage0 = inCircleEdge; vinClipPlane_Stage0 = inClipPlane; vinUnionPlane_Stage0 = inUnionPlane; vinRoundCapCenters_Stage0 = inRoundCapCenters; vcapRadius_Stage0 = (1.0 - inCircleEdge.w) / 2.0; vinColor_Stage0 = inColor; vec2 pos2 = inPosition; vTransformedCoords_0_Stage0 = uCoordTransformMatrix_0_Stage0 * vec3(inPosition, 1.0); vTransformedCoords_1_Stage0 = (uCoordTransformMatrix_1_Stage0 * vec3(inPosition, 1.0)).xy; vTransformedCoords_2_Stage0 = (uCoordTransformMatrix_2_Stage0 * vec3(inPosition, 1.0)).xy; 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); }