diff --git a/frontend/www/src/voronoi/voronoi.ts b/frontend/www/src/voronoi/voronoi.ts index 8b896a6..81cf490 100644 --- a/frontend/www/src/voronoi/voronoi.ts +++ b/frontend/www/src/voronoi/voronoi.ts @@ -34,7 +34,7 @@ function build_point_map(es: Voronoi.HalfEdge[]): (point: Point) => Point { const start = edge.getStartpoint(); const end = edge.getEndpoint(); - if (dist(start, end) < 0.1 * mean) { // These points have to be merged + if (dist(start, end) < 0.03 * mean) { // These points have to be merged const middle = { 'x': (start.x + end.x) / 2, 'y': (start.y + end.y) / 2 }; map[to_key(start)] = middle; map[to_key(end)] = middle; @@ -71,6 +71,7 @@ export class VoronoiBuilder { const layout = new VertexBufferLayout(); layout.push(gl.FLOAT, 2, 4, "a_pos"); + layout.push(gl.FLOAT, 2, 4, "a_center"); layout.push(gl.FLOAT, 1, 4, "a_own"); layout.push(gl.FLOAT, 1, 4, "a_intensity"); @@ -107,6 +108,7 @@ export class VoronoiBuilder { const centerId = vertCount++; + attrs.push(cell.site.x, cell.site.y); attrs.push(cell.site.x, cell.site.y); attrs.push(planetId); attrs.push(1); @@ -132,11 +134,13 @@ export class VoronoiBuilder { ids.push(centerId); ids.push(vertCount++); attrs.push(start.x, start.y); + attrs.push(cell.site.x, cell.site.y); attrs.push(planetId); attrs.push(0); ids.push(vertCount++); attrs.push(center.x, center.y); + attrs.push(cell.site.x, cell.site.y); attrs.push(planetId); attrs.push(0); @@ -145,6 +149,7 @@ export class VoronoiBuilder { ids.push(vertCount++); attrs.push(end.x, end.y); + attrs.push(cell.site.x, cell.site.y); attrs.push(planetId); attrs.push(0); } @@ -152,7 +157,6 @@ export class VoronoiBuilder { this.inner.updateIndexBuffer(gl, ids); this.inner.updateVAOBuffer(gl, 0, attrs); - // this.inner.updateVAOBuffer(gl, 1, attrs); console.log(`Vor things took ${new Date().getTime() - start} ms!`) } diff --git a/frontend/www/static/shaders/frag/vor.glsl b/frontend/www/static/shaders/frag/vor.glsl index 44a8ecd..faaa68f 100644 --- a/frontend/www/static/shaders/frag/vor.glsl +++ b/frontend/www/static/shaders/frag/vor.glsl @@ -2,16 +2,17 @@ precision mediump float; #endif -uniform vec3 u_planet_colours[$PLANETS * 2]; +#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, v_intensity * 0.7); + gl_FragColor = vec4(v_color, (1.0 - pow(1.0 - v_intensity, 1.23)) * 0.7); } diff --git a/frontend/www/static/shaders/vert/vor.glsl b/frontend/www/static/shaders/vert/vor.glsl index b61d4e4..75747c4 100644 --- a/frontend/www/static/shaders/vert/vor.glsl +++ b/frontend/www/static/shaders/vert/vor.glsl @@ -3,6 +3,7 @@ precision mediump float; #endif attribute vec2 a_pos; +attribute vec2 a_center; attribute float a_own; attribute float a_intensity; @@ -12,11 +13,14 @@ 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;