| @@ -0,0 +1,27 @@ | |||
| 1 | + | uniform float u_Time; | |
| 2 | + | uniform sampler2D u_Tex0; | |
| 3 | + | varying vec2 v_TexCoord; | |
| 4 | + | ||
| 5 | + | void main() | |
| 6 | + | { | |
| 7 | + | vec4 col = texture2D(u_Tex0, v_TexCoord); | |
| 8 | + | ||
| 9 | + | // Shimmer effect | |
| 10 | + | float shimmer = sin(u_Time * 10.0) * 0.1; | |
| 11 | + | col.rgb += shimmer; | |
| 12 | + | ||
| 13 | + | // Twist effect | |
| 14 | + | float twist = sin(u_Time * 5.0) * 0.2; | |
| 15 | + | col.rgb += vec3(twist, twist, twist); | |
| 16 | + | ||
| 17 | + | // Glitch effect | |
| 18 | + | float glitchX = sin(u_Time * 20.0) * 0.01; | |
| 19 | + | float glitchY = cos(u_Time * 15.0) * 0.01; | |
| 20 | + | col.rgb += texture2D(u_Tex0, v_TexCoord + vec2(glitchX, glitchY)).rgb; | |
| 21 | + | ||
| 22 | + | // Fade effect | |
| 23 | + | float fade = smoothstep(0.0, 1.0, u_Time * 0.1); | |
| 24 | + | col.rgb *= fade; | |
| 25 | + | ||
| 26 | + | gl_FragColor = col; | |
| 27 | + | } |
| @@ -0,0 +1,19 @@ | |||
| 1 | + | uniform float u_Time; | |
| 2 | + | uniform sampler2D u_Tex0; | |
| 3 | + | varying vec2 v_TexCoord; | |
| 4 | + | ||
| 5 | + | void main() | |
| 6 | + | { | |
| 7 | + | vec4 col = texture2D(u_Tex0, v_TexCoord); | |
| 8 | + | ||
| 9 | + | // Glitch effect | |
| 10 | + | float glitchSpeed = 10.0; | |
| 11 | + | float glitchIntensity = 0.1; | |
| 12 | + | float glitchOffsetX = glitchIntensity * sin(u_Time * glitchSpeed); | |
| 13 | + | float glitchOffsetY = glitchIntensity * cos(u_Time * glitchSpeed); | |
| 14 | + | vec2 glitchUV = v_TexCoord + vec2(glitchOffsetX, glitchOffsetY); | |
| 15 | + | vec4 glitchColor = texture2D(u_Tex0, glitchUV); | |
| 16 | + | col.rgb += glitchColor.rgb; | |
| 17 | + | ||
| 18 | + | gl_FragColor = col; | |
| 19 | + | } |
| @@ -0,0 +1,16 @@ | |||
| 1 | + | uniform mat4 u_Color; | |
| 2 | + | varying vec2 v_TexCoord; | |
| 3 | + | varying vec2 v_TexCoord2; | |
| 4 | + | varying vec2 v_TexCoord3; | |
| 5 | + | uniform sampler2D u_Tex0; | |
| 6 | + | uniform sampler2D u_Tex1; | |
| 7 | + | void main() | |
| 8 | + | { | |
| 9 | + | gl_FragColor = texture2D(u_Tex0, v_TexCoord); | |
| 10 | + | vec4 texcolor = texture2D(u_Tex0, v_TexCoord2); | |
| 11 | + | vec4 effectColor = texture2D(u_Tex1, v_TexCoord3); | |
| 12 | + | if(texcolor.a > 0.9) { | |
| 13 | + | gl_FragColor *= effectColor; | |
| 14 | + | } | |
| 15 | + | if(gl_FragColor.a < 0.01) discard; | |
| 16 | + | } |
| @@ -0,0 +1,40 @@ | |||
| 1 | + | attribute vec2 a_TexCoord; | |
| 2 | + | uniform mat3 u_TextureMatrix; | |
| 3 | + | varying vec2 v_TexCoord; | |
| 4 | + | varying vec2 v_TexCoord2; | |
| 5 | + | varying vec2 v_TexCoord3; | |
| 6 | + | attribute vec2 a_Vertex; | |
| 7 | + | uniform mat3 u_TransformMatrix; | |
| 8 | + | uniform mat3 u_ProjectionMatrix; | |
| 9 | + | uniform vec2 u_Offset; | |
| 10 | + | uniform float u_Time; | |
| 11 | + | uniform vec2 u_Center; | |
| 12 | + | ||
| 13 | + | vec2 effectTextureSize = vec2(500.0, 500.0); | |
| 14 | + | vec2 direction = vec2(0.0,0.0); | |
| 15 | + | float speed = 20.0; | |
| 16 | + | ||
| 17 | + | void main() | |
| 18 | + | { | |
| 19 | + | vec2 offset = direction * speed * u_Time; | |
| 20 | + | gl_Position = vec4((u_ProjectionMatrix * u_TransformMatrix * vec3(a_Vertex.xy, 1.0)).xy, 1.0, 1.0); | |
| 21 | + | v_TexCoord = (u_TextureMatrix * vec3(a_TexCoord,1.0)).xy; | |
| 22 | + | v_TexCoord2 = (u_TextureMatrix * vec3(a_TexCoord + u_Offset,1.0)).xy; | |
| 23 | + | ||
| 24 | + | vec2 vertex = a_Vertex; | |
| 25 | + | if(vertex.x < u_Center.x) { | |
| 26 | + | vertex.x = effectTextureSize.x / 10.0; | |
| 27 | + | } | |
| 28 | + | if(vertex.x > u_Center.x) { | |
| 29 | + | vertex.x = effectTextureSize.x - effectTextureSize.x / 10.0; | |
| 30 | + | } | |
| 31 | + | if(vertex.y < u_Center.y) { | |
| 32 | + | vertex.y = effectTextureSize.y / 10.0; | |
| 33 | + | } | |
| 34 | + | if(vertex.y > u_Center.y) { | |
| 35 | + | vertex.y = effectTextureSize.y - effectTextureSize.y / 10.0; | |
| 36 | + | } | |
| 37 | + | ||
| 38 | + | v_TexCoord3 = ((vertex) / effectTextureSize); | |
| 39 | + | } | |
| 40 | + |
| @@ -0,0 +1,21 @@ | |||
| 1 | + | uniform float u_Depth; | |
| 2 | + | uniform mat4 u_Color; | |
| 3 | + | varying vec2 v_TexCoord; | |
| 4 | + | varying vec2 v_TexCoord2; | |
| 5 | + | varying vec2 v_TexCoord3; | |
| 6 | + | uniform sampler2D u_Tex0; | |
| 7 | + | uniform sampler2D u_Tex1; | |
| 8 | + | uniform float u_Time; | |
| 9 | + | ||
| 10 | + | void main() | |
| 11 | + | { | |
| 12 | + | gl_FragColor = texture2D(u_Tex0, v_TexCoord); | |
| 13 | + | ||
| 14 | + | vec4 effectColor = texture2D(u_Tex1, v_TexCoord3); | |
| 15 | + | ||
| 16 | + | vec4 c = vec4(effectColor.rgb, gl_FragColor.a); | |
| 17 | + | ||
| 18 | + | gl_FragColor.rgb = mix(gl_FragColor.rgb, c.rgb, c.rgb); | |
| 19 | + | ||
| 20 | + | if(gl_FragColor.a < 0.01) discard; | |
| 21 | + | } |
| @@ -0,0 +1,25 @@ | |||
| 1 | + | attribute vec2 a_TexCoord; | |
| 2 | + | attribute vec2 a_Vertex; | |
| 3 | + | uniform mat3 u_TextureMatrix; | |
| 4 | + | varying vec2 v_TexCoord; | |
| 5 | + | varying vec2 v_TexCoord2; | |
| 6 | + | varying vec2 v_TexCoord3; | |
| 7 | + | uniform mat3 u_TransformMatrix; | |
| 8 | + | uniform mat3 u_ProjectionMatrix; | |
| 9 | + | uniform vec2 u_Offset; | |
| 10 | + | uniform float u_Depth; | |
| 11 | + | uniform float u_Time; | |
| 12 | + | uniform float u_SpriteScale; | |
| 13 | + | ||
| 14 | + | vec2 effectTextureSize = vec2(64.0, 64.0); | |
| 15 | + | vec2 direction = vec2(1.0,1.0); | |
| 16 | + | float speed = 10.0; | |
| 17 | + | ||
| 18 | + | void main() | |
| 19 | + | { | |
| 20 | + | vec2 offset = direction * speed * u_Time; | |
| 21 | + | gl_Position = vec4((u_ProjectionMatrix * u_TransformMatrix * vec3(a_Vertex.xy, 1.0)).xy, u_Depth / 16384.0, 1.0); | |
| 22 | + | v_TexCoord = (u_TextureMatrix * vec3(a_TexCoord,1.0)).xy; | |
| 23 | + | v_TexCoord2 = (u_TextureMatrix * vec3(a_TexCoord + u_Offset,1.0)).xy; | |
| 24 | + | v_TexCoord3 = ((a_TexCoord + offset) / effectTextureSize); | |
| 25 | + | } |
| @@ -0,0 +1,16 @@ | |||
| 1 | + | uniform mat4 u_Color; | |
| 2 | + | varying vec2 v_TexCoord; | |
| 3 | + | varying vec2 v_TexCoord2; | |
| 4 | + | varying vec2 v_TexCoord3; | |
| 5 | + | uniform sampler2D u_Tex0; | |
| 6 | + | uniform sampler2D u_Tex1; | |
| 7 | + | void main() | |
| 8 | + | { | |
| 9 | + | gl_FragColor = texture2D(u_Tex0, v_TexCoord); | |
| 10 | + | vec4 texcolor = texture2D(u_Tex0, v_TexCoord2); | |
| 11 | + | vec4 effectColor = texture2D(u_Tex1, v_TexCoord3); | |
| 12 | + | if(texcolor.a > 0.9) { | |
| 13 | + | gl_FragColor *= effectColor; | |
| 14 | + | } | |
| 15 | + | if(gl_FragColor.a < 0.01) discard; | |
| 16 | + | } |
| @@ -0,0 +1,40 @@ | |||
| 1 | + | attribute vec2 a_TexCoord; | |
| 2 | + | uniform mat3 u_TextureMatrix; | |
| 3 | + | varying vec2 v_TexCoord; | |
| 4 | + | varying vec2 v_TexCoord2; | |
| 5 | + | varying vec2 v_TexCoord3; | |
| 6 | + | attribute vec2 a_Vertex; | |
| 7 | + | uniform mat3 u_TransformMatrix; | |
| 8 | + | uniform mat3 u_ProjectionMatrix; | |
| 9 | + | uniform vec2 u_Offset; | |
| 10 | + | uniform float u_Time; | |
| 11 | + | uniform vec2 u_Center; | |
| 12 | + | ||
| 13 | + | vec2 effectTextureSize = vec2(384.0, 384.0); | |
| 14 | + | vec2 direction = vec2(1.0,1.0); | |
| 15 | + | float speed = 1.0; | |
| 16 | + | ||
| 17 | + | void main() | |
| 18 | + | { | |
| 19 | + | vec2 offset = direction * speed * u_Time; | |
| 20 | + | gl_Position = vec4((u_ProjectionMatrix * u_TransformMatrix * vec3(a_Vertex.xy, 1.0)).xy, 1.0, 1.0); | |
| 21 | + | v_TexCoord = (u_TextureMatrix * vec3(a_TexCoord,1.0)).xy; | |
| 22 | + | v_TexCoord2 = (u_TextureMatrix * vec3(a_TexCoord + u_Offset,1.0)).xy; | |
| 23 | + | ||
| 24 | + | vec2 vertex = a_Vertex; | |
| 25 | + | if(vertex.x < u_Center.x) { | |
| 26 | + | vertex.x = effectTextureSize.x / 10.0; | |
| 27 | + | } | |
| 28 | + | if(vertex.x > u_Center.x) { | |
| 29 | + | vertex.x = effectTextureSize.x - effectTextureSize.x / 10.0; | |
| 30 | + | } | |
| 31 | + | if(vertex.y < u_Center.y) { | |
| 32 | + | vertex.y = effectTextureSize.y / 10.0; | |
| 33 | + | } | |
| 34 | + | if(vertex.y > u_Center.y) { | |
| 35 | + | vertex.y = effectTextureSize.y - effectTextureSize.y / 10.0; | |
| 36 | + | } | |
| 37 | + | ||
| 38 | + | v_TexCoord3 = ((vertex) / effectTextureSize); | |
| 39 | + | } | |
| 40 | + |
| @@ -0,0 +1,45 @@ | |||
| 1 | + | uniform mat4 u_Color; | |
| 2 | + | varying vec2 v_TexCoord; | |
| 3 | + | varying vec2 v_TexCoord2; | |
| 4 | + | varying vec2 v_TexCoord3; | |
| 5 | + | varying vec2 v_Position; | |
| 6 | + | uniform sampler2D u_Tex0; | |
| 7 | + | uniform float u_Time; | |
| 8 | + | uniform vec2 u_Resolution; | |
| 9 | + | ||
| 10 | + | vec3 outline_color = vec3(0.0, 1.0, 1.5); | |
| 11 | + | float outline_alpha = 0.75; | |
| 12 | + | float outline_color_threshold = 2.5; | |
| 13 | + | float outline_thickness = 0.02; | |
| 14 | + | ||
| 15 | + | void main() | |
| 16 | + | { | |
| 17 | + | gl_FragColor = texture2D(u_Tex0, v_TexCoord); | |
| 18 | + | vec4 texcolor = texture2D(u_Tex0, v_TexCoord2); | |
| 19 | + | vec4 texcolor2 = texture2D(u_Tex0, v_TexCoord3); | |
| 20 | + | ||
| 21 | + | if (texcolor.r > outline_color_threshold) { | |
| 22 | + | if (texcolor.g > outline_color_threshold) { | |
| 23 | + | gl_FragColor *= u_Color[0]; // Apply outline_color if both R and G channels exceed the threshold | |
| 24 | + | } else { | |
| 25 | + | gl_FragColor *= u_Color[1]; // Apply outline_color if only R channel exceeds the threshold | |
| 26 | + | } | |
| 27 | + | } else if (texcolor.g > outline_color_threshold) { | |
| 28 | + | gl_FragColor *= u_Color[2]; // Apply outline_color if only G channel exceeds the threshold | |
| 29 | + | } else if (texcolor.b > outline_color_threshold) { | |
| 30 | + | gl_FragColor *= u_Color[3]; // Apply outline_color if only B channel exceeds the threshold | |
| 31 | + | } | |
| 32 | + | // Check alpha threshold and apply outline effect | |
| 33 | + | if (gl_FragColor.a < 0.01) { | |
| 34 | + | if (texcolor2.a > 0.01) { | |
| 35 | + | // Apply outline effect with specified parameters | |
| 36 | + | float outlineAnimation = abs(0.5 - mod(u_Time, 1.0)); | |
| 37 | + | float outlineWidth = smoothstep(outline_thickness, outline_thickness + 0.01, length(v_Position)); | |
| 38 | + | vec3 outlineColor = mix(gl_FragColor.rgb, outline_color, outlineWidth * outlineAnimation); | |
| 39 | + | gl_FragColor = vec4(outlineColor, 1.0); | |
| 40 | + | gl_FragColor.a *= outline_alpha; | |
| 41 | + | } else { | |
| 42 | + | discard; // Discard fragments below the alpha threshold | |
| 43 | + | } | |
| 44 | + | } | |
| 45 | + | } |
| @@ -0,0 +1,40 @@ | |||
| 1 | + | attribute vec2 a_TexCoord; | |
| 2 | + | uniform mat3 u_TextureMatrix; | |
| 3 | + | varying vec2 v_TexCoord; | |
| 4 | + | varying vec2 v_TexCoord2; | |
| 5 | + | varying vec2 v_TexCoord3; | |
| 6 | + | varying vec2 v_Position; | |
| 7 | + | attribute vec2 a_Vertex; | |
| 8 | + | uniform mat3 u_TransformMatrix; | |
| 9 | + | uniform mat3 u_ProjectionMatrix; | |
| 10 | + | uniform vec2 u_Offset; | |
| 11 | + | uniform vec2 u_Resolution; | |
| 12 | + | uniform vec2 u_Center; | |
| 13 | + | ||
| 14 | + | void main() | |
| 15 | + | { | |
| 16 | + | vec2 vertex = a_Vertex; | |
| 17 | + | vec2 text = a_TexCoord; | |
| 18 | + | vec2 text2 = a_TexCoord; | |
| 19 | + | if (vertex.x < u_Center.x) { | |
| 20 | + | vertex.x -= 1.0; | |
| 21 | + | text.x -= 1.0; | |
| 22 | + | } | |
| 23 | + | if (vertex.x > u_Center.x) { | |
| 24 | + | vertex.x += 1.0; | |
| 25 | + | text.x += 1.0; | |
| 26 | + | } | |
| 27 | + | if (vertex.y < u_Center.y) { | |
| 28 | + | vertex.y -= 1.0; | |
| 29 | + | text.y -= 1.0; | |
| 30 | + | } | |
| 31 | + | if (vertex.y > u_Center.y) { | |
| 32 | + | vertex.y += 1.0; | |
| 33 | + | text.y += 1.0; | |
| 34 | + | } | |
| 35 | + | gl_Position = vec4((u_ProjectionMatrix * u_TransformMatrix * vec3(vertex.xy, 1.0)).xy, 1.0, 1.0); | |
| 36 | + | v_Position = a_Vertex.xy - u_Center; | |
| 37 | + | v_TexCoord = (u_TextureMatrix * vec3(text, 1.0)).xy; | |
| 38 | + | v_TexCoord2 = (u_TextureMatrix * vec3(text + u_Offset, 1.0)).xy; | |
| 39 | + | v_TexCoord3 = (u_TextureMatrix * vec3(text2, 1.0)).xy; | |
| 40 | + | } |
| @@ -0,0 +1,16 @@ | |||
| 1 | + | uniform mat4 u_Color; | |
| 2 | + | varying vec2 v_TexCoord; | |
| 3 | + | varying vec2 v_TexCoord2; | |
| 4 | + | varying vec2 v_TexCoord3; | |
| 5 | + | uniform sampler2D u_Tex0; | |
| 6 | + | uniform sampler2D u_Tex1; | |
| 7 | + | void main() | |
| 8 | + | { | |
| 9 | + | gl_FragColor = texture2D(u_Tex0, v_TexCoord); | |
| 10 | + | vec4 texcolor = texture2D(u_Tex0, v_TexCoord2); | |
| 11 | + | vec4 effectColor = texture2D(u_Tex1, v_TexCoord3); | |
| 12 | + | if(texcolor.a > 0.9) { | |
| 13 | + | gl_FragColor *= effectColor; | |
| 14 | + | } | |
| 15 | + | if(gl_FragColor.a < 0.01) discard; | |
| 16 | + | } |
| @@ -0,0 +1,34 @@ | |||
| 1 | + | attribute vec2 a_TexCoord; | |
| 2 | + | uniform mat3 u_TextureMatrix; | |
| 3 | + | varying vec2 v_TexCoord; | |
| 4 | + | varying vec2 v_TexCoord2; | |
| 5 | + | varying vec2 v_TexCoord3; | |
| 6 | + | attribute vec2 a_Vertex; | |
| 7 | + | uniform mat3 u_TransformMatrix; | |
| 8 | + | uniform mat3 u_ProjectionMatrix; | |
| 9 | + | uniform vec2 u_Offset; | |
| 10 | + | uniform vec2 u_Center; | |
| 11 | + | uniform float u_Time; | |
| 12 | + | ||
| 13 | + | vec2 effectTextureSize = vec2(609.0, 559.0); | |
| 14 | + | vec2 direction = vec2(1.0,0.2); | |
| 15 | + | float speed = 10.0; | |
| 16 | + | float angle = 30.0; | |
| 17 | + | ||
| 18 | + | vec2 rotate(vec2 v, float a) { | |
| 19 | + | float s = sin(a); | |
| 20 | + | float c = cos(a); | |
| 21 | + | mat2 m = mat2(c, -s, s, c); | |
| 22 | + | return m * v; | |
| 23 | + | } | |
| 24 | + | ||
| 25 | + | void main() | |
| 26 | + | { | |
| 27 | + | vec2 offset = direction * speed * u_Time; | |
| 28 | + | gl_Position = vec4((u_ProjectionMatrix * u_TransformMatrix * vec3(a_Vertex.xy, 1.0)).xy, 1.0, 1.0); | |
| 29 | + | v_TexCoord = (u_TextureMatrix * vec3(a_TexCoord,1.0)).xy; | |
| 30 | + | v_TexCoord2 = (u_TextureMatrix * vec3(a_TexCoord + u_Offset,1.0)).xy; | |
| 31 | + | ||
| 32 | + | v_TexCoord3 = ((a_TexCoord + rotate(direction, (angle / 180.0) * 3.14) * u_Time * speed) / effectTextureSize); | |
| 33 | + | } | |
| 34 | + |
| @@ -0,0 +1,16 @@ | |||
| 1 | + | uniform mat4 u_Color; | |
| 2 | + | varying vec2 v_TexCoord; | |
| 3 | + | varying vec2 v_TexCoord2; | |
| 4 | + | varying vec2 v_TexCoord3; | |
| 5 | + | uniform sampler2D u_Tex0; | |
| 6 | + | uniform sampler2D u_Tex1; | |
| 7 | + | void main() | |
| 8 | + | { | |
| 9 | + | gl_FragColor = texture2D(u_Tex0, v_TexCoord); | |
| 10 | + | vec4 texcolor = texture2D(u_Tex0, v_TexCoord2); | |
| 11 | + | vec4 effectColor = texture2D(u_Tex1, v_TexCoord3); | |
| 12 | + | if(texcolor.a > 0.9) { | |
| 13 | + | gl_FragColor *= effectColor; | |
| 14 | + | } | |
| 15 | + | if(gl_FragColor.a < 0.01) discard; | |
| 16 | + | } |
| @@ -0,0 +1,34 @@ | |||
| 1 | + | attribute vec2 a_TexCoord; | |
| 2 | + | uniform mat3 u_TextureMatrix; | |
| 3 | + | varying vec2 v_TexCoord; | |
| 4 | + | varying vec2 v_TexCoord2; | |
| 5 | + | varying vec2 v_TexCoord3; | |
| 6 | + | attribute vec2 a_Vertex; | |
| 7 | + | uniform mat3 u_TransformMatrix; | |
| 8 | + | uniform mat3 u_ProjectionMatrix; | |
| 9 | + | uniform vec2 u_Offset; | |
| 10 | + | uniform vec2 u_Center; | |
| 11 | + | uniform float u_Time; | |
| 12 | + | ||
| 13 | + | vec2 effectTextureSize = vec2(580.0, 319.0); | |
| 14 | + | vec2 direction = vec2(1.0,0.2); | |
| 15 | + | float speed = 40.0; | |
| 16 | + | float angle = 30.0; | |
| 17 | + | ||
| 18 | + | vec2 rotate(vec2 v, float a) { | |
| 19 | + | float s = sin(a); | |
| 20 | + | float c = cos(a); | |
| 21 | + | mat2 m = mat2(c, -s, s, c); | |
| 22 | + | return m * v; | |
| 23 | + | } | |
| 24 | + | ||
| 25 | + | void main() | |
| 26 | + | { | |
| 27 | + | vec2 offset = direction * speed * u_Time; | |
| 28 | + | gl_Position = vec4((u_ProjectionMatrix * u_TransformMatrix * vec3(a_Vertex.xy, 1.0)).xy, 1.0, 1.0); | |
| 29 | + | v_TexCoord = (u_TextureMatrix * vec3(a_TexCoord,1.0)).xy; | |
| 30 | + | v_TexCoord2 = (u_TextureMatrix * vec3(a_TexCoord + u_Offset,1.0)).xy; | |
| 31 | + | ||
| 32 | + | v_TexCoord3 = ((a_TexCoord + rotate(direction, (angle / 180.0) * 3.14) * u_Time * speed) / effectTextureSize); | |
| 33 | + | } | |
| 34 | + |
| @@ -0,0 +1,28 @@ | |||
| 1 | + | uniform float u_Depth; | |
| 2 | + | uniform mat4 u_Color; | |
| 3 | + | varying vec2 v_TexCoord; | |
| 4 | + | varying vec2 v_TexCoord2; | |
| 5 | + | varying vec2 v_TexCoord3; | |
| 6 | + | uniform sampler2D u_Tex0; | |
| 7 | + | uniform sampler2D u_Tex1; | |
| 8 | + | uniform float u_Time; | |
| 9 | + | ||
| 10 | + | void main() | |
| 11 | + | { | |
| 12 | + | gl_FragColor = texture2D(u_Tex0, v_TexCoord); | |
| 13 | + | vec4 texcolor = texture2D(u_Tex0, v_TexCoord2); | |
| 14 | + | ||
| 15 | + | if(texcolor.r > 0.9) { | |
| 16 | + | gl_FragColor *= texcolor.g > 0.9 ? u_Color[0] : u_Color[1]; | |
| 17 | + | } else if(texcolor.g > 0.9) { | |
| 18 | + | gl_FragColor *= u_Color[2]; | |
| 19 | + | } else if(texcolor.b > 0.9) { | |
| 20 | + | gl_FragColor *= u_Color[3]; | |
| 21 | + | } | |
| 22 | + | ||
| 23 | + | vec4 effectColor = texture2D(u_Tex1, v_TexCoord3); | |
| 24 | + | vec4 c = vec4(effectColor.rgb, gl_FragColor.a); | |
| 25 | + | c.rgb *= vec3(0.0, 1.2, 0.0); | |
| 26 | + | gl_FragColor.rgb = mix(gl_FragColor.rgb, c.rgb, c.rgb); | |
| 27 | + | if(gl_FragColor.a < 0.01) discard; | |
| 28 | + | } |
| @@ -0,0 +1,25 @@ | |||
| 1 | + | attribute vec2 a_TexCoord; | |
| 2 | + | attribute vec2 a_Vertex; | |
| 3 | + | uniform mat3 u_TextureMatrix; | |
| 4 | + | varying vec2 v_TexCoord; | |
| 5 | + | varying vec2 v_TexCoord2; | |
| 6 | + | varying vec2 v_TexCoord3; | |
| 7 | + | uniform mat3 u_TransformMatrix; | |
| 8 | + | uniform mat3 u_ProjectionMatrix; | |
| 9 | + | uniform vec2 u_Offset; | |
| 10 | + | uniform float u_Depth; | |
| 11 | + | uniform float u_Time; | |
| 12 | + | uniform float u_SpriteScale; | |
| 13 | + | ||
| 14 | + | vec2 effectTextureSize = vec2(64.0, 64.0); | |
| 15 | + | vec2 direction = vec2(1.0,1.0); | |
| 16 | + | float speed = 10.0; | |
| 17 | + | ||
| 18 | + | void main() | |
| 19 | + | { | |
| 20 | + | vec2 offset = direction * speed * u_Time; | |
| 21 | + | gl_Position = vec4((u_ProjectionMatrix * u_TransformMatrix * vec3(a_Vertex.xy, 1.0)).xy, u_Depth / 16384.0, 1.0); | |
| 22 | + | v_TexCoord = (u_TextureMatrix * vec3(a_TexCoord,1.0)).xy; | |
| 23 | + | v_TexCoord2 = (u_TextureMatrix * vec3(a_TexCoord + u_Offset,1.0)).xy; | |
| 24 | + | v_TexCoord3 = ((a_TexCoord + offset) / effectTextureSize); | |
| 25 | + | } |
| @@ -0,0 +1,16 @@ | |||
| 1 | + | uniform mat4 u_Color; | |
| 2 | + | varying vec2 v_TexCoord; | |
| 3 | + | varying vec2 v_TexCoord2; | |
| 4 | + | varying vec2 v_TexCoord3; | |
| 5 | + | uniform sampler2D u_Tex0; | |
| 6 | + | uniform sampler2D u_Tex1; | |
| 7 | + | void main() | |
| 8 | + | { | |
| 9 | + | gl_FragColor = texture2D(u_Tex0, v_TexCoord); | |
| 10 | + | vec4 texcolor = texture2D(u_Tex0, v_TexCoord2); | |
| 11 | + | vec4 effectColor = texture2D(u_Tex1, v_TexCoord3); | |
| 12 | + | if(texcolor.a > 0.9) { | |
| 13 | + | gl_FragColor *= effectColor; | |
| 14 | + | } | |
| 15 | + | if(gl_FragColor.a < 0.01) discard; | |
| 16 | + | } |
| @@ -0,0 +1,34 @@ | |||
| 1 | + | attribute vec2 a_TexCoord; | |
| 2 | + | uniform mat3 u_TextureMatrix; | |
| 3 | + | varying vec2 v_TexCoord; | |
| 4 | + | varying vec2 v_TexCoord2; | |
| 5 | + | varying vec2 v_TexCoord3; | |
| 6 | + | attribute vec2 a_Vertex; | |
| 7 | + | uniform mat3 u_TransformMatrix; | |
| 8 | + | uniform mat3 u_ProjectionMatrix; | |
| 9 | + | uniform vec2 u_Offset; | |
| 10 | + | uniform vec2 u_Center; | |
| 11 | + | uniform float u_Time; | |
| 12 | + | ||
| 13 | + | vec2 effectTextureSize = vec2(512.0, 512.0); | |
| 14 | + | vec2 direction = vec2(1.0,0.2); | |
| 15 | + | float speed = 20.0; | |
| 16 | + | float angle = 30.0; | |
| 17 | + | ||
| 18 | + | vec2 rotate(vec2 v, float a) { | |
| 19 | + | float s = sin(a); | |
| 20 | + | float c = cos(a); | |
| 21 | + | mat2 m = mat2(c, -s, s, c); | |
| 22 | + | return m * v; | |
| 23 | + | } | |
| 24 | + | ||
| 25 | + | void main() | |
| 26 | + | { | |
| 27 | + | vec2 offset = direction * speed * u_Time; | |
| 28 | + | gl_Position = vec4((u_ProjectionMatrix * u_TransformMatrix * vec3(a_Vertex.xy, 1.0)).xy, 1.0, 1.0); | |
| 29 | + | v_TexCoord = (u_TextureMatrix * vec3(a_TexCoord,1.0)).xy; | |
| 30 | + | v_TexCoord2 = (u_TextureMatrix * vec3(a_TexCoord + u_Offset,1.0)).xy; | |
| 31 | + | ||
| 32 | + | v_TexCoord3 = ((a_TexCoord + rotate(direction, (angle / 180.0) * 3.14) * u_Time * speed) / effectTextureSize); | |
| 33 | + | } | |
| 34 | + |
| @@ -0,0 +1,27 @@ | |||
| 1 | + | uniform mat4 u_Color; | |
| 2 | + | varying vec2 v_TexCoord; | |
| 3 | + | varying vec2 v_TexCoord2; | |
| 4 | + | uniform sampler2D u_Tex0; | |
| 5 | + | uniform float u_Time; | |
| 6 | + | uniform vec2 u_Resolution; | |
| 7 | + | ||
| 8 | + | void main() | |
| 9 | + | { | |
| 10 | + | // Calculate the center of the screen | |
| 11 | + | vec2 center = u_Resolution / 2.0; | |
| 12 | + | ||
| 13 | + | // Calculate the distance from the current pixel to the center | |
| 14 | + | float distanceToCenter = length(v_TexCoord * u_Resolution - center); | |
| 15 | + | ||
| 16 | + | // Create a pulsating rings effect based on time | |
| 17 | + | float pulse = 0.5 + 0.5 * sin(u_Time); | |
| 18 | + | ||
| 19 | + | // Set the color based on the distance and pulsating effect | |
| 20 | + | vec4 color = vec4(0.2, 0.5, 0.8, 1.0) * (1.0 - pulse) + vec4(0.8, 0.2, 0.5, 1.0) * pulse; | |
| 21 | + | ||
| 22 | + | // Apply the color to the pixel | |
| 23 | + | gl_FragColor = texture2D(u_Tex0, v_TexCoord) * color; | |
| 24 | + | ||
| 25 | + | // If the fragment's alpha is too low, discard it | |
| 26 | + | if (gl_FragColor.a < 0.01) discard; | |
| 27 | + | } |
| @@ -0,0 +1,16 @@ | |||
| 1 | + | attribute vec2 a_Vertex; | |
| 2 | + | attribute vec2 a_TexCoord; | |
| 3 | + | uniform mat3 u_TextureMatrix; | |
| 4 | + | varying vec2 v_TexCoord; | |
| 5 | + | varying vec2 v_TexCoord2; | |
| 6 | + | uniform mat3 u_TransformMatrix; | |
| 7 | + | uniform mat3 u_ProjectionMatrix; | |
| 8 | + | uniform vec2 u_Offset; | |
| 9 | + | ||
| 10 | + | void main() | |
| 11 | + | { | |
| 12 | + | gl_Position = vec4((u_ProjectionMatrix * u_TransformMatrix * vec3(a_Vertex.xy, 1.0)).xy, 1.0, 1.0); | |
| 13 | + | v_TexCoord = (u_TextureMatrix * vec3(a_TexCoord,1.0)).xy; | |
| 14 | + | v_TexCoord2 = (u_TextureMatrix * vec3(a_TexCoord + u_Offset,1.0)).xy; | |
| 15 | + | } | |
| 16 | + |
| @@ -0,0 +1,16 @@ | |||
| 1 | + | uniform mat4 u_Color; | |
| 2 | + | varying vec2 v_TexCoord; | |
| 3 | + | varying vec2 v_TexCoord2; | |
| 4 | + | varying vec2 v_TexCoord3; | |
| 5 | + | uniform sampler2D u_Tex0; | |
| 6 | + | uniform sampler2D u_Tex1; | |
| 7 | + | void main() | |
| 8 | + | { | |
| 9 | + | gl_FragColor = texture2D(u_Tex0, v_TexCoord); | |
| 10 | + | vec4 texcolor = texture2D(u_Tex0, v_TexCoord2); | |
| 11 | + | vec4 effectColor = texture2D(u_Tex1, v_TexCoord3); | |
| 12 | + | if(texcolor.a > 0.9) { | |
| 13 | + | gl_FragColor *= effectColor; | |
| 14 | + | } | |
| 15 | + | if(gl_FragColor.a < 0.01) discard; | |
| 16 | + | } |
| @@ -0,0 +1,34 @@ | |||
| 1 | + | attribute vec2 a_TexCoord; | |
| 2 | + | uniform mat3 u_TextureMatrix; | |
| 3 | + | varying vec2 v_TexCoord; | |
| 4 | + | varying vec2 v_TexCoord2; | |
| 5 | + | varying vec2 v_TexCoord3; | |
| 6 | + | attribute vec2 a_Vertex; | |
| 7 | + | uniform mat3 u_TransformMatrix; | |
| 8 | + | uniform mat3 u_ProjectionMatrix; | |
| 9 | + | uniform vec2 u_Offset; | |
| 10 | + | uniform vec2 u_Center; | |
| 11 | + | uniform float u_Time; | |
| 12 | + | ||
| 13 | + | vec2 effectTextureSize = vec2(710.0, 444.0); | |
| 14 | + | vec2 direction = vec2(1.0,1.0); | |
| 15 | + | float speed = 4.0; | |
| 16 | + | float angle = 1.0; | |
| 17 | + | ||
| 18 | + | vec2 rotate(vec2 v, float a) { | |
| 19 | + | float s = sin(a); | |
| 20 | + | float c = cos(a); | |
| 21 | + | mat2 m = mat2(c, -s, s, c); | |
| 22 | + | return m * v; | |
| 23 | + | } | |
| 24 | + | ||
| 25 | + | void main() | |
| 26 | + | { | |
| 27 | + | vec2 offset = direction * speed * u_Time; | |
| 28 | + | gl_Position = vec4((u_ProjectionMatrix * u_TransformMatrix * vec3(a_Vertex.xy, 1.0)).xy, 1, 1); | |
| 29 | + | v_TexCoord = (u_TextureMatrix * vec3(a_TexCoord,1.0)).xy; | |
| 30 | + | v_TexCoord2 = (u_TextureMatrix * vec3(a_TexCoord + u_Offset,1.0)).xy; | |
| 31 | + | ||
| 32 | + | v_TexCoord3 = ((a_TexCoord + rotate(direction, (angle / 180.0) * 3.14) * u_Time * speed) / effectTextureSize); | |
| 33 | + | } | |
| 34 | + |
| @@ -0,0 +1,16 @@ | |||
| 1 | + | uniform mat4 u_Color; | |
| 2 | + | varying vec2 v_TexCoord; | |
| 3 | + | varying vec2 v_TexCoord2; | |
| 4 | + | varying vec2 v_TexCoord3; | |
| 5 | + | uniform sampler2D u_Tex0; | |
| 6 | + | uniform sampler2D u_Tex1; | |
| 7 | + | void main() | |
| 8 | + | { | |
| 9 | + | gl_FragColor = texture2D(u_Tex0, v_TexCoord); | |
| 10 | + | vec4 texcolor = texture2D(u_Tex0, v_TexCoord2); | |
| 11 | + | vec4 effectColor = texture2D(u_Tex1, v_TexCoord3); | |
| 12 | + | if(texcolor.a > 0.9) { | |
| 13 | + | gl_FragColor *= effectColor; | |
| 14 | + | } | |
| 15 | + | if(gl_FragColor.a < 0.01) discard; | |
| 16 | + | } |
| @@ -0,0 +1,34 @@ | |||
| 1 | + | attribute vec2 a_TexCoord; | |
| 2 | + | uniform mat3 u_TextureMatrix; | |
| 3 | + | varying vec2 v_TexCoord; | |
| 4 | + | varying vec2 v_TexCoord2; | |
| 5 | + | varying vec2 v_TexCoord3; | |
| 6 | + | attribute vec2 a_Vertex; | |
| 7 | + | uniform mat3 u_TransformMatrix; | |
| 8 | + | uniform mat3 u_ProjectionMatrix; | |
| 9 | + | uniform vec2 u_Offset; | |
| 10 | + | uniform vec2 u_Center; | |
| 11 | + | uniform float u_Time; | |
| 12 | + | ||
| 13 | + | vec2 effectTextureSize = vec2(160.0, 285.0); | |
| 14 | + | vec2 direction = vec2(1.0,0.2); | |
| 15 | + | float speed = 20.0; | |
| 16 | + | float angle = 30.0; | |
| 17 | + | ||
| 18 | + | vec2 rotate(vec2 v, float a) { | |
| 19 | + | float s = sin(a); | |
| 20 | + | float c = cos(a); | |
| 21 | + | mat2 m = mat2(c, -s, s, c); | |
| 22 | + | return m * v; | |
| 23 | + | } | |
| 24 | + | ||
| 25 | + | void main() | |
| 26 | + | { | |
| 27 | + | vec2 offset = direction * speed * u_Time; | |
| 28 | + | gl_Position = vec4((u_ProjectionMatrix * u_TransformMatrix * vec3(a_Vertex.xy, 1.0)).xy, 1.0, 1.0); | |
| 29 | + | v_TexCoord = (u_TextureMatrix * vec3(a_TexCoord,1.0)).xy; | |
| 30 | + | v_TexCoord2 = (u_TextureMatrix * vec3(a_TexCoord + u_Offset,1.0)).xy; | |
| 31 | + | ||
| 32 | + | v_TexCoord3 = ((a_TexCoord + rotate(direction, (angle / 180.0) * 3.14) * u_Time * speed) / effectTextureSize); | |
| 33 | + | } | |
| 34 | + |
| @@ -0,0 +1,42 @@ | |||
| 1 | + | uniform mat4 u_Color; | |
| 2 | + | varying vec2 v_TexCoord; | |
| 3 | + | varying vec2 v_TexCoord2; | |
| 4 | + | varying vec2 v_Position; | |
| 5 | + | uniform sampler2D u_Tex0; | |
| 6 | + | uniform float u_Time; | |
| 7 | + | ||
| 8 | + | // CONFIG | |
| 9 | + | float speed = 4.0; | |
| 10 | + | float height = 12.0; | |
| 11 | + | float angle = 50.0; // degrees | |
| 12 | + | float intensity = 2.0; | |
| 13 | + | // CONFIG END | |
| 14 | + | ||
| 15 | + | vec2 rotate(vec2 v, float a) { | |
| 16 | + | float s = sin(a); | |
| 17 | + | float c = cos(a); | |
| 18 | + | mat2 m = mat2(c, -s, s, c); | |
| 19 | + | return m * v; | |
| 20 | + | } | |
| 21 | + | ||
| 22 | + | void main() | |
| 23 | + | { | |
| 24 | + | gl_FragColor = texture2D(u_Tex0, v_TexCoord); | |
| 25 | + | vec4 texcolor = texture2D(u_Tex0, v_TexCoord2); | |
| 26 | + | if(texcolor.r > 0.9) { | |
| 27 | + | gl_FragColor *= texcolor.g > 0.9 ? u_Color[0] : u_Color[1]; | |
| 28 | + | } else if(texcolor.g > 0.9) { | |
| 29 | + | gl_FragColor *= u_Color[2]; | |
| 30 | + | } else if(texcolor.b > 0.9) { | |
| 31 | + | gl_FragColor *= u_Color[3]; | |
| 32 | + | } | |
| 33 | + | ||
| 34 | + | if(texcolor.a > 0.9) { | |
| 35 | + | vec2 p = rotate(v_Position, (angle / 180.0) * 3.14); | |
| 36 | + | float frame = mod(p.y, height); | |
| 37 | + | float timeFrame = mod(u_Time * speed, height); | |
| 38 | + | float dist = min(abs(frame - timeFrame), min(abs(frame - timeFrame - height), abs(frame - timeFrame + height))); | |
| 39 | + | gl_FragColor.xyz *= intensity / sqrt(max(1.0, dist)); | |
| 40 | + | } | |
| 41 | + | if(gl_FragColor.a < 0.01) discard; | |
| 42 | + | } |