diff options
Diffstat (limited to 'shaders/skia/1243.shader_test')
-rw-r--r-- | shaders/skia/1243.shader_test | 339 |
1 files changed, 339 insertions, 0 deletions
diff --git a/shaders/skia/1243.shader_test b/shaders/skia/1243.shader_test new file mode 100644 index 0000000..ac7ee0f --- /dev/null +++ b/shaders/skia/1243.shader_test @@ -0,0 +1,339 @@ +[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 vec4 uColor_Stage0; +uniform vec4 uCoordTransformMatrix_2_Stage0; +uniform float uPixelSize_Stage1; +uniform vec2 uRange_Stage1; +uniform vec4 ucircleData_Stage2; +uniform float ucornerRadius_Stage3_c1_c0; +uniform vec4 uproxyRect_Stage3_c1_c0; +uniform float ublurRadius_Stage3_c1_c0; +uniform vec2 uImageIncrement_Stage4_c2_c0; +uniform float uSurfaceScale_Stage4_c2_c0; +uniform vec3 uLightColor_Stage4_c2_c0; +uniform float uKS_Stage4_c2_c0; +uniform float uShininess_Stage4_c2_c0; +uniform vec4 uTexDom_Stage4_c2_c0; +uniform vec3 uDecalParams_Stage4_c2_c0; +uniform vec3 uLightDirection_Stage4_c2_c0; +uniform vec4 ucolor0_Stage5; +uniform vec4 ucolor1_Stage5; +uniform vec4 ucolor2_Stage5; +uniform vec4 ucolor3_Stage5; +uniform vec4 ucolor4_Stage5; +uniform vec4 ucolor5_Stage5; +uniform sampler2D uTextureSampler_0_Stage1; +uniform sampler2D uTextureSampler_0_Stage2; +uniform sampler2D uTextureSampler_0_Stage3; +uniform sampler2D uTextureSampler_1_Stage3; +uniform sampler2D uTextureSampler_0_Stage4; +noperspective in vec3 vDashParam_Stage0; +noperspective in vec2 vCircleParams_Stage0; +noperspective in vec2 vTransformedCoords_0_Stage0; +noperspective in vec2 vTransformedCoords_1_Stage0; +noperspective in vec2 vTransformedCoords_3_Stage0; +vec4 ColorTableEffect_Stage3_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_Stage3, vec2(coord.w, 0.125)).w; + _output.x = texture(uTextureSampler_0_Stage3, vec2(coord.x, 0.375)).w; + _output.y = texture(uTextureSampler_0_Stage3, vec2(coord.y, 0.625)).w; + _output.z = texture(uTextureSampler_0_Stage3, vec2(coord.z, 0.875)).w; + _output.xyz *= _output.w; + return _output; +} +vec4 RRectBlurEffect_Stage3_c1_c0(vec4 _input) { + vec4 _output; + vec2 translatedFragPos = gl_FragCoord.xy - uproxyRect_Stage3_c1_c0.xy; + float threshold = ucornerRadius_Stage3_c1_c0 + 2.0 * ublurRadius_Stage3_c1_c0; + vec2 middle = (uproxyRect_Stage3_c1_c0.zw - uproxyRect_Stage3_c1_c0.xy) - 2.0 * threshold; + if (translatedFragPos.x >= threshold && translatedFragPos.x < middle.x + threshold) { + translatedFragPos.x = threshold; + } else if (translatedFragPos.x >= middle.x + threshold) { + translatedFragPos.x -= middle.x - 1.0; + } + if (translatedFragPos.y > threshold && translatedFragPos.y < middle.y + threshold) { + translatedFragPos.y = threshold; + } else if (translatedFragPos.y >= middle.y + threshold) { + translatedFragPos.y -= middle.y - 1.0; + } + vec2 proxyDims = vec2(2.0 * threshold + 1.0); + vec2 texCoord = translatedFragPos / proxyDims; + _output = _input * texture(uTextureSampler_1_Stage3, texCoord); + return _output; +} +vec4 light_Stage4_c2_c0(vec3 normal, vec3 surfaceToLight, vec3 lightColor) { + vec3 halfDir = normalize(surfaceToLight + vec3(0.0, 0.0, 1.0)); + float colorScale = uKS_Stage4_c2_c0 * pow(dot(normal, halfDir), uShininess_Stage4_c2_c0); + vec3 color = lightColor * clamp(colorScale, 0.0, 1.0); + return vec4(color, max(max(color.x, color.y), color.z)); +} +float sobel_Stage4_c2_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_Stage4_c2_c0(float x, float y, float scale) { + return normalize(vec3(-x * scale, -y * scale, 1.0)); +} +vec3 normal_Stage4_c2_c0(float m[9], float surfaceScale) { + return pointToNormal_Stage4_c2_c0(sobel_Stage4_c2_c0(0.0, 0.0, m[4], m[5], m[7], m[8], 0.66666698455810547), sobel_Stage4_c2_c0(0.0, 0.0, m[4], m[7], m[5], m[8], 0.66666698455810547), surfaceScale); +} +vec4 SpecularLighting_Stage4_c2_c0(vec4 _input, vec2 _coords) { + _coords = _coords * uCoordTransformMatrix_2_Stage0.xz + uCoordTransformMatrix_2_Stage0.yw; + vec4 _output; + vec2 coord = _coords; + float m[9]; + vec4 temp0; + { + vec2 origCoord = coord + vec2(-1.0, 1.0) * uImageIncrement_Stage4_c2_c0; + vec2 clampedCoord; + clampedCoord = clamp(origCoord, uTexDom_Stage4_c2_c0.xy, uTexDom_Stage4_c2_c0.zw); + vec4 textureColor = texture(uTextureSampler_0_Stage4, clampedCoord); + float err = max(abs(clampedCoord.x - origCoord.x) * uDecalParams_Stage4_c2_c0.x, abs(clampedCoord.y - origCoord.y) * uDecalParams_Stage4_c2_c0.y); + if (err > uDecalParams_Stage4_c2_c0.z) { + err = 1.0; + } else if (uDecalParams_Stage4_c2_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_Stage4_c2_c0; + vec2 clampedCoord; + clampedCoord = clamp(origCoord, uTexDom_Stage4_c2_c0.xy, uTexDom_Stage4_c2_c0.zw); + vec4 textureColor = texture(uTextureSampler_0_Stage4, clampedCoord); + float err = max(abs(clampedCoord.x - origCoord.x) * uDecalParams_Stage4_c2_c0.x, abs(clampedCoord.y - origCoord.y) * uDecalParams_Stage4_c2_c0.y); + if (err > uDecalParams_Stage4_c2_c0.z) { + err = 1.0; + } else if (uDecalParams_Stage4_c2_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_Stage4_c2_c0; + vec2 clampedCoord; + clampedCoord = clamp(origCoord, uTexDom_Stage4_c2_c0.xy, uTexDom_Stage4_c2_c0.zw); + vec4 textureColor = texture(uTextureSampler_0_Stage4, clampedCoord); + float err = max(abs(clampedCoord.x - origCoord.x) * uDecalParams_Stage4_c2_c0.x, abs(clampedCoord.y - origCoord.y) * uDecalParams_Stage4_c2_c0.y); + if (err > uDecalParams_Stage4_c2_c0.z) { + err = 1.0; + } else if (uDecalParams_Stage4_c2_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_Stage4_c2_c0; + vec2 clampedCoord; + clampedCoord = clamp(origCoord, uTexDom_Stage4_c2_c0.xy, uTexDom_Stage4_c2_c0.zw); + vec4 textureColor = texture(uTextureSampler_0_Stage4, clampedCoord); + float err = max(abs(clampedCoord.x - origCoord.x) * uDecalParams_Stage4_c2_c0.x, abs(clampedCoord.y - origCoord.y) * uDecalParams_Stage4_c2_c0.y); + if (err > uDecalParams_Stage4_c2_c0.z) { + err = 1.0; + } else if (uDecalParams_Stage4_c2_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_Stage4_c2_c0.xy, uTexDom_Stage4_c2_c0.zw); + vec4 textureColor = texture(uTextureSampler_0_Stage4, clampedCoord); + float err = max(abs(clampedCoord.x - origCoord.x) * uDecalParams_Stage4_c2_c0.x, abs(clampedCoord.y - origCoord.y) * uDecalParams_Stage4_c2_c0.y); + if (err > uDecalParams_Stage4_c2_c0.z) { + err = 1.0; + } else if (uDecalParams_Stage4_c2_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_Stage4_c2_c0; + vec2 clampedCoord; + clampedCoord = clamp(origCoord, uTexDom_Stage4_c2_c0.xy, uTexDom_Stage4_c2_c0.zw); + vec4 textureColor = texture(uTextureSampler_0_Stage4, clampedCoord); + float err = max(abs(clampedCoord.x - origCoord.x) * uDecalParams_Stage4_c2_c0.x, abs(clampedCoord.y - origCoord.y) * uDecalParams_Stage4_c2_c0.y); + if (err > uDecalParams_Stage4_c2_c0.z) { + err = 1.0; + } else if (uDecalParams_Stage4_c2_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_Stage4_c2_c0; + vec2 clampedCoord; + clampedCoord = clamp(origCoord, uTexDom_Stage4_c2_c0.xy, uTexDom_Stage4_c2_c0.zw); + vec4 textureColor = texture(uTextureSampler_0_Stage4, clampedCoord); + float err = max(abs(clampedCoord.x - origCoord.x) * uDecalParams_Stage4_c2_c0.x, abs(clampedCoord.y - origCoord.y) * uDecalParams_Stage4_c2_c0.y); + if (err > uDecalParams_Stage4_c2_c0.z) { + err = 1.0; + } else if (uDecalParams_Stage4_c2_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_Stage4_c2_c0; + vec2 clampedCoord; + clampedCoord = clamp(origCoord, uTexDom_Stage4_c2_c0.xy, uTexDom_Stage4_c2_c0.zw); + vec4 textureColor = texture(uTextureSampler_0_Stage4, clampedCoord); + float err = max(abs(clampedCoord.x - origCoord.x) * uDecalParams_Stage4_c2_c0.x, abs(clampedCoord.y - origCoord.y) * uDecalParams_Stage4_c2_c0.y); + if (err > uDecalParams_Stage4_c2_c0.z) { + err = 1.0; + } else if (uDecalParams_Stage4_c2_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_Stage4_c2_c0; + vec2 clampedCoord; + clampedCoord = clamp(origCoord, uTexDom_Stage4_c2_c0.xy, uTexDom_Stage4_c2_c0.zw); + vec4 textureColor = texture(uTextureSampler_0_Stage4, clampedCoord); + float err = max(abs(clampedCoord.x - origCoord.x) * uDecalParams_Stage4_c2_c0.x, abs(clampedCoord.y - origCoord.y) * uDecalParams_Stage4_c2_c0.y); + if (err > uDecalParams_Stage4_c2_c0.z) { + err = 1.0; + } else if (uDecalParams_Stage4_c2_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 = uLightDirection_Stage4_c2_c0; + _output = light_Stage4_c2_c0(normal_Stage4_c2_c0(m, uSurfaceScale_Stage4_c2_c0), surfaceToLight, uLightColor_Stage4_c2_c0); + _output *= _input; + return _output; +} +vec4 blend_xor(vec4 src, vec4 dst) { + return (1.0 - dst.w) * src + (1.0 - src.w) * dst; +} +void main() { + vec4 outputColor_Stage0; + vec4 outputCoverage_Stage0; + { + outputColor_Stage0 = uColor_Stage0; + float xShifted = vDashParam_Stage0.x - floor(vDashParam_Stage0.x / vDashParam_Stage0.z) * vDashParam_Stage0.z; + vec2 fragPosShifted = vec2(xShifted, vDashParam_Stage0.y); + vec2 center = vec2(vCircleParams_Stage0.y, 0.0); + float dist = length(center - fragPosShifted); + float alpha = 1.0; + alpha *= dist < vCircleParams_Stage0.x + 0.5 ? 1.0 : 0.0; + outputCoverage_Stage0 = vec4(alpha); + } + vec4 output_Stage1; + { + output_Stage1 = vec4(1.0, 1.0, 1.0, 1.0); + vec2 coord = vTransformedCoords_0_Stage0; + coord.x -= 5.0 * uPixelSize_Stage1; + for (int i = 0;i < 11; i++) { + output_Stage1 = min(output_Stage1, texture(uTextureSampler_0_Stage1, coord)); + coord.x += uPixelSize_Stage1; + } + output_Stage1 *= outputColor_Stage0; + } + vec4 output_Stage2; + { + vec2 vec = vec2((gl_FragCoord.x - ucircleData_Stage2.x) * ucircleData_Stage2.w, (gl_FragCoord.y - ucircleData_Stage2.y) * ucircleData_Stage2.w); + float dist = length(vec) + (0.5 - ucircleData_Stage2.z) * ucircleData_Stage2.w; + output_Stage2 = output_Stage1 * texture(uTextureSampler_0_Stage2, vec2(dist, 0.5)).w; + } + vec4 output_Stage3; + { + vec4 inputColor = vec4(output_Stage2.xyz, 1.0); + output_Stage3 = blend_xor(ColorTableEffect_Stage3_c0_c0(inputColor), RRectBlurEffect_Stage3_c1_c0(inputColor)); + output_Stage3 *= output_Stage2.w; + } + vec4 output_Stage4; + { + float coord = vTransformedCoords_1_Stage0.y - 0.5; + float f = fract(coord); + coord += 0.5 - f; + float f2 = f * f; + vec4 w = mat4(0.055555555555555552, 0.88888888888888884, 0.055555555555555552, 0.0, -0.5, 0.0, 0.5, 0.0, 0.83333333333333337, -2.0, 1.5, -0.33333333333333331, -0.3888888888888889, 1.1666666666666667, -1.1666666666666667, 0.3888888888888889) * vec4(1.0, f, f2, f2 * f); + vec4 c[4]; + c[0] = SpecularLighting_Stage4_c2_c0(vec4(1.0), vec2(vTransformedCoords_1_Stage0.x, coord + -1.0)); + c[1] = SpecularLighting_Stage4_c2_c0(vec4(1.0), vec2(vTransformedCoords_1_Stage0.x, coord)); + c[2] = SpecularLighting_Stage4_c2_c0(vec4(1.0), vec2(vTransformedCoords_1_Stage0.x, coord + 1.0)); + c[3] = SpecularLighting_Stage4_c2_c0(vec4(1.0), vec2(vTransformedCoords_1_Stage0.x, coord + 2.0)); + vec4 bicubicColor = ((c[0] * w.x + c[1] * w.y) + c[2] * w.z) + c[3] * w.w; + bicubicColor = clamp(bicubicColor, 0.0, 1.0); + output_Stage4 = bicubicColor * output_Stage3; + } + vec4 output_Stage5; + { + output_Stage5 = output_Stage4; + float alpha = 255.0 * output_Stage5.w; + if (alpha < 0.5) { + output_Stage5 = ucolor0_Stage5; + } else if (alpha < 1.5) { + output_Stage5 = ucolor1_Stage5; + } else if (alpha < 2.5) { + output_Stage5 = ucolor2_Stage5; + } else if (alpha < 3.5) { + output_Stage5 = ucolor3_Stage5; + } else if (alpha < 4.5) { + output_Stage5 = ucolor4_Stage5; + } else { + output_Stage5 = ucolor5_Stage5; + } + } + { + sk_FragColor = outputCoverage_Stage0 * output_Stage5; + } +} + +[vertex shader] +#version 140 + +uniform vec4 sk_RTAdjust; +uniform mat3 uCoordTransformMatrix_0_Stage0; +uniform mat3 uCoordTransformMatrix_1_Stage0; +uniform mat3 uCoordTransformMatrix_3_Stage0; +in vec2 inPosition; +in vec3 inDashParams; +in vec2 inCircleParams; +noperspective out vec3 vDashParam_Stage0; +noperspective out vec2 vCircleParams_Stage0; +noperspective out vec2 vTransformedCoords_0_Stage0; +noperspective out vec2 vTransformedCoords_1_Stage0; +noperspective out vec2 vTransformedCoords_3_Stage0; +void main() { + vDashParam_Stage0 = inDashParams; + vCircleParams_Stage0 = inCircleParams; + vec2 pos2 = inPosition; + vTransformedCoords_0_Stage0 = (uCoordTransformMatrix_0_Stage0 * vec3(inPosition, 1.0)).xy; + vTransformedCoords_1_Stage0 = (uCoordTransformMatrix_1_Stage0 * vec3(inPosition, 1.0)).xy; + vTransformedCoords_3_Stage0 = (uCoordTransformMatrix_3_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); +} + |