From 71ee6c99e963d96286cae8d0bfc2f20a9c9c920b Mon Sep 17 00:00:00 2001 From: Ilion Beyst Date: Wed, 29 Dec 2021 22:54:30 +0100 Subject: move assets to visualizer package --- web/pw-frontend/public/static/res/assets/earth.svg | 114 ------------- web/pw-frontend/public/static/res/assets/font.png | Bin 912 -> 0 bytes .../public/static/res/assets/jupiter.svg | 118 ------------- .../public/static/res/assets/leaves.jpg | Bin 36902 -> 0 bytes web/pw-frontend/public/static/res/assets/mars.svg | 114 ------------- .../public/static/res/assets/neptune.svg | 186 --------------------- web/pw-frontend/public/static/res/assets/ship.svg | 78 --------- .../public/static/res/assets/uranus.svg | 150 ----------------- web/pw-frontend/public/static/res/assets/venus.svg | 114 ------------- .../public/static/shaders/frag/image.glsl | 14 -- .../public/static/shaders/frag/simple.glsl | 15 -- .../public/static/shaders/frag/vor.glsl | 18 -- .../public/static/shaders/vert/image.glsl | 33 ---- .../public/static/shaders/vert/simple.glsl | 36 ---- .../public/static/shaders/vert/vor.glsl | 43 ----- web/pw-frontend/vite.config.js | 4 + web/pw-visualizer/assets/res/earth.svg | 114 +++++++++++++ web/pw-visualizer/assets/res/font.png | Bin 0 -> 912 bytes web/pw-visualizer/assets/res/jupiter.svg | 118 +++++++++++++ web/pw-visualizer/assets/res/mars.svg | 114 +++++++++++++ web/pw-visualizer/assets/res/neptune.svg | 186 +++++++++++++++++++++ web/pw-visualizer/assets/res/ship.svg | 78 +++++++++ web/pw-visualizer/assets/res/uranus.svg | 150 +++++++++++++++++ web/pw-visualizer/assets/res/venus.svg | 114 +++++++++++++ web/pw-visualizer/assets/shaders/frag/image.glsl | 14 ++ web/pw-visualizer/assets/shaders/frag/simple.glsl | 15 ++ web/pw-visualizer/assets/shaders/frag/vor.glsl | 18 ++ web/pw-visualizer/assets/shaders/vert/image.glsl | 33 ++++ web/pw-visualizer/assets/shaders/vert/simple.glsl | 36 ++++ web/pw-visualizer/assets/shaders/vert/vor.glsl | 43 +++++ web/pw-visualizer/package.json | 2 +- web/pw-visualizer/src/asset_files.ts | 19 +++ web/pw-visualizer/src/assets.ts | 15 ++ web/pw-visualizer/src/index.ts | 23 ++- web/pw-visualizer/src/webgl/index.ts | 15 +- web/pw-visualizer/src/webgl/text.ts | 3 +- 36 files changed, 1099 insertions(+), 1048 deletions(-) delete mode 100644 web/pw-frontend/public/static/res/assets/earth.svg delete mode 100644 web/pw-frontend/public/static/res/assets/font.png delete mode 100644 web/pw-frontend/public/static/res/assets/jupiter.svg delete mode 100644 web/pw-frontend/public/static/res/assets/leaves.jpg delete mode 100644 web/pw-frontend/public/static/res/assets/mars.svg delete mode 100644 web/pw-frontend/public/static/res/assets/neptune.svg delete mode 100644 web/pw-frontend/public/static/res/assets/ship.svg delete mode 100644 web/pw-frontend/public/static/res/assets/uranus.svg delete mode 100644 web/pw-frontend/public/static/res/assets/venus.svg delete mode 100644 web/pw-frontend/public/static/shaders/frag/image.glsl delete mode 100644 web/pw-frontend/public/static/shaders/frag/simple.glsl delete mode 100644 web/pw-frontend/public/static/shaders/frag/vor.glsl delete mode 100644 web/pw-frontend/public/static/shaders/vert/image.glsl delete mode 100644 web/pw-frontend/public/static/shaders/vert/simple.glsl delete mode 100644 web/pw-frontend/public/static/shaders/vert/vor.glsl create mode 100644 web/pw-visualizer/assets/res/earth.svg create mode 100644 web/pw-visualizer/assets/res/font.png create mode 100644 web/pw-visualizer/assets/res/jupiter.svg create mode 100644 web/pw-visualizer/assets/res/mars.svg create mode 100644 web/pw-visualizer/assets/res/neptune.svg create mode 100644 web/pw-visualizer/assets/res/ship.svg create mode 100644 web/pw-visualizer/assets/res/uranus.svg create mode 100644 web/pw-visualizer/assets/res/venus.svg create mode 100644 web/pw-visualizer/assets/shaders/frag/image.glsl create mode 100644 web/pw-visualizer/assets/shaders/frag/simple.glsl create mode 100644 web/pw-visualizer/assets/shaders/frag/vor.glsl create mode 100644 web/pw-visualizer/assets/shaders/vert/image.glsl create mode 100644 web/pw-visualizer/assets/shaders/vert/simple.glsl create mode 100644 web/pw-visualizer/assets/shaders/vert/vor.glsl create mode 100644 web/pw-visualizer/src/asset_files.ts create mode 100644 web/pw-visualizer/src/assets.ts diff --git a/web/pw-frontend/public/static/res/assets/earth.svg b/web/pw-frontend/public/static/res/assets/earth.svg deleted file mode 100644 index f1be561..0000000 --- a/web/pw-frontend/public/static/res/assets/earth.svg +++ /dev/null @@ -1,114 +0,0 @@ - - - -image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/web/pw-frontend/public/static/res/assets/font.png b/web/pw-frontend/public/static/res/assets/font.png deleted file mode 100644 index 1724e0d..0000000 Binary files a/web/pw-frontend/public/static/res/assets/font.png and /dev/null differ diff --git a/web/pw-frontend/public/static/res/assets/jupiter.svg b/web/pw-frontend/public/static/res/assets/jupiter.svg deleted file mode 100644 index e5fcd0f..0000000 --- a/web/pw-frontend/public/static/res/assets/jupiter.svg +++ /dev/null @@ -1,118 +0,0 @@ - - - -image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/web/pw-frontend/public/static/res/assets/leaves.jpg b/web/pw-frontend/public/static/res/assets/leaves.jpg deleted file mode 100644 index 529b94e..0000000 Binary files a/web/pw-frontend/public/static/res/assets/leaves.jpg and /dev/null differ diff --git a/web/pw-frontend/public/static/res/assets/mars.svg b/web/pw-frontend/public/static/res/assets/mars.svg deleted file mode 100644 index d92851d..0000000 --- a/web/pw-frontend/public/static/res/assets/mars.svg +++ /dev/null @@ -1,114 +0,0 @@ - - - -image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/web/pw-frontend/public/static/res/assets/neptune.svg b/web/pw-frontend/public/static/res/assets/neptune.svg deleted file mode 100644 index 995d440..0000000 --- a/web/pw-frontend/public/static/res/assets/neptune.svg +++ /dev/null @@ -1,186 +0,0 @@ - - - -image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/web/pw-frontend/public/static/res/assets/ship.svg b/web/pw-frontend/public/static/res/assets/ship.svg deleted file mode 100644 index ee202ff..0000000 --- a/web/pw-frontend/public/static/res/assets/ship.svg +++ /dev/null @@ -1,78 +0,0 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - diff --git a/web/pw-frontend/public/static/res/assets/uranus.svg b/web/pw-frontend/public/static/res/assets/uranus.svg deleted file mode 100644 index fb192a4..0000000 --- a/web/pw-frontend/public/static/res/assets/uranus.svg +++ /dev/null @@ -1,150 +0,0 @@ - - - -image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/web/pw-frontend/public/static/res/assets/venus.svg b/web/pw-frontend/public/static/res/assets/venus.svg deleted file mode 100644 index 3bebb10..0000000 --- a/web/pw-frontend/public/static/res/assets/venus.svg +++ /dev/null @@ -1,114 +0,0 @@ - - - -image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/web/pw-frontend/public/static/shaders/frag/image.glsl b/web/pw-frontend/public/static/shaders/frag/image.glsl deleted file mode 100644 index 69c8b91..0000000 --- a/web/pw-frontend/public/static/shaders/frag/image.glsl +++ /dev/null @@ -1,14 +0,0 @@ -#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 deleted file mode 100644 index 1292569..0000000 --- a/web/pw-frontend/public/static/shaders/frag/simple.glsl +++ /dev/null @@ -1,15 +0,0 @@ -#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 deleted file mode 100644 index faaa68f..0000000 --- a/web/pw-frontend/public/static/shaders/frag/vor.glsl +++ /dev/null @@ -1,18 +0,0 @@ -#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 deleted file mode 100644 index 5dd3f56..0000000 --- a/web/pw-frontend/public/static/shaders/vert/image.glsl +++ /dev/null @@ -1,33 +0,0 @@ -#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 deleted file mode 100644 index 935decf..0000000 --- a/web/pw-frontend/public/static/shaders/vert/simple.glsl +++ /dev/null @@ -1,36 +0,0 @@ -#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 deleted file mode 100644 index 75747c4..0000000 --- a/web/pw-frontend/public/static/shaders/vert/vor.glsl +++ /dev/null @@ -1,43 +0,0 @@ -#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); -} diff --git a/web/pw-frontend/vite.config.js b/web/pw-frontend/vite.config.js index 84889ec..68e02e2 100644 --- a/web/pw-frontend/vite.config.js +++ b/web/pw-frontend/vite.config.js @@ -22,5 +22,9 @@ export default defineConfig({ "/api/": "http://localhost:5000", "/ws": "ws://localhost:5000/ws", }, + fs: { + // Allow serving files from one level up to the project root + allow: ['..'] + } }, }) diff --git a/web/pw-visualizer/assets/res/earth.svg b/web/pw-visualizer/assets/res/earth.svg new file mode 100644 index 0000000..f1be561 --- /dev/null +++ b/web/pw-visualizer/assets/res/earth.svg @@ -0,0 +1,114 @@ + + + +image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/pw-visualizer/assets/res/font.png b/web/pw-visualizer/assets/res/font.png new file mode 100644 index 0000000..1724e0d Binary files /dev/null and b/web/pw-visualizer/assets/res/font.png differ diff --git a/web/pw-visualizer/assets/res/jupiter.svg b/web/pw-visualizer/assets/res/jupiter.svg new file mode 100644 index 0000000..e5fcd0f --- /dev/null +++ b/web/pw-visualizer/assets/res/jupiter.svg @@ -0,0 +1,118 @@ + + + +image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/pw-visualizer/assets/res/mars.svg b/web/pw-visualizer/assets/res/mars.svg new file mode 100644 index 0000000..d92851d --- /dev/null +++ b/web/pw-visualizer/assets/res/mars.svg @@ -0,0 +1,114 @@ + + + +image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/pw-visualizer/assets/res/neptune.svg b/web/pw-visualizer/assets/res/neptune.svg new file mode 100644 index 0000000..995d440 --- /dev/null +++ b/web/pw-visualizer/assets/res/neptune.svg @@ -0,0 +1,186 @@ + + + +image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/pw-visualizer/assets/res/ship.svg b/web/pw-visualizer/assets/res/ship.svg new file mode 100644 index 0000000..ee202ff --- /dev/null +++ b/web/pw-visualizer/assets/res/ship.svg @@ -0,0 +1,78 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/web/pw-visualizer/assets/res/uranus.svg b/web/pw-visualizer/assets/res/uranus.svg new file mode 100644 index 0000000..fb192a4 --- /dev/null +++ b/web/pw-visualizer/assets/res/uranus.svg @@ -0,0 +1,150 @@ + + + +image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/pw-visualizer/assets/res/venus.svg b/web/pw-visualizer/assets/res/venus.svg new file mode 100644 index 0000000..3bebb10 --- /dev/null +++ b/web/pw-visualizer/assets/res/venus.svg @@ -0,0 +1,114 @@ + + + +image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/pw-visualizer/assets/shaders/frag/image.glsl b/web/pw-visualizer/assets/shaders/frag/image.glsl new file mode 100644 index 0000000..69c8b91 --- /dev/null +++ b/web/pw-visualizer/assets/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-visualizer/assets/shaders/frag/simple.glsl b/web/pw-visualizer/assets/shaders/frag/simple.glsl new file mode 100644 index 0000000..1292569 --- /dev/null +++ b/web/pw-visualizer/assets/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-visualizer/assets/shaders/frag/vor.glsl b/web/pw-visualizer/assets/shaders/frag/vor.glsl new file mode 100644 index 0000000..faaa68f --- /dev/null +++ b/web/pw-visualizer/assets/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-visualizer/assets/shaders/vert/image.glsl b/web/pw-visualizer/assets/shaders/vert/image.glsl new file mode 100644 index 0000000..5dd3f56 --- /dev/null +++ b/web/pw-visualizer/assets/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-visualizer/assets/shaders/vert/simple.glsl b/web/pw-visualizer/assets/shaders/vert/simple.glsl new file mode 100644 index 0000000..935decf --- /dev/null +++ b/web/pw-visualizer/assets/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-visualizer/assets/shaders/vert/vor.glsl b/web/pw-visualizer/assets/shaders/vert/vor.glsl new file mode 100644 index 0000000..75747c4 --- /dev/null +++ b/web/pw-visualizer/assets/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); +} diff --git a/web/pw-visualizer/package.json b/web/pw-visualizer/package.json index bbeb6d2..8f48c74 100644 --- a/web/pw-visualizer/package.json +++ b/web/pw-visualizer/package.json @@ -7,7 +7,7 @@ "build": "vite build", "build-wasm": "wasm-pack build ../planetwars-rs --target web" }, - "files": ["src"], + "files": ["src", "assets"], "main": "src/index.ts", "devDependencies": { "@originjs/vite-plugin-commonjs": "^1.0.1", diff --git a/web/pw-visualizer/src/asset_files.ts b/web/pw-visualizer/src/asset_files.ts new file mode 100644 index 0000000..dfd222c --- /dev/null +++ b/web/pw-visualizer/src/asset_files.ts @@ -0,0 +1,19 @@ +declare module "*.svg" { + const url: string; + export default url; +} + +declare module "*.png" { + const url: string; + export default url; +} + +declare module "*.glsl" { + const url: string; + export default url; +} + +declare module "*.glsl?url" { + const url: string; + export default url; +} \ No newline at end of file diff --git a/web/pw-visualizer/src/assets.ts b/web/pw-visualizer/src/assets.ts new file mode 100644 index 0000000..e04f2c1 --- /dev/null +++ b/web/pw-visualizer/src/assets.ts @@ -0,0 +1,15 @@ +export {default as shipSvg} from "../assets/res/ship.svg"; + +export {default as earthSvg} from "../assets/res/earth.svg"; +export {default as marsSvg} from "../assets/res/mars.svg"; +export {default as venusSvg} from "../assets/res/venus.svg"; + +export {default as fontPng} from "../assets/res/font.png"; + +export {default as imageFragmentShader} from "../assets/shaders/frag/image.glsl?url"; +export {default as simpleFragmentShader} from "../assets/shaders/frag/simple.glsl?url"; +export {default as vorFragmentShader} from "../assets/shaders/frag/vor.glsl?url"; + +export {default as imageVertexShader} from "../assets/shaders/vert/image.glsl?url"; +export {default as simpleVertexShader} from "../assets/shaders/vert/simple.glsl?url"; +export {default as vorVertexShader} from "../assets/shaders/vert/vor.glsl?url"; \ No newline at end of file diff --git a/web/pw-visualizer/src/index.ts b/web/pw-visualizer/src/index.ts index 363a1c5..df2c3c2 100644 --- a/web/pw-visualizer/src/index.ts +++ b/web/pw-visualizer/src/index.ts @@ -27,6 +27,7 @@ import { VertexBuffer, IndexBuffer } from "./webgl/buffer"; import { VertexBufferLayout, VertexArray } from "./webgl/vertexBufferLayout"; import { defaultLabelFactory, LabelFactory, Align, Label } from "./webgl/text"; import { VoronoiBuilder } from "./voronoi/voronoi"; +import * as assets from "./assets"; // svg-mesh requires global to exist (window as any).global = window; @@ -585,34 +586,38 @@ var meshes: Mesh[]; var shaders: Dictionary; export async function set_instance(source: string): Promise { + // TODO: embed shader programs if (!meshes || !shaders) { - const mesh_promises = ["ship.svg", "earth.svg", "mars.svg", "venus.svg"] - .map((name) => "/static/res/assets/" + name) - .map(url_to_mesh); + const mesh_promises = [ + assets.shipSvg, + assets.earthSvg, + assets.marsSvg, + assets.venusSvg, + ].map(url_to_mesh); const shader_promies = [ (async () => <[string, ShaderFactory]>[ "normal", await ShaderFactory.create_factory( - "/static/shaders/frag/simple.glsl", - "/static/shaders/vert/simple.glsl" + assets.simpleFragmentShader, + assets.simpleVertexShader, ), ])(), (async () => <[string, ShaderFactory]>[ "vor", await ShaderFactory.create_factory( - "/static/shaders/frag/vor.glsl", - "/static/shaders/vert/vor.glsl" + assets.vorFragmentShader, + assets.vorVertexShader, ), ])(), (async () => <[string, ShaderFactory]>[ "image", await ShaderFactory.create_factory( - "/static/shaders/frag/image.glsl", - "/static/shaders/vert/simple.glsl" + assets.imageFragmentShader, + assets.simpleVertexShader, ), ])(), ]; diff --git a/web/pw-visualizer/src/webgl/index.ts b/web/pw-visualizer/src/webgl/index.ts index fdb7886..1742713 100644 --- a/web/pw-visualizer/src/webgl/index.ts +++ b/web/pw-visualizer/src/webgl/index.ts @@ -4,15 +4,22 @@ import { VertexBuffer, IndexBuffer } from './buffer'; import { VertexArray, VertexBufferLayout } from './vertexBufferLayout'; import { Renderer } from './renderer'; import { Texture } from './texture'; +import * as assets from "../assets"; -const URL = window.location.origin+window.location.pathname; -const LOCATION = URL.substring(0, URL.lastIndexOf("/") + 1); +// const URL = window.location.origin+window.location.pathname; +// const LOCATION = URL.substring(0, URL.lastIndexOf("/") + 1); async function create_texture_from_svg(gl: WebGLRenderingContext, name: string, path: string, width: number, height: number): Promise { const [mesh, factory] = await Promise.all([ url_to_mesh(path), - ShaderFactory.create_factory(LOCATION + "static/shaders/frag/static_color.glsl", LOCATION + "static/shaders/vert/svg.glsl") + ShaderFactory.create_factory( + // assets.simpleFragmentShader, + // assets.simpleVertexShader, + // TODO: previously: this was the old code, which was not working. + // what is the correct shader here? + "static/shaders/frag/static_color.glsl", "static/shaders/vert/svg.glsl" + ) ]); const program = factory.create_shader(gl); @@ -54,7 +61,7 @@ async function main() { console.log(Math.max(...mesh.positions), Math.min(...mesh.positions)); const renderer = new Renderer(); - const factory = await ShaderFactory.create_factory(LOCATION + "static/shaders/frag/static_color.glsl", LOCATION + "static/shaders/vert/simple.glsl"); + const factory = await ShaderFactory.create_factory(assets.simpleFragmentShader, assets.simpleVertexShader); const program = factory.create_shader(gl); var positionBuffer = new VertexBuffer(gl, mesh.positions); diff --git a/web/pw-visualizer/src/webgl/text.ts b/web/pw-visualizer/src/webgl/text.ts index 3f1cec6..fdfbc55 100644 --- a/web/pw-visualizer/src/webgl/text.ts +++ b/web/pw-visualizer/src/webgl/text.ts @@ -4,6 +4,7 @@ import { Texture } from "./texture"; import { DefaultRenderable } from "./renderer"; import { IndexBuffer, VertexBuffer } from "./buffer"; import { VertexBufferLayout, VertexArray } from "./vertexBufferLayout"; +import { fontPng } from "../assets"; export enum Align { @@ -188,5 +189,5 @@ export function defaultLabelFactory(gl: WebGLRenderingContext, shader: Shader): }, }; - return new LabelFactory(gl, '/static/res/assets/font.png', fontInfo, shader); + return new LabelFactory(gl, fontPng, fontInfo, shader); } -- cgit v1.2.3