| @@ -0,0 +1,15 @@ | |||
| 1 | + | ||
| 2 | + | varying vec2 v_TexCoord; | |
| 3 | + | varying vec2 v_TexCoord2; | |
| 4 | + | ||
| 5 | + | uniform vec4 u_Color; | |
| 6 | + | uniform sampler2D u_Tex0; | |
| 7 | + | uniform sampler2D u_Tex1; | |
| 8 | + | ||
| 9 | + | void main() | |
| 10 | + | { | |
| 11 | + | gl_FragColor = texture2D(u_Tex0, v_TexCoord) * u_Color; | |
| 12 | + | gl_FragColor += texture2D(u_Tex1, v_TexCoord2); | |
| 13 | + | if(gl_FragColor.a < 0.01) | |
| 14 | + | discard; | |
| 15 | + | } |
| @@ -0,0 +1,33 @@ | |||
| 1 | + | attribute vec2 a_TexCoord; | |
| 2 | + | attribute vec2 a_Vertex; | |
| 3 | + | ||
| 4 | + | varying vec2 v_TexCoord; | |
| 5 | + | varying vec2 v_TexCoord2; | |
| 6 | + | ||
| 7 | + | uniform mat3 u_TextureMatrix; | |
| 8 | + | uniform mat3 u_TransformMatrix; | |
| 9 | + | uniform mat3 u_ProjectionMatrix; | |
| 10 | + | ||
| 11 | + | uniform vec2 u_Offset; | |
| 12 | + | uniform vec2 u_Center; | |
| 13 | + | uniform float u_Time; | |
| 14 | + | ||
| 15 | + | vec2 effectTextureSize = vec2(466.0, 342.0); | |
| 16 | + | vec2 direction = vec2(1.0,0.2); | |
| 17 | + | float speed = 200.0; | |
| 18 | + | ||
| 19 | + | vec2 rotate(vec2 v, float a) { | |
| 20 | + | float s = sin(a); | |
| 21 | + | float c = cos(a); | |
| 22 | + | mat2 m = mat2(c, -s, s, c); | |
| 23 | + | return m * v; | |
| 24 | + | } | |
| 25 | + | ||
| 26 | + | void main() | |
| 27 | + | { | |
| 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 | + | ||
| 31 | + | v_TexCoord2 = ((a_Vertex + direction * u_Time * speed) / effectTextureSize); | |
| 32 | + | } | |
| 33 | + |
| @@ -0,0 +1,37 @@ | |||
| 1 | + | uniform float u_Time; | |
| 2 | + | uniform sampler2D u_Tex0; | |
| 3 | + | uniform sampler2D u_Tex1; | |
| 4 | + | uniform vec2 u_Resolution; | |
| 5 | + | varying vec2 v_TexCoord; | |
| 6 | + | ||
| 7 | + | #define LAYERS 7 | |
| 8 | + | #define DEPTH .8 | |
| 9 | + | #define WIDTH .3 | |
| 10 | + | #define SPEED .6 | |
| 11 | + | ||
| 12 | + | void main( ) | |
| 13 | + | { | |
| 14 | + | const mat3 p = mat3(13.323122,23.5112,21.71123,21.1212,28.7312,11.9312,21.8112,14.7212,61.3934); | |
| 15 | + | vec2 uv = v_TexCoord.xy; | |
| 16 | + | uv.x = uv.x * (u_Resolution.x / u_Resolution.y); | |
| 17 | + | vec3 acc = vec3(0.0); | |
| 18 | + | float dof = 5.*sin(u_Time*.1); | |
| 19 | + | for (int i=0;i<LAYERS;i++) { | |
| 20 | + | float fi = float(i); | |
| 21 | + | vec2 q = uv*(1.+fi*DEPTH); | |
| 22 | + | q += vec2(q.y*(WIDTH*mod(fi*7.238917,1.)-WIDTH*.5),SPEED*u_Time/(1.+fi*DEPTH*.03)); | |
| 23 | + | vec3 n = vec3(floor(q),31.189+fi); | |
| 24 | + | vec3 m = floor(n)*.00001 + fract(n); | |
| 25 | + | vec3 mp = (31415.9+m)/fract(p*m); | |
| 26 | + | vec3 r = fract(mp); | |
| 27 | + | vec2 s = abs(mod(q,1.)-.5+.9*r.xy-.45); | |
| 28 | + | s += .01*abs(2.*fract(10.*q.yx)-1.); | |
| 29 | + | float d = .6*max(s.x-s.y,s.x+s.y)+max(s.x,s.y)-.01; | |
| 30 | + | float edge = .005+.05*min(.5*abs(fi-5.-dof),1.); | |
| 31 | + | acc += vec3(smoothstep(edge,-edge,d)*(r.x/(1.+.02*fi*DEPTH))); | |
| 32 | + | } | |
| 33 | + | ||
| 34 | + | vec3 bgcol = texture2D(u_Tex0, v_TexCoord).xyz; | |
| 35 | + | vec3 col = bgcol + acc; | |
| 36 | + | gl_FragColor = vec4(vec3(col),1.0); | |
| 37 | + | } |
| @@ -0,0 +1,25 @@ | |||
| 1 | + | ||
| 2 | + | varying vec2 v_TexCoord; | |
| 3 | + | ||
| 4 | + | uniform vec4 u_Color; | |
| 5 | + | uniform sampler2D u_Tex0; | |
| 6 | + | uniform sampler2D u_Tex1; | |
| 7 | + | uniform float u_Time; | |
| 8 | + | uniform vec2 u_WalkOffset; | |
| 9 | + | ||
| 10 | + | vec2 snowDirection = vec2(1.0, 0.2); | |
| 11 | + | float snowSpeed = 0.08; | |
| 12 | + | float snowPressure = 0.4; | |
| 13 | + | float snowZoom = 0.6; | |
| 14 | + | ||
| 15 | + | void main() | |
| 16 | + | { | |
| 17 | + | gl_FragColor = texture2D(u_Tex0, v_TexCoord) * u_Color; | |
| 18 | + | ||
| 19 | + | vec2 snowCoord = (v_TexCoord + vec2(u_WalkOffset.x, u_WalkOffset.y) + (snowDirection * u_Time * snowSpeed)) / snowZoom; | |
| 20 | + | vec4 effectPixel = texture2D(u_Tex1, snowCoord) * snowPressure; | |
| 21 | + | ||
| 22 | + | gl_FragColor += (effectPixel.rgba); | |
| 23 | + | if(gl_FragColor.a < 0.01) | |
| 24 | + | discard; | |
| 25 | + | } |
| @@ -0,0 +1,18 @@ | |||
| 1 | + | attribute vec2 a_TexCoord; | |
| 2 | + | attribute vec2 a_Vertex; | |
| 3 | + | ||
| 4 | + | varying vec2 v_TexCoord; | |
| 5 | + | varying vec2 v_TexCoord2; | |
| 6 | + | ||
| 7 | + | uniform mat3 u_TextureMatrix; | |
| 8 | + | uniform mat3 u_TransformMatrix; | |
| 9 | + | uniform mat3 u_ProjectionMatrix; | |
| 10 | + | ||
| 11 | + | uniform vec2 u_Offset; | |
| 12 | + | uniform vec2 u_Center; | |
| 13 | + | ||
| 14 | + | void main() | |
| 15 | + | { | |
| 16 | + | gl_Position = vec4((u_ProjectionMatrix * u_TransformMatrix * vec3(a_Vertex.xy, 1.0)).xy, 1.0, 1.0); | |
| 17 | + | v_TexCoord = (u_TextureMatrix * vec3(a_TexCoord,1.0)).xy; | |
| 18 | + | } |
| @@ -0,0 +1,32 @@ | |||
| 1 | + | #ifdef GL_ES | |
| 2 | + | precision mediump float; | |
| 3 | + | #endif | |
| 4 | + | ||
| 5 | + | uniform float u_Time; | |
| 6 | + | uniform sampler2D u_NoiseTexture; // Noise texture for turbulence | |
| 7 | + | varying vec2 v_TexCoord; | |
| 8 | + | ||
| 9 | + | float cloudNoise(vec2 uv) { | |
| 10 | + | return texture2D(u_NoiseTexture, uv).r; | |
| 11 | + | } | |
| 12 | + | ||
| 13 | + | void main(void) { | |
| 14 | + | vec2 uv = v_TexCoord; | |
| 15 | + | ||
| 16 | + | float ttime = u_Time * 0.1; | |
| 17 | + | vec2 offset = vec2(sin(ttime), cos(ttime)) * 0.1; | |
| 18 | + | ||
| 19 | + | // Apply turbulence using noise function | |
| 20 | + | float turb = cloudNoise(uv + offset); | |
| 21 | + | uv += (turb - 0.5) * 0.1; | |
| 22 | + | ||
| 23 | + | // Apply the cloud color | |
| 24 | + | vec3 cloudColor = vec3(0.5, 0.6, 1.0); // Blue cloud color | |
| 25 | + | float opacity = 0.6; | |
| 26 | + | ||
| 27 | + | // Apply a cloud-like blending using turbulence | |
| 28 | + | float cloudLayer = cloudNoise(uv * 5.0); | |
| 29 | + | vec3 finalColor = mix(cloudColor, vec3(1.0), cloudLayer * opacity); | |
| 30 | + | ||
| 31 | + | gl_FragColor = vec4(finalColor, 1.0); | |
| 32 | + | } |
| @@ -0,0 +1,30 @@ | |||
| 1 | + | uniform float u_Time; | |
| 2 | + | uniform sampler2D u_Tex0; | |
| 3 | + | uniform sampler2D u_Tex1; | |
| 4 | + | varying vec2 v_TexCoord; | |
| 5 | + | uniform mat3 u_TextureMatrix; | |
| 6 | + | uniform vec2 u_MapCoords; | |
| 7 | + | ||
| 8 | + | vec2 direction = vec2(1.0,0.3); | |
| 9 | + | float speed = 0.05; | |
| 10 | + | float pressure = 0.9; | |
| 11 | + | float zoom = 0.5; | |
| 12 | + | ||
| 13 | + | vec3 toxicEffect(vec3 color) | |
| 14 | + | { | |
| 15 | + | return vec3(color.x * 0.15, | |
| 16 | + | color.y * 0.6, | |
| 17 | + | color.z * 0.15); | |
| 18 | + | } | |
| 19 | + | ||
| 20 | + | void main(void) | |
| 21 | + | { | |
| 22 | + | vec2 b = vec2(-u_TextureMatrix[1][1]/u_TextureMatrix[0][0], 1.0); | |
| 23 | + | ||
| 24 | + | vec2 offset = (u_MapCoords + (v_TexCoord * b) + (direction * u_Time * speed)) / zoom; | |
| 25 | + | vec3 bgcol = texture2D(u_Tex0, v_TexCoord).xyz; | |
| 26 | + | vec3 fogcol = texture2D(u_Tex1, offset).xyz; | |
| 27 | + | fogcol = toxicEffect(fogcol); | |
| 28 | + | vec3 col = bgcol + fogcol*pressure; | |
| 29 | + | gl_FragColor = vec4(col,1.0); | |
| 30 | + | } |
| @@ -0,0 +1,16 @@ | |||
| 1 | + | attribute vec2 a_TexCoord; | |
| 2 | + | uniform mat3 u_TextureMatrix; | |
| 3 | + | varying vec2 v_TexCoord; | |
| 4 | + | vec4 calculatePosition(); | |
| 5 | + | void main() | |
| 6 | + | { | |
| 7 | + | gl_Position = calculatePosition(); | |
| 8 | + | v_TexCoord = (u_TextureMatrix * vec3(a_TexCoord,1.0)).xy; | |
| 9 | + | } | |
| 10 | + | ||
| 11 | + | attribute vec2 a_Vertex; | |
| 12 | + | uniform mat3 u_TransformMatrix; | |
| 13 | + | uniform mat3 u_ProjectionMatrix; | |
| 14 | + | vec4 calculatePosition() { | |
| 15 | + | return vec4(u_ProjectionMatrix * u_TransformMatrix * vec3(a_Vertex.xy, 1.0), 1.0); | |
| 16 | + | } |
| @@ -0,0 +1,27 @@ | |||
| 1 | + | attribute vec2 a_TexCoord; | |
| 2 | + | uniform mat3 u_TextureMatrix; | |
| 3 | + | varying vec2 v_TexCoord; | |
| 4 | + | varying vec2 v_TexCoord2; // for the auxiliar texture | |
| 5 | + | uniform vec2 u_Offset; | |
| 6 | + | uniform vec2 u_Resolution; | |
| 7 | + | vec4 calculatePosition(); | |
| 8 | + | void main() | |
| 9 | + | { | |
| 10 | + | gl_Position = calculatePosition(); | |
| 11 | + | v_TexCoord = (u_TextureMatrix * vec3(a_TexCoord,1.0)).xy; | |
| 12 | + | ||
| 13 | + | // they are static | |
| 14 | + | v_TexCoord2 = gl_Position.xy; | |
| 15 | + | ||
| 16 | + | // fix the image to no longer be replicated | |
| 17 | + | v_TexCoord2 = vec2(v_TexCoord2.x/2.0, v_TexCoord2.y/2.0); | |
| 18 | + | v_TexCoord2.x += 0.5; | |
| 19 | + | v_TexCoord2.y += 0.5; | |
| 20 | + | } | |
| 21 | + | ||
| 22 | + | uniform mat3 u_TransformMatrix; | |
| 23 | + | uniform mat3 u_ProjectionMatrix; | |
| 24 | + | attribute vec2 a_Vertex; | |
| 25 | + | vec4 calculatePosition() { | |
| 26 | + | return vec4(u_ProjectionMatrix * u_TransformMatrix * vec3(a_Vertex.xy, 1.0), 1.0); | |
| 27 | + | } |
| @@ -0,0 +1,9 @@ | |||
| 1 | + | varying vec2 v_TexCoord; | |
| 2 | + | uniform vec4 u_Color; | |
| 3 | + | uniform sampler2D u_Tex0; | |
| 4 | + | ||
| 5 | + | void main() | |
| 6 | + | { | |
| 7 | + | vec2 mirroredTexCoord = vec2(1.0 - v_TexCoord.x, v_TexCoord.y); | |
| 8 | + | gl_FragColor = texture2D(u_Tex0, mirroredTexCoord); | |
| 9 | + | } |
| @@ -0,0 +1,10 @@ | |||
| 1 | + | // myShader.frag | |
| 2 | + | uniform float offsetX; | |
| 3 | + | uniform float offsetY; | |
| 4 | + | ||
| 5 | + | void main() { | |
| 6 | + | vec2 uv = gl_FragCoord.xy / resolution.xy; | |
| 7 | + | uv.x += offsetX; | |
| 8 | + | uv.y += offsetY; | |
| 9 | + | gl_FragColor = texture2D(texture, uv); | |
| 10 | + | } |
| @@ -0,0 +1,21 @@ | |||
| 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 | + | void main() | |
| 11 | + | { | |
| 12 | + | vec4 texcolor = texture2D(u_Tex0, v_TexCoord2); | |
| 13 | + | vec4 baseColor = texture2D(u_Tex0, v_TexCoord); | |
| 14 | + | ||
| 15 | + | float alpha = 1.0 - min(1.0, length(v_TexCoord - 0.5) * 2.0); | |
| 16 | + | alpha *= smoothstep(0.0, 0.3, texcolor.r); | |
| 17 | + | alpha *= smoothstep(0.0, 0.3, texcolor.g); | |
| 18 | + | alpha *= smoothstep(0.0, 0.3, texcolor.b); | |
| 19 | + | ||
| 20 | + | gl_FragColor = mix(baseColor, vec4(1.0, 1.0, 1.0, alpha), 0.7); | |
| 21 | + | } |
| @@ -0,0 +1,15 @@ | |||
| 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 | + | } |
| @@ -0,0 +1,56 @@ | |||
| 1 | + | uniform sampler2D u_Tex0; | |
| 2 | + | varying vec2 v_TexCoord; | |
| 3 | + | uniform float u_Time; | |
| 4 | + | uniform vec2 u_Resolution; | |
| 5 | + | const float PI = 3.1415926535897932; | |
| 6 | + | ||
| 7 | + | // speed | |
| 8 | + | const float speed = 0.16; | |
| 9 | + | const float speed_x = 0.13; | |
| 10 | + | const float speed_y = 0.12; | |
| 11 | + | ||
| 12 | + | // geometry | |
| 13 | + | const float intensity = 100.; | |
| 14 | + | const int steps = 3; | |
| 15 | + | const float frequency = 100.0; | |
| 16 | + | const int angle = 7; // better when a prime | |
| 17 | + | ||
| 18 | + | // reflection and emboss | |
| 19 | + | const float delta = 1000.; | |
| 20 | + | const float intence = 10.2; | |
| 21 | + | const float emboss = 1.; | |
| 22 | + | ||
| 23 | + | //---------- crystals effect | |
| 24 | + | float col(vec2 coord) | |
| 25 | + | { | |
| 26 | + | float delta_theta = 2.0 * PI / float(angle); | |
| 27 | + | float col = 0.0; | |
| 28 | + | float theta = 0.0; | |
| 29 | + | for(int i = 0; i < steps; i++) { | |
| 30 | + | vec2 adjc = coord; | |
| 31 | + | theta = delta_theta*float(i); | |
| 32 | + | adjc.x += cos(theta)*u_Time*speed + u_Time * speed_x; | |
| 33 | + | adjc.y -= sin(theta)*u_Time*speed - u_Time * speed_y; | |
| 34 | + | col = col + cos( (adjc.x*cos(theta) - adjc.y*sin(theta))*frequency)*intensity; | |
| 35 | + | } | |
| 36 | + | return cos(col); | |
| 37 | + | } | |
| 38 | + | ||
| 39 | + | void main(void) | |
| 40 | + | { | |
| 41 | + | vec2 p = v_TexCoord, c1 = p, c2 = p; | |
| 42 | + | float cc1 = col(c1); | |
| 43 | + | ||
| 44 | + | c2.x += u_Resolution.x/delta; | |
| 45 | + | float dx = emboss*(cc1-col(c2))/delta; | |
| 46 | + | ||
| 47 | + | c2.x = p.x; | |
| 48 | + | c2.y += u_Resolution.y/delta; | |
| 49 | + | float dy = emboss*(cc1-col(c2))/delta; | |
| 50 | + | ||
| 51 | + | c1.x += dx; | |
| 52 | + | c1.y += dy; | |
| 53 | + | ||
| 54 | + | float alpha = 1.+dot(dx,dy)*intence; | |
| 55 | + | gl_FragColor = texture2D(u_Tex0,c1)*(alpha); | |
| 56 | + | } |
| @@ -0,0 +1,29 @@ | |||
| 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 | + | void main() | |
| 11 | + | { | |
| 12 | + | gl_FragColor = texture2D(u_Tex0, v_TexCoord); | |
| 13 | + | vec4 texcolor = texture2D(u_Tex0, v_TexCoord2); | |
| 14 | + | vec4 texcolor2 = texture2D(u_Tex0, v_TexCoord3); | |
| 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 | + | if(gl_FragColor.a < 0.01) { | |
| 23 | + | if(texcolor2.a > 0.01) { | |
| 24 | + | gl_FragColor = vec4(0.0, 0.0, 1.0, 1.0); | |
| 25 | + | } else { | |
| 26 | + | discard; | |
| 27 | + | } | |
| 28 | + | } | |
| 29 | + | } |
| @@ -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,29 @@ | |||
| 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 | + | void main() | |
| 11 | + | { | |
| 12 | + | gl_FragColor = texture2D(u_Tex0, v_TexCoord); | |
| 13 | + | vec4 texcolor = texture2D(u_Tex0, v_TexCoord2); | |
| 14 | + | vec4 texcolor2 = texture2D(u_Tex0, v_TexCoord3); | |
| 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 | + | if(gl_FragColor.a < 0.01) { | |
| 23 | + | if(texcolor2.a > 0.01) { | |
| 24 | + | gl_FragColor = vec4(0.0, 1.0, 0.0, 1.0); //Change the color here | |
| 25 | + | } else { | |
| 26 | + | discard; | |
| 27 | + | } | |
| 28 | + | } | |
| 29 | + | } |
| @@ -0,0 +1,41 @@ | |||
| 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 | + | } | |
| 41 | + |
| @@ -0,0 +1,33 @@ | |||
| 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 | + | void main() | |
| 11 | + | { | |
| 12 | + | gl_FragColor = texture2D(u_Tex0, v_TexCoord); | |
| 13 | + | vec4 texcolor = texture2D(u_Tex0, v_TexCoord2); | |
| 14 | + | vec4 texcolor2 = texture2D(u_Tex0, v_TexCoord3); | |
| 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 | + | if(gl_FragColor.a < 0.01) { | |
| 23 | + | if(texcolor2.a > 0.01) { | |
| 24 | + | // Interpolate between green and orange based on time | |
| 25 | + | float t = 0.5 + abs(0.5 - mod(u_Time, 1.0)); | |
| 26 | + | gl_FragColor = mix(vec4(0.5, 0.5, 0.0, 1.0), vec4(1.0, 0.9, 0.0, 1.0), t); | |
| 27 | + | } else { | |
| 28 | + | discard; | |
| 29 | + | } | |
| 30 | + | } | |
| 31 | + | ||
| 32 | + | ||
| 33 | + | } |
| @@ -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,24 @@ | |||
| 1 | + | uniform float u_Time; | |
| 2 | + | varying vec2 v_TexCoord; | |
| 3 | + | uniform sampler2D u_Tex0; | |
| 4 | + | ||
| 5 | + | void main(void) | |
| 6 | + | { | |
| 7 | + | vec2 q = v_TexCoord; | |
| 8 | + | vec2 uv = 0.5 + (q-0.5)*(0.9 + 0.1*sin(0.2*u_Time)); | |
| 9 | + | ||
| 10 | + | vec3 oricol = texture2D(u_Tex0,vec2(q.x,q.y)).xyz; | |
| 11 | + | vec3 col = oricol; | |
| 12 | + | ||
| 13 | + | col = clamp(col*0.5+0.5*col*col*1.2,0.0,1.0); | |
| 14 | + | ||
| 15 | + | col *= 0.5 + 0.5*16.0*uv.x*uv.y*(1.0-uv.x)*(1.0-uv.y); | |
| 16 | + | ||
| 17 | + | col *= vec3(0.8,1.0,0.7); | |
| 18 | + | ||
| 19 | + | col *= 0.9+0.1*sin(10.0*u_Time+uv.y*1000.0); | |
| 20 | + | ||
| 21 | + | col *= 0.97+0.03*sin(110.0*u_Time); | |
| 22 | + | ||
| 23 | + | gl_FragColor = vec4(col,1.0); | |
| 24 | + | } |
| @@ -0,0 +1,33 @@ | |||
| 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 | + | void main() | |
| 11 | + | { | |
| 12 | + | gl_FragColor = texture2D(u_Tex0, v_TexCoord); | |
| 13 | + | vec4 texcolor = texture2D(u_Tex0, v_TexCoord2); | |
| 14 | + | vec4 texcolor2 = texture2D(u_Tex0, v_TexCoord3); | |
| 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 | + | if(gl_FragColor.a < 0.01) { | |
| 23 | + | if(texcolor2.a > 0.01) { | |
| 24 | + | // Interpolate between green and orange based on time | |
| 25 | + | float t = 0.5 + abs(0.5 - mod(u_Time, 1.0)); | |
| 26 | + | gl_FragColor = mix(vec4(1.0, 0.0, 0.0, 1.0), vec4(1.0, 0.5, 0.0, 1.0), t); | |
| 27 | + | } else { | |
| 28 | + | discard; | |
| 29 | + | } | |
| 30 | + | } | |
| 31 | + | ||
| 32 | + | ||
| 33 | + | } |
| @@ -0,0 +1,41 @@ | |||
| 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 | + | } | |
| 41 | + |
| @@ -0,0 +1,45 @@ | |||
| 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 = 8.0; | |
| 11 | + | float angle = 290.0; // degrees | |
| 12 | + | float intensity = 1.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) - mod(u_Time * speed, height); | |
| 37 | + | float dist1 = min(abs(frame), min(abs(frame - height), abs(frame + height))); | |
| 38 | + | frame = mod(p.y + height * 0.33, height) - mod(u_Time * speed, height); | |
| 39 | + | float dist2 = min(abs(frame), min(abs(frame - height), abs(frame + height))); | |
| 40 | + | frame = mod(p.y + height * 0.66, height) - mod(u_Time * speed, height); | |
| 41 | + | float dist3 = min(abs(frame), min(abs(frame - height), abs(frame + height))); | |
| 42 | + | gl_FragColor.xyz *= vec3(intensity / sqrt(dist1 / 2.0), intensity / sqrt(dist2 / 2.0), intensity/ sqrt(dist3 / 2.0)); | |
| 43 | + | } | |
| 44 | + | if(gl_FragColor.a < 0.01) discard; | |
| 45 | + | } |
| @@ -0,0 +1,20 @@ | |||
| 1 | + | attribute vec2 a_TexCoord; | |
| 2 | + | uniform mat3 u_TextureMatrix; | |
| 3 | + | varying vec2 v_TexCoord; | |
| 4 | + | varying vec2 v_TexCoord2; | |
| 5 | + | varying vec2 v_Position; | |
| 6 | + | attribute vec2 a_Vertex; | |
| 7 | + | uniform mat3 u_TransformMatrix; | |
| 8 | + | uniform mat3 u_ProjectionMatrix; | |
| 9 | + | uniform vec2 u_Offset; | |
| 10 | + | uniform vec2 u_Resolution; | |
| 11 | + | uniform vec2 u_Center; | |
| 12 | + | ||
| 13 | + | void main() | |
| 14 | + | { | |
| 15 | + | gl_Position = vec4((u_ProjectionMatrix * u_TransformMatrix * vec3(a_Vertex.xy, 1.0)).xy, 1.0, 1.0); | |
| 16 | + | v_Position = a_Vertex.xy - u_Center; | |
| 17 | + | v_TexCoord = (u_TextureMatrix * vec3(a_TexCoord,1.0)).xy; | |
| 18 | + | v_TexCoord2 = (u_TextureMatrix * vec3(a_TexCoord + u_Offset,1.0)).xy; | |
| 19 | + | } | |
| 20 | + |