planet-wars/frontend/www/static/shaders/vert/simple.glsl

37 lines
785 B
Plaintext
Raw Normal View History

2019-09-17 18:19:04 +00:00
#ifdef GL_ES
precision mediump float;
#endif
attribute vec2 a_position;
attribute vec2 a_texCoord;
2019-09-17 18:19:04 +00:00
2019-09-20 15:48:00 +00:00
uniform float u_time;
2019-09-17 18:19:04 +00:00
uniform vec4 u_viewbox; // [x, y, width, height]
uniform vec2 u_resolution;
2019-09-19 15:52:48 +00:00
uniform mat3 u_trans;
2019-09-20 15:48:00 +00:00
uniform mat3 u_trans_next;
2019-09-17 18:19:04 +00:00
varying vec2 v_pos;
varying vec2 v_texCoord;
2019-09-17 18:19:04 +00:00
void main() {
2019-09-19 15:52:48 +00:00
vec3 pos = vec3(a_position, 1.0);
2019-09-17 18:19:04 +00:00
mat3 trans = (u_trans_next * (1.0 - u_time)) + (u_trans * u_time);
2019-09-20 15:48:00 +00:00
pos = trans * pos;
2019-09-17 18:19:04 +00:00
2019-09-19 15:52:48 +00:00
vec2 uv = pos.xy;
2019-09-17 18:19:04 +00:00
2019-09-19 15:52:48 +00:00
// 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;
2019-09-17 18:19:04 +00:00
2019-09-19 15:52:48 +00:00
v_pos = (uv.xy + 1.0) * 0.5;
gl_Position = vec4(uv.xy, 0.0, 1.0);
v_texCoord = a_texCoord;
2019-09-17 18:19:04 +00:00
}