aboutsummaryrefslogtreecommitdiff
path: root/web/pw-frontend/public/static/shaders
diff options
context:
space:
mode:
authorIlion Beyst <ilion.beyst@gmail.com>2021-12-22 13:59:13 +0100
committerIlion Beyst <ilion.beyst@gmail.com>2021-12-22 13:59:13 +0100
commit96ee00242f350b391dcc1cf4d72a442c969f565e (patch)
treea9c57feb105200556c76559b3c775d159c98aef9 /web/pw-frontend/public/static/shaders
parent218ebc3b8f5024a0813f8378b83d91dbb9aa7db2 (diff)
downloadplanetwars.dev-96ee00242f350b391dcc1cf4d72a442c969f565e.tar.xz
planetwars.dev-96ee00242f350b391dcc1cf4d72a442c969f565e.zip
add pw-frontend
Diffstat (limited to 'web/pw-frontend/public/static/shaders')
-rw-r--r--web/pw-frontend/public/static/shaders/frag/image.glsl14
-rw-r--r--web/pw-frontend/public/static/shaders/frag/simple.glsl15
-rw-r--r--web/pw-frontend/public/static/shaders/frag/vor.glsl18
-rw-r--r--web/pw-frontend/public/static/shaders/vert/image.glsl33
-rw-r--r--web/pw-frontend/public/static/shaders/vert/simple.glsl36
-rw-r--r--web/pw-frontend/public/static/shaders/vert/vor.glsl43
6 files changed, 159 insertions, 0 deletions
diff --git a/web/pw-frontend/public/static/shaders/frag/image.glsl b/web/pw-frontend/public/static/shaders/frag/image.glsl
new file mode 100644
index 0000000..69c8b91
--- /dev/null
+++ b/web/pw-frontend/public/static/shaders/frag/image.glsl
@@ -0,0 +1,14 @@
+#ifdef GL_ES
+precision mediump float;
+#endif
+
+// Passed in from the vertex shader.
+varying vec2 v_texCoord;
+
+// The texture.
+uniform sampler2D u_texture;
+
+void main() {
+ gl_FragColor = texture2D(u_texture, v_texCoord);
+// gl_FragColor = vec4(0.7, 0.7, 0.0, 1.0);
+}
diff --git a/web/pw-frontend/public/static/shaders/frag/simple.glsl b/web/pw-frontend/public/static/shaders/frag/simple.glsl
new file mode 100644
index 0000000..1292569
--- /dev/null
+++ b/web/pw-frontend/public/static/shaders/frag/simple.glsl
@@ -0,0 +1,15 @@
+#ifdef GL_ES
+precision mediump float;
+#endif
+
+uniform float u_step_interval;
+uniform float u_time;
+uniform vec3 u_color;
+uniform vec3 u_color_next;
+
+void main() {
+
+ vec3 color = mix(u_color, u_color_next, u_time);
+
+ gl_FragColor = vec4(color, 1.0);
+}
diff --git a/web/pw-frontend/public/static/shaders/frag/vor.glsl b/web/pw-frontend/public/static/shaders/frag/vor.glsl
new file mode 100644
index 0000000..faaa68f
--- /dev/null
+++ b/web/pw-frontend/public/static/shaders/frag/vor.glsl
@@ -0,0 +1,18 @@
+#ifdef GL_ES
+precision mediump float;
+#endif
+
+#define PI 3.141592
+
+uniform float u_step_interval;
+uniform float u_time;
+uniform bool u_vor;
+
+varying float v_intensity;
+varying float v_dist;
+varying vec3 v_color;
+varying vec2 v_pos;
+
+void main() {
+ gl_FragColor = vec4(v_color, (1.0 - pow(1.0 - v_intensity, 1.23)) * 0.7);
+}
diff --git a/web/pw-frontend/public/static/shaders/vert/image.glsl b/web/pw-frontend/public/static/shaders/vert/image.glsl
new file mode 100644
index 0000000..5dd3f56
--- /dev/null
+++ b/web/pw-frontend/public/static/shaders/vert/image.glsl
@@ -0,0 +1,33 @@
+#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;
+
+varying vec2 v_pos;
+varying vec2 v_texCoord;
+
+void main() {
+ vec3 pos = vec3(a_position, 1.0);
+
+ pos = u_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;
+}
diff --git a/web/pw-frontend/public/static/shaders/vert/simple.glsl b/web/pw-frontend/public/static/shaders/vert/simple.glsl
new file mode 100644
index 0000000..935decf
--- /dev/null
+++ b/web/pw-frontend/public/static/shaders/vert/simple.glsl
@@ -0,0 +1,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;
+}
diff --git a/web/pw-frontend/public/static/shaders/vert/vor.glsl b/web/pw-frontend/public/static/shaders/vert/vor.glsl
new file mode 100644
index 0000000..75747c4
--- /dev/null
+++ b/web/pw-frontend/public/static/shaders/vert/vor.glsl
@@ -0,0 +1,43 @@
+#ifdef GL_ES
+precision mediump float;
+#endif
+
+attribute vec2 a_pos;
+attribute vec2 a_center;
+attribute float a_own;
+attribute float a_intensity;
+
+uniform vec3 u_planet_colours[$PLANETS * 2];
+uniform vec4 u_viewbox; // [x, y, width, height]
+uniform vec2 u_resolution;
+uniform float u_time;
+
+varying float v_intensity;
+varying float v_dist;
+varying vec2 v_pos;
+varying vec3 v_color;
+
+void main() {
+ v_intensity = a_intensity;
+ v_dist = distance(a_pos * u_resolution , a_center * u_resolution);
+
+ int own = int(a_own);
+
+ vec2 uv = a_pos;
+
+ // 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;
+
+ // v_pos = (uv.xy + 1.0) * 0.5;
+
+ if (own < 0) {
+ v_color = vec3(0., 0., 0.);
+ } else {
+ v_color = mix(u_planet_colours[own * 2], u_planet_colours[own * 2 + 1], u_time);
+ }
+
+ gl_Position = vec4(uv.xy, 0.0, 1.0);
+}