[require] GLSL >= 1.40 GL_KHR_blend_equation_advanced [fragment shader] #version 140 #extension GL_KHR_blend_equation_advanced : require out vec4 sk_FragColor; layout (blend_support_all_equations) out ; uniform vec2 ubaseFrequency_Stage1; uniform float uz_Stage1; uniform sampler2D uTextureSampler_0_Stage1; uniform sampler2D uTextureSampler_1_Stage1; noperspective in vec2 vTransformedCoords_0_Stage0; flat in vec4 vcolor_Stage0; vec3 fade_Stage1(vec3 t) { return ((t * t) * t) * (t * (t * 6.0 - 15.0) + 10.0); } float perm_Stage1(float x) { return texture(uTextureSampler_0_Stage1, vec2(fract(x / 256.0), 0.0)).x * 255.0; } float grad_Stage1(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(float a, float b, float w) { return a + w * (b - a); } float noise_Stage1(vec3 p) { vec3 P = mod(floor(p), 256.0); p -= floor(p); vec3 f = fade_Stage1(p); float A = perm_Stage1(P.x) + P.y; float AA = perm_Stage1(A) + P.z; float AB = perm_Stage1(A + 1.0) + P.z; float B = perm_Stage1(P.x + 1.0) + P.y; float BA = perm_Stage1(B) + P.z; float BB = perm_Stage1(B + 1.0) + P.z; float result = lerp_Stage1(lerp_Stage1(lerp_Stage1(grad_Stage1(perm_Stage1(AA), p), grad_Stage1(perm_Stage1(BA), p + vec3(-1.0, 0.0, 0.0)), f.x), lerp_Stage1(grad_Stage1(perm_Stage1(AB), p + vec3(0.0, -1.0, 0.0)), grad_Stage1(perm_Stage1(BB), p + vec3(-1.0, -1.0, 0.0)), f.x), f.y), lerp_Stage1(lerp_Stage1(grad_Stage1(perm_Stage1(AA + 1.0), p + vec3(0.0, 0.0, -1.0)), grad_Stage1(perm_Stage1(BA + 1.0), p + vec3(-1.0, 0.0, -1.0)), f.x), lerp_Stage1(grad_Stage1(perm_Stage1(AB + 1.0), p + vec3(0.0, -1.0, -1.0)), grad_Stage1(perm_Stage1(BB + 1.0), p + vec3(-1.0, -1.0, -1.0)), f.x), f.y), f.z); return result; } float noiseOctaves_Stage1(vec3 p) { float result = 0.0; float ratio = 1.0; for (float i = 0.0;i < 8.0; i++) { result += noise_Stage1(p) / ratio; p *= 2.0; ratio *= 2.0; } return (result + 1.0) / 2.0; } void main() { vec4 outputColor_Stage0; { outputColor_Stage0 = vcolor_Stage0; } vec4 output_Stage1; { vec2 coords = vTransformedCoords_0_Stage0 * ubaseFrequency_Stage1; float r = noiseOctaves_Stage1(vec3(coords, uz_Stage1)); float g = noiseOctaves_Stage1(vec3(coords, uz_Stage1)); float b = noiseOctaves_Stage1(vec3(coords, uz_Stage1)); float a = noiseOctaves_Stage1(vec3(coords, uz_Stage1)); output_Stage1 = vec4(r, g, b, a); output_Stage1 = clamp(output_Stage1, 0.0, 1.0); output_Stage1 = vec4(output_Stage1.xyz * output_Stage1.www, output_Stage1.w); } { sk_FragColor = output_Stage1 * outputColor_Stage0; } } [vertex shader] #version 140 uniform vec4 sk_RTAdjust; uniform mat3 uCoordTransformMatrix_0_Stage0; in vec2 position; in vec4 color; in vec2 localCoord; noperspective out vec2 vTransformedCoords_0_Stage0; flat out vec4 vcolor_Stage0; void main() { vTransformedCoords_0_Stage0 = (uCoordTransformMatrix_0_Stage0 * vec3(localCoord, 1.0)).xy; vcolor_Stage0 = color; gl_Position = vec4(position.x, position.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); }