summaryrefslogtreecommitdiff
path: root/gfx/gl/shaders/networkCurve.geom
diff options
context:
space:
mode:
authorDan Goodliffe <dan@randomdan.homeip.net>2026-01-31 12:02:06 +0000
committerDan Goodliffe <dan@randomdan.homeip.net>2026-01-31 13:47:50 +0000
commit1d77f1ca38f88b79a39b418fe3dc7899887d186a (patch)
tree03c59728039e1eaa56924d088a2b256f9a0cd2e0 /gfx/gl/shaders/networkCurve.geom
parentRename shader source in keeping with glsl expectations (diff)
downloadilt-1d77f1ca38f88b79a39b418fe3dc7899887d186a.tar.bz2
ilt-1d77f1ca38f88b79a39b418fe3dc7899887d186a.tar.xz
ilt-1d77f1ca38f88b79a39b418fe3dc7899887d186a.zip
Tidy networkCurve shaders
Arrays for start/end position/angle, smaller centre position, dynamic segment count based on max error, calculate distance in tessellation evaluation, use start/end position directly to avoid rounding errors at joins. See https://schneide.blog/2025/05/21/calculating-the-number-of-segments-for-accurate-circle-rendering/
Diffstat (limited to 'gfx/gl/shaders/networkCurve.geom')
-rw-r--r--gfx/gl/shaders/networkCurve.geom8
1 files changed, 5 insertions, 3 deletions
diff --git a/gfx/gl/shaders/networkCurve.geom b/gfx/gl/shaders/networkCurve.geom
index 1002fd4..4a5b3db 100644
--- a/gfx/gl/shaders/networkCurve.geom
+++ b/gfx/gl/shaders/networkCurve.geom
@@ -1,15 +1,17 @@
#version 460 core
+layout(lines) in;
+layout(triangle_strip, max_vertices = 10) out;
+
flat in ivec3 pos[];
flat in mat2 rot[];
flat in float tpos[];
+flat in float dist[];
-layout(lines) in;
-layout(triangle_strip, max_vertices = 10) out;
include(`networkCommon.glsl')
void
main()
{
- doSeg(segDist(pos[0], pos[1]), pos[0], pos[1], tpos[0], tpos[1], rot[0], rot[1]);
+ doSeg(min(dist[0], dist[1]), pos[0], pos[1], tpos[0], tpos[1], rot[0], rot[1]);
}