diff options
| author | Dan Goodliffe <dan@randomdan.homeip.net> | 2026-01-31 12:02:06 +0000 |
|---|---|---|
| committer | Dan Goodliffe <dan@randomdan.homeip.net> | 2026-01-31 13:47:50 +0000 |
| commit | 1d77f1ca38f88b79a39b418fe3dc7899887d186a (patch) | |
| tree | 03c59728039e1eaa56924d088a2b256f9a0cd2e0 /gfx/gl/shaders/networkCurve.geom | |
| parent | Rename shader source in keeping with glsl expectations (diff) | |
| download | ilt-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.geom | 8 |
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]); } |
