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

44 lines
1,022 B
Text
Raw Normal View History

2019-09-24 14:29:13 +02:00
#ifdef GL_ES
precision mediump float;
#endif
attribute vec2 a_pos;
2020-04-20 15:03:59 +02:00
attribute vec2 a_center;
2020-04-18 16:52:17 +02:00
attribute float a_own;
2020-04-20 10:31:20 +02:00
attribute float a_intensity;
2019-09-24 14:29:13 +02:00
2020-04-18 16:52:17 +02:00
uniform vec3 u_planet_colours[$PLANETS * 2];
2019-09-24 14:29:13 +02:00
uniform vec4 u_viewbox; // [x, y, width, height]
uniform vec2 u_resolution;
2020-04-19 19:59:40 +02:00
uniform float u_time;
2019-09-24 14:29:13 +02:00
2020-04-20 10:31:20 +02:00
varying float v_intensity;
2020-04-20 15:03:59 +02:00
varying float v_dist;
2019-09-24 14:29:13 +02:00
varying vec2 v_pos;
2020-04-18 16:52:17 +02:00
varying vec3 v_color;
2019-09-24 14:29:13 +02:00
void main() {
2020-04-20 10:31:20 +02:00
v_intensity = a_intensity;
2020-04-20 15:03:59 +02:00
v_dist = distance(a_pos * u_resolution , a_center * u_resolution);
2020-04-18 16:52:17 +02:00
int own = int(a_own);
2019-09-24 14:29:13 +02:00
2020-04-18 16:52:17 +02:00
vec2 uv = a_pos;
2019-09-24 14:29:13 +02:00
// Viewbox's center is top left, a_position's is in the center to the screen
// So translate and scale the viewbox**
2020-04-18 16:52:17 +02:00
uv -= u_viewbox.xy + (u_viewbox.zw * 0.5);
uv /= u_viewbox.zw * 0.5;
2020-04-19 19:59:40 +02:00
v_pos = uv.xy;
2019-09-24 14:29:13 +02:00
2020-04-19 19:59:40 +02:00
// v_pos = (uv.xy + 1.0) * 0.5;
2020-04-18 16:52:17 +02:00
if (own < 0) {
v_color = vec3(0., 0., 0.);
} else {
2020-04-19 19:59:40 +02:00
v_color = mix(u_planet_colours[own * 2], u_planet_colours[own * 2 + 1], u_time);
2020-04-18 16:52:17 +02:00
}
gl_Position = vec4(uv.xy, 0.0, 1.0);
2019-09-24 14:29:13 +02:00
}