aboutsummaryrefslogtreecommitdiff
path: root/web/pw-frontend/public/static/shaders/vert/simple.glsl
blob: 935decfe7dcb512b08cb31c90d9a426c577f766d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#ifdef GL_ES
precision mediump float;
#endif

attribute vec2 a_position;
attribute vec2 a_texCoord;

uniform float u_time;

uniform vec4 u_viewbox;         // [x, y, width, height]
uniform vec2 u_resolution;
uniform mat3 u_trans;
uniform mat3 u_trans_next;

varying vec2 v_pos;
varying vec2 v_texCoord;

void main() {
    vec3 pos = vec3(a_position, 1.0);

    mat3 trans = (u_trans_next * (1.0 - u_time)) + (u_trans * u_time);

    pos = trans * pos;

    vec2 uv = pos.xy;

    // Viewbox's center is top left, a_position's is in the center to the screen
    // So translate and scale the viewbox**
    uv -= u_viewbox.xy + (u_viewbox.zw * 0.5);
    uv /= u_viewbox.zw * 0.5;

    v_pos = (uv.xy + 1.0) * 0.5;

    gl_Position = vec4(uv.xy, 0.0, 1.0);
    v_texCoord = a_texCoord;
}