| @@ -0,0 +1,60 @@ | |||
| 1 | + | #if __VERSION__ < 130 | |
| 2 | + | #define TEXTURE2D texture2D | |
| 3 | + | #else | |
| 4 | + | #define TEXTURE2D texture | |
| 5 | + | #endif | |
| 6 | + | ||
| 7 | + | uniform float u_Time; | |
| 8 | + | uniform sampler2D u_Tex0; | |
| 9 | + | uniform sampler2D u_Tex1; | |
| 10 | + | uniform sampler2D u_Tex2; | |
| 11 | + | varying vec2 v_TexCoord; | |
| 12 | + | varying vec2 v_TexCoord2; | |
| 13 | + | ||
| 14 | + | uniform vec2 u_Resolution; | |
| 15 | + | uniform float u_float1; | |
| 16 | + | uniform float u_float2; | |
| 17 | + | uniform float u_float3; | |
| 18 | + | varying vec2 v_TexCoord3; | |
| 19 | + | varying vec2 v_TexCoord4; | |
| 20 | + | uniform float u_float4; | |
| 21 | + | ||
| 22 | + | float _OutlineAlpha = 1.0; | |
| 23 | + | float _OutlineGlow = 1.0; | |
| 24 | + | float outline_thickness = 0.3; | |
| 25 | + | vec4 _OutlineColor = vec4(1.0,1.0,1.0,1.0); | |
| 26 | + | ||
| 27 | + | void main() | |
| 28 | + | { | |
| 29 | + | vec4 _MainTex = TEXTURE2D(u_Tex0, v_TexCoord); | |
| 30 | + | vec2 destUv = vec2(0.01 * _MainTex.x, 0.01 * _MainTex.y); | |
| 31 | + | ||
| 32 | + | float outDistortAmnt = (TEXTURE2D(u_Tex1, v_TexCoord4).r - 0.5) * outline_thickness; | |
| 33 | + | destUv.x += outDistortAmnt; | |
| 34 | + | destUv.y += outDistortAmnt; | |
| 35 | + | ||
| 36 | + | float spriteLeft = TEXTURE2D(u_Tex0, v_TexCoord + vec2(destUv.x, 0)).a; | |
| 37 | + | float spriteRight = TEXTURE2D(u_Tex0, v_TexCoord - vec2(destUv.x, 0)).a; | |
| 38 | + | float spriteBottom = TEXTURE2D(u_Tex0, v_TexCoord + vec2(0, destUv.y)).a; | |
| 39 | + | float spriteTop = TEXTURE2D(u_Tex0, v_TexCoord - vec2(0, destUv.y)).a; | |
| 40 | + | float result = spriteLeft + spriteRight + spriteBottom + spriteTop; | |
| 41 | + | ||
| 42 | + | float spriteTopLeft = TEXTURE2D(u_Tex0, v_TexCoord + vec2(destUv.x, destUv.y)).a; | |
| 43 | + | float spriteTopRight = TEXTURE2D(u_Tex0, v_TexCoord + vec2(-destUv.x, destUv.y)).a; | |
| 44 | + | float spriteBotLeft = TEXTURE2D(u_Tex0, v_TexCoord + vec2(destUv.x, -destUv.y)).a; | |
| 45 | + | float spriteBotRight = TEXTURE2D(u_Tex0, v_TexCoord + vec2(-destUv.x, -destUv.y)).a; | |
| 46 | + | result = result + spriteTopLeft + spriteTopRight + spriteBotLeft + spriteBotRight; | |
| 47 | + | ||
| 48 | + | result = step(0.05, clamp(result,0.0,1.0)); | |
| 49 | + | vec4 tempOutColor = TEXTURE2D(u_Tex2, v_TexCoord4); | |
| 50 | + | //tempOutColor *= _OutlineColor; | |
| 51 | + | _OutlineColor = tempOutColor; | |
| 52 | + | ||
| 53 | + | result *= (1.0 - _MainTex.a) * _OutlineAlpha; | |
| 54 | + | ||
| 55 | + | ||
| 56 | + | vec4 outline = _OutlineColor; | |
| 57 | + | //outline.rgb *= _OutlineGlow; | |
| 58 | + | //outline.a = result; | |
| 59 | + | gl_FragColor = mix(_MainTex, outline, result); | |
| 60 | + | } |
| @@ -0,0 +1,75 @@ | |||
| 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 | + | varying vec2 v_TexCoord3; | |
| 9 | + | varying vec2 v_TexCoord4; | |
| 10 | + | uniform vec2 u_Offset; | |
| 11 | + | uniform vec2 u_Center; | |
| 12 | + | uniform float u_Time; | |
| 13 | + | vec2 direction = vec2(0.5,1.0); | |
| 14 | + | float speed = 100.0; | |
| 15 | + | ||
| 16 | + | vec2 effectTextureSize = vec2(256.0, 256.0); | |
| 17 | + | void main() | |
| 18 | + | { | |
| 19 | + | vec2 vertex = a_Vertex; | |
| 20 | + | if(vertex.x < u_Center.x) { | |
| 21 | + | vertex.x = effectTextureSize.x / 10.0; | |
| 22 | + | } | |
| 23 | + | if(vertex.x > u_Center.x) { | |
| 24 | + | vertex.x = effectTextureSize.x - effectTextureSize.x / 10.0; | |
| 25 | + | } | |
| 26 | + | if(vertex.y < u_Center.y) { | |
| 27 | + | vertex.y = effectTextureSize.y / 10.0; | |
| 28 | + | } | |
| 29 | + | if(vertex.y > u_Center.y) { | |
| 30 | + | vertex.y = effectTextureSize.y - effectTextureSize.y / 10.0; | |
| 31 | + | } | |
| 32 | + | v_TexCoord3.x = ((vertex.x + direction.x * u_Time * speed) / effectTextureSize.x); | |
| 33 | + | v_TexCoord3.y = ((vertex.y + direction.y * u_Time * (speed*6.0055)) / effectTextureSize.y); | |
| 34 | + | ||
| 35 | + | effectTextureSize = vec2(256.0, 256.0); | |
| 36 | + | vertex = a_Vertex; | |
| 37 | + | if(vertex.x < u_Center.x) { | |
| 38 | + | vertex.x = effectTextureSize.x / 10.0; | |
| 39 | + | } | |
| 40 | + | if(vertex.x > u_Center.x) { | |
| 41 | + | vertex.x = effectTextureSize.x - effectTextureSize.x / 10.0; | |
| 42 | + | } | |
| 43 | + | if(vertex.y < u_Center.y) { | |
| 44 | + | vertex.y = effectTextureSize.y / 10.0; | |
| 45 | + | } | |
| 46 | + | if(vertex.y > u_Center.y) { | |
| 47 | + | vertex.y = effectTextureSize.y - effectTextureSize.y / 10.0; | |
| 48 | + | } | |
| 49 | + | v_TexCoord4.x = ((vertex.x + direction.x * u_Time * speed) / effectTextureSize.x); | |
| 50 | + | v_TexCoord4.y = ((vertex.y + direction.y * u_Time * (speed*1.75)) / effectTextureSize.y); | |
| 51 | + | ||
| 52 | + | vertex = a_Vertex; | |
| 53 | + | vec2 text = a_TexCoord; | |
| 54 | + | vec2 text2 = a_TexCoord; | |
| 55 | + | if(a_Vertex.x < u_Center.x) { | |
| 56 | + | vertex.x -= 5.0; | |
| 57 | + | text.x -= 3.0; | |
| 58 | + | } | |
| 59 | + | if(a_Vertex.x > u_Center.x) { | |
| 60 | + | vertex.x += 5.0; | |
| 61 | + | text.x += 3.0; | |
| 62 | + | } | |
| 63 | + | if(a_Vertex.y < u_Center.y) { | |
| 64 | + | vertex.y -= 5.0; | |
| 65 | + | text.y -= 3.0; | |
| 66 | + | } | |
| 67 | + | if(a_Vertex.y > u_Center.y) { | |
| 68 | + | vertex.y += 5.0; | |
| 69 | + | text.y += 3.0; | |
| 70 | + | } | |
| 71 | + | gl_Position = vec4((u_ProjectionMatrix * u_TransformMatrix * vec3(a_Vertex.xy, 1.0)).xy, 1.0, 1.0); | |
| 72 | + | v_TexCoord = (u_TextureMatrix * vec3(text,1.0)).xy; | |
| 73 | + | v_TexCoord2 = (u_TextureMatrix * vec3(text + u_Offset,1.0)).xy; | |
| 74 | + | } | |
| 75 | + |
| @@ -0,0 +1,10 @@ | |||
| 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 | + | float fade = abs(sin(u_Time)); | |
| 9 | + | gl_FragColor = mix(vec4(0.0), col, fade); | |
| 10 | + | } |
| @@ -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(920.0, 518.0); | |
| 14 | + | vec2 direction = vec2(1.0,1.0); | |
| 15 | + | float speed = 7.0; | |
| 16 | + | float angle = 180.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,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.0, 1.2); | |
| 26 | + | gl_FragColor.rgb = mix(gl_FragColor.rgb, c.rgb, c.rgb); | |
| 27 | + | if(gl_FragColor.a < 0.01) discard; | |
| 28 | + | } |
| @@ -0,0 +1,26 @@ | |||
| 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 | + | { | |
| 21 | + | vec2 offset = direction * speed * u_Time; | |
| 22 | + | gl_Position = vec4((u_ProjectionMatrix * u_TransformMatrix * vec3(a_Vertex.xy, 1.0)).xy, u_Depth / 16384.0, 1.0); | |
| 23 | + | v_TexCoord = (u_TextureMatrix * vec3(a_TexCoord,1.0)).xy; | |
| 24 | + | v_TexCoord2 = (u_TextureMatrix * vec3(a_TexCoord + u_Offset,1.0)).xy; | |
| 25 | + | v_TexCoord3 = ((a_TexCoord + offset) / effectTextureSize); | |
| 26 | + | } |
| @@ -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(320.0, 200.0); | |
| 14 | + | vec2 direction = vec2(1.0,1.0); | |
| 15 | + | float speed = 10.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,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(300.0, 150.0); | |
| 14 | + | vec2 direction = vec2(1.0,0.2); | |
| 15 | + | float speed = 25.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(512.0, 384.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,38 @@ | |||
| 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 = 6.0; | |
| 10 | + | float height = 2.0; | |
| 11 | + | float radius = 5.0; | |
| 12 | + | // CONFIG END | |
| 13 | + | ||
| 14 | + | vec2 rotate(vec2 v, float a) { | |
| 15 | + | float s = sin(a); | |
| 16 | + | float c = cos(a); | |
| 17 | + | mat2 m = mat2(c, -s, s, c); | |
| 18 | + | return m * v; | |
| 19 | + | } | |
| 20 | + | ||
| 21 | + | void main() | |
| 22 | + | { | |
| 23 | + | gl_FragColor = texture2D(u_Tex0, v_TexCoord); | |
| 24 | + | vec4 texcolor = texture2D(u_Tex0, v_TexCoord2); | |
| 25 | + | if(texcolor.r > 0.9) { | |
| 26 | + | gl_FragColor *= texcolor.g > 0.9 ? u_Color[0] : u_Color[1]; | |
| 27 | + | } else if(texcolor.g > 0.9) { | |
| 28 | + | gl_FragColor *= u_Color[2]; | |
| 29 | + | } else if(texcolor.b > 0.9) { | |
| 30 | + | gl_FragColor *= u_Color[3]; | |
| 31 | + | } | |
| 32 | + | ||
| 33 | + | ||
| 34 | + | if(texcolor.a > 0.9) { | |
| 35 | + | gl_FragColor.xyz *= max(1.0, height / sqrt(abs(abs(sqrt(v_Position.x * v_Position.x + v_Position.y * v_Position.y) / 8.0) - abs(mod(u_Time * speed, radius * 2.0) - radius)))); | |
| 36 | + | } | |
| 37 | + | if(gl_FragColor.a < 0.01) discard; | |
| 38 | + | } |
| @@ -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 | + |
| @@ -0,0 +1,38 @@ | |||
| 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 = 6.0; | |
| 10 | + | float height = 2.0; | |
| 11 | + | float radius = 5.0; | |
| 12 | + | // CONFIG END | |
| 13 | + | ||
| 14 | + | vec2 rotate(vec2 v, float a) { | |
| 15 | + | float s = sin(a); | |
| 16 | + | float c = cos(a); | |
| 17 | + | mat2 m = mat2(c, -s, s, c); | |
| 18 | + | return m * v; | |
| 19 | + | } | |
| 20 | + | ||
| 21 | + | void main() | |
| 22 | + | { | |
| 23 | + | gl_FragColor = texture2D(u_Tex0, v_TexCoord); | |
| 24 | + | vec4 texcolor = texture2D(u_Tex0, v_TexCoord2); | |
| 25 | + | if(texcolor.r > 0.9) { | |
| 26 | + | gl_FragColor *= texcolor.g > 0.9 ? u_Color[0] : u_Color[1]; | |
| 27 | + | } else if(texcolor.g > 0.9) { | |
| 28 | + | gl_FragColor *= u_Color[2]; | |
| 29 | + | } else if(texcolor.b > 0.9) { | |
| 30 | + | gl_FragColor *= u_Color[3]; | |
| 31 | + | } | |
| 32 | + | ||
| 33 | + | ||
| 34 | + | if(texcolor.a > 0.9) { | |
| 35 | + | gl_FragColor.xyz *= max(1.0, height / sqrt(abs(abs(sqrt(v_Position.x * v_Position.x + v_Position.y * v_Position.y) / 8.0) - abs(mod(u_Time * speed, radius * 2.0) - radius)))); | |
| 36 | + | } | |
| 37 | + | if(gl_FragColor.a < 0.01) discard; | |
| 38 | + | } |
| @@ -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 | + |
| @@ -0,0 +1,38 @@ | |||
| 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 = 10.0; | |
| 10 | + | float height = 3.0; | |
| 11 | + | float radius = 5.0; | |
| 12 | + | // CONFIG END | |
| 13 | + | ||
| 14 | + | vec2 rotate(vec2 v, float a) { | |
| 15 | + | float s = sin(a); | |
| 16 | + | float c = cos(a); | |
| 17 | + | mat2 m = mat2(c, -s, s, c); | |
| 18 | + | return m * v; | |
| 19 | + | } | |
| 20 | + | ||
| 21 | + | void main() | |
| 22 | + | { | |
| 23 | + | gl_FragColor = texture2D(u_Tex0, v_TexCoord); | |
| 24 | + | vec4 texcolor = texture2D(u_Tex0, v_TexCoord2); | |
| 25 | + | if(texcolor.r > 0.9) { | |
| 26 | + | gl_FragColor *= texcolor.g > 0.9 ? u_Color[0] : u_Color[1]; | |
| 27 | + | } else if(texcolor.g > 0.9) { | |
| 28 | + | gl_FragColor *= u_Color[2]; | |
| 29 | + | } else if(texcolor.b > 0.9) { | |
| 30 | + | gl_FragColor *= u_Color[3]; | |
| 31 | + | } | |
| 32 | + | ||
| 33 | + | ||
| 34 | + | if(texcolor.a > 0.9) { | |
| 35 | + | gl_FragColor.xyz *= max(1.0, height / sqrt(abs(abs(sqrt(v_Position.x * v_Position.x + v_Position.y * v_Position.y) / 8.0) - abs(mod(u_Time * speed, radius * 2.0) - radius)))); | |
| 36 | + | } | |
| 37 | + | if(gl_FragColor.a < 0.01) discard; | |
| 38 | + | } |
| @@ -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 | + |
| @@ -0,0 +1,37 @@ | |||
| 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 = 2.0; | |
| 10 | + | float height = 2.0; | |
| 11 | + | float radius = 5.0; | |
| 12 | + | // CONFIG END | |
| 13 | + | ||
| 14 | + | vec2 rotate(vec2 v, float a) { | |
| 15 | + | float s = sin(a); | |
| 16 | + | float c = cos(a); | |
| 17 | + | mat2 m = mat2(c, -s, s, c); | |
| 18 | + | return m * v; | |
| 19 | + | } | |
| 20 | + | ||
| 21 | + | void main() | |
| 22 | + | { | |
| 23 | + | gl_FragColor = texture2D(u_Tex0, v_TexCoord); | |
| 24 | + | vec4 texcolor = texture2D(u_Tex0, v_TexCoord2); | |
| 25 | + | if(texcolor.r > 0.9) { | |
| 26 | + | gl_FragColor *= texcolor.g > 0.9 ? u_Color[0] : u_Color[1]; | |
| 27 | + | } else if(texcolor.g > 0.9) { | |
| 28 | + | gl_FragColor *= u_Color[2]; | |
| 29 | + | } else if(texcolor.b > 0.9) { | |
| 30 | + | gl_FragColor *= u_Color[3]; | |
| 31 | + | } | |
| 32 | + | ||
| 33 | + | if(texcolor.a > 0.9) { | |
| 34 | + | gl_FragColor.xyz *= max(1.0, height / sqrt(abs(abs(sqrt(v_Position.x * v_Position.x + v_Position.y * v_Position.y) / 8.0) - abs(mod(u_Time * speed, radius * 2.0) - radius)))); | |
| 35 | + | } | |
| 36 | + | if(gl_FragColor.a < 0.01) discard; | |
| 37 | + | } |
| @@ -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 | + |
| @@ -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 * 2.0; | |
| 14 | + | } | |
| 15 | + | if(gl_FragColor.a < 0.01) discard; | |
| 16 | + | } |
| @@ -0,0 +1,24 @@ | |||
| 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 | + | ||
| 12 | + | vec2 effectTextureSize = vec2(720.0, 480.0); | |
| 13 | + | vec2 direction = vec2(1,-0.8); | |
| 14 | + | float speed = 15.0; | |
| 15 | + | ||
| 16 | + | void main() | |
| 17 | + | { | |
| 18 | + | vec2 offset = direction * speed * u_Time; | |
| 19 | + | gl_Position = vec4((u_ProjectionMatrix * u_TransformMatrix * vec3(a_Vertex.xy, 1.0)).xy, 1.0, 1.0); | |
| 20 | + | v_TexCoord = (u_TextureMatrix * vec3(a_TexCoord,1.0)).xy; | |
| 21 | + | v_TexCoord2 = (u_TextureMatrix * vec3(a_TexCoord + u_Offset,1.0)).xy; | |
| 22 | + | v_TexCoord3 = ((a_TexCoord + offset) / effectTextureSize); | |
| 23 | + | } | |
| 24 | + |
| @@ -0,0 +1,17 @@ | |||
| 1 | + | uniform mat4 u_Color; | |
| 2 | + | varying vec2 v_TexCoord; | |
| 3 | + | varying vec2 v_TexCoord2; | |
| 4 | + | uniform sampler2D u_Tex0; | |
| 5 | + | void main() | |
| 6 | + | { | |
| 7 | + | gl_FragColor = texture2D(u_Tex0, v_TexCoord); | |
| 8 | + | vec4 texcolor = texture2D(u_Tex0, v_TexCoord2); | |
| 9 | + | if(texcolor.r > 0.9) { | |
| 10 | + | gl_FragColor *= texcolor.g > 0.9 ? u_Color[0] : u_Color[1]; | |
| 11 | + | } else if(texcolor.g > 0.9) { | |
| 12 | + | gl_FragColor *= u_Color[2]; | |
| 13 | + | } else if(texcolor.b > 0.9) { | |
| 14 | + | gl_FragColor *= u_Color[3]; | |
| 15 | + | } | |
| 16 | + | if(gl_FragColor.a < 0.01) discard; | |
| 17 | + | } |
| @@ -0,0 +1,48 @@ | |||
| 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_WalkOffset; | |
| 11 | + | uniform vec2 u_Resolution; | |
| 12 | + | uniform vec2 u_Center; | |
| 13 | + | uniform float u_Time; | |
| 14 | + | ||
| 15 | + | void main() | |
| 16 | + | { | |
| 17 | + | vec2 vertex = a_Vertex; | |
| 18 | + | vec2 text = a_TexCoord; | |
| 19 | + | vec2 text2 = a_TexCoord; | |
| 20 | + | ||
| 21 | + | float outlineWidth = 1.0; | |
| 22 | + | ||
| 23 | + | if(vertex.x < u_Center.x) { | |
| 24 | + | vertex.x -= outlineWidth; | |
| 25 | + | text.x -= outlineWidth; | |
| 26 | + | } | |
| 27 | + | if(vertex.x > u_Center.x) { | |
| 28 | + | vertex.x += outlineWidth; | |
| 29 | + | text.x += outlineWidth; | |
| 30 | + | } | |
| 31 | + | if(vertex.y < u_Center.y) { | |
| 32 | + | vertex.y -= outlineWidth; | |
| 33 | + | text.y -= outlineWidth; | |
| 34 | + | } | |
| 35 | + | if(vertex.y > u_Center.y) { | |
| 36 | + | vertex.y += outlineWidth; | |
| 37 | + | text.y += outlineWidth; | |
| 38 | + | } | |
| 39 | + | gl_Position = vec4((u_ProjectionMatrix * u_TransformMatrix * vec3(vertex.xy, 1.0)).xy, 1.0, 1.0); | |
| 40 | + | v_Position = a_Vertex.xy - u_Center; | |
| 41 | + | v_TexCoord = (u_TextureMatrix * vec3(text, 1.0)).xy; | |
| 42 | + | // u_WalkOffset normalizado a espacio UV para suavizar el desplazamiento del outfit | |
| 43 | + | // y eliminar el salto de 32px al cruzar de un tile al siguiente. | |
| 44 | + | vec2 smoothWalkOutfit = u_WalkOffset / 32.0; | |
| 45 | + | v_TexCoord2 = (u_TextureMatrix * vec3(text + smoothWalkOutfit, 1.0)).xy; | |
| 46 | + | v_TexCoord3 = (u_TextureMatrix * vec3(text2, 1.0)).xy; | |
| 47 | + | } | |
| 48 | + |