image_vertex.frag

main 46 lines · 1.3 KB Raw
Alex Alex Commit Client Upload Part 1 19/10/2026 00:04
1attribute vec2 a_TexCoord;
2uniform mat3 u_TextureMatrix;
3varying vec2 v_TexCoord;
4varying vec2 v_TexCoord2;
5varying vec2 v_TexCoord3;
6attribute vec2 a_Vertex;
7uniform mat3 u_TransformMatrix;
8uniform mat3 u_ProjectionMatrix;
9uniform vec2 u_Offset;
10uniform vec2 u_Center;
11uniform float u_Time;
12
13vec2 effectTextureSize = vec2(480.0, 844.0);
14vec2 direction = vec2(1.0,1.0);
15float speed = 800.0;
16
17vec2 rotate(vec2 v, float a) {
18 float s = sin(a);
19 float c = cos(a);
20 mat2 m = mat2(c, -s, s, c);
21 return m * v;
22}
23
24void main()
25{
26 vec2 offset = direction * speed * u_Time;
27 gl_Position = vec4((u_ProjectionMatrix * u_TransformMatrix * vec3(a_Vertex.xy, 1.0)).xy, 1.0, 1.0);
28 v_TexCoord = (u_TextureMatrix * vec3(a_TexCoord,1.0)).xy;
29 v_TexCoord2 = (u_TextureMatrix * vec3(a_TexCoord + u_Offset,1.0)).xy;
30
31 vec2 vertex = a_Vertex;
32 if(vertex.x < u_Center.x) {
33 vertex.x = effectTextureSize.x / 10.0;
34 }
35 if(vertex.x > u_Center.x) {
36 vertex.x = effectTextureSize.x - effectTextureSize.x / 10.0;
37 }
38 if(vertex.y < u_Center.y) {
39 vertex.y = effectTextureSize.y / 10.0;
40 }
41 if(vertex.y > u_Center.y) {
42 vertex.y = effectTextureSize.y - effectTextureSize.y / 10.0;
43 }
44
45 v_TexCoord3 = ((vertex + direction * u_Time * speed) / effectTextureSize);
46}
Top