[require] GLSL >= 1.40 [fragment shader] #version 140 #extension GL_KHR_blend_equation_advanced : require out vec4 sk_FragColor; layout (blend_support_all_equations) out ; uniform float uPixelSize_Stage3; uniform vec2 uRange_Stage3; uniform sampler2D uTextureSampler_0_Stage0; uniform sampler2D uTextureSampler_0_Stage3; noperspective in vec2 vTransformedCoords_0_Stage0; noperspective in vec2 vtextureCoords_Stage0; flat in vec4 vtextureDomain_Stage0; flat in vec4 vcolor_Stage0; 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; { { output_Stage1 = clamp(outputColor_Stage0, 0.0, 1.0); } } vec4 output_Stage2; { { float alpha = clamp(output_Stage1.w, 0.0, 1.0); output_Stage2 = vec4(clamp(output_Stage1.xyz, 0.0, alpha), alpha); } } vec4 output_Stage3; { output_Stage3 = vec4(1.0, 1.0, 1.0, 1.0); vec2 coord = vTransformedCoords_0_Stage0; coord.y -= 10.0 * uPixelSize_Stage3; for (int i = 0;i < 21; i++) { output_Stage3 = min(output_Stage3, texture(uTextureSampler_0_Stage3, coord)); coord.y += uPixelSize_Stage3; } output_Stage3 *= output_Stage2; } { sk_FragColor = output_Stage3; } } [vertex shader] #version 140 uniform vec4 sk_RTAdjust; uniform mat3 uCoordTransformMatrix_0_Stage0; in vec2 position; in vec2 textureCoords; in vec4 textureDomain; in vec4 color; noperspective out vec2 vTransformedCoords_0_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; 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); }