From 35a9f035963458156c719dc16f4073b8244d66eb Mon Sep 17 00:00:00 2001
From: Dan Goodliffe <dan@randomdan.homeip.net>
Date: Sat, 20 Jan 2024 23:27:01 +0000
Subject: Pass curve link radius, no recalculate, its constant

---
 gfx/gl/shaders/networkCurve.gs | 4 ++--
 gfx/gl/shaders/networkCurve.vs | 3 +++
 2 files changed, 5 insertions(+), 2 deletions(-)

(limited to 'gfx/gl')

diff --git a/gfx/gl/shaders/networkCurve.gs b/gfx/gl/shaders/networkCurve.gs
index 82d8c59..d373c0c 100644
--- a/gfx/gl/shaders/networkCurve.gs
+++ b/gfx/gl/shaders/networkCurve.gs
@@ -6,6 +6,7 @@ flat in ivec3 cpos[];
 flat in float reps[];
 flat in float aangle[];
 flat in float bangle[];
+flat in float radius[];
 
 layout(points) in;
 layout(triangle_strip, max_vertices = 255) out;
@@ -24,7 +25,6 @@ void
 main()
 {
 	float segs = floor(255 / (profile.length() * 2));
-	float radius = distance(cpos[0], apos[0]);
 	vec3 arcstep = vec3((bangle[0] - aangle[0]), // angle
 						   reps[0], // texture
 						   (bpos[0].z - apos[0].z)) // height
@@ -35,7 +35,7 @@ main()
 	float prevTex = 0;
 	for (vec3 arc = arcstep; arc.y < reps[0] - 0.01; arc += arcstep) {
 		mat2 rot = getRot(arc.x + aangle[0]);
-		ivec3 pos = cpos[0] + ivec3(rot * vec2(radius, 0), arc.z);
+		ivec3 pos = cpos[0] + ivec3(rot * vec2(radius[0], 0), arc.z);
 		float tex = arc.y;
 		doSeg(segDist(prevPos, pos), pos, prevPos, tex, prevTex, rot, prevRot);
 		prevPos = pos;
diff --git a/gfx/gl/shaders/networkCurve.vs b/gfx/gl/shaders/networkCurve.vs
index 6c56e93..f51bb87 100644
--- a/gfx/gl/shaders/networkCurve.vs
+++ b/gfx/gl/shaders/networkCurve.vs
@@ -6,6 +6,7 @@ layout(location = 2) in ivec3 v_centre;
 layout(location = 3) in float v_reps;
 layout(location = 4) in float v_aangle;
 layout(location = 5) in float v_bangle;
+layout(location = 6) in float v_radius;
 
 flat out ivec3 apos;
 flat out ivec3 bpos;
@@ -13,6 +14,7 @@ flat out ivec3 cpos;
 flat out float reps;
 flat out float aangle;
 flat out float bangle;
+flat out float radius;
 
 void
 main()
@@ -23,4 +25,5 @@ main()
 	reps = v_reps;
 	aangle = v_aangle;
 	bangle = v_bangle;
+	radius = v_radius;
 }
-- 
cgit v1.2.3