summaryrefslogtreecommitdiff
path: root/gfx/gl/shaders
diff options
context:
space:
mode:
authorDan Goodliffe <dan@randomdan.homeip.net>2026-01-31 14:20:08 +0000
committerDan Goodliffe <dan@randomdan.homeip.net>2026-01-31 14:20:08 +0000
commit44ceac7cc09ddbd06302c639128088ba0a4b2530 (patch)
treeb72ec7920738132166daab88b6fdb895819dac04 /gfx/gl/shaders
parentTidy networkCurve shaders (diff)
downloadilt-44ceac7cc09ddbd06302c639128088ba0a4b2530.tar.bz2
ilt-44ceac7cc09ddbd06302c639128088ba0a4b2530.tar.xz
ilt-44ceac7cc09ddbd06302c639128088ba0a4b2530.zip
Make similar array tidy-up to networkStraight shaders
And merge common functionality from networkCurve.
Diffstat (limited to 'gfx/gl/shaders')
-rw-r--r--gfx/gl/shaders/networkCommon.glsl8
-rw-r--r--gfx/gl/shaders/networkCurve.tese6
-rw-r--r--gfx/gl/shaders/networkStraight.geom10
-rw-r--r--gfx/gl/shaders/networkStraight.vert11
4 files changed, 19 insertions, 16 deletions
diff --git a/gfx/gl/shaders/networkCommon.glsl b/gfx/gl/shaders/networkCommon.glsl
index 4ff24e8..7aa911d 100644
--- a/gfx/gl/shaders/networkCommon.glsl
+++ b/gfx/gl/shaders/networkCommon.glsl
@@ -12,9 +12,15 @@ out vec2 texCoord;
out vec3 rposition;
float
+viewPointDist(const ivec3 position)
+{
+ return length(vec3(viewPoint - position));
+}
+
+float
segDist(const ivec3 a, const ivec3 b)
{
- return min(length(vec3(viewPoint - a)), length(vec3(viewPoint - b)));
+ return min(viewPointDist(a), viewPointDist(b));
}
ifelse(
diff --git a/gfx/gl/shaders/networkCurve.tese b/gfx/gl/shaders/networkCurve.tese
index 82e6a13..9cc31e2 100644
--- a/gfx/gl/shaders/networkCurve.tese
+++ b/gfx/gl/shaders/networkCurve.tese
@@ -2,8 +2,6 @@
layout(isolines, equal_spacing, cw) in;
-uniform ivec3 viewPoint;
-
flat in ivec3 c_pos[][2];
flat in ivec2 c_cpos[];
flat in float c_reps[];
@@ -18,6 +16,8 @@ flat out float dist;
const float startTolerance = 1. / 200.;
const float endTolerance = 1. - startTolerance;
+include(`networkCommon.glsl')
+
mat2
getRot(float angle)
{
@@ -41,5 +41,5 @@ main()
}
tpos = c_reps[0] * gl_TessCoord.x;
- dist = length(vec3(viewPoint - pos));
+ dist = viewPointDist(pos);
}
diff --git a/gfx/gl/shaders/networkStraight.geom b/gfx/gl/shaders/networkStraight.geom
index 6abcecb..a0e57c8 100644
--- a/gfx/gl/shaders/networkStraight.geom
+++ b/gfx/gl/shaders/networkStraight.geom
@@ -1,17 +1,17 @@
#version 460 core
-flat in ivec3 apos[];
-flat in ivec3 bpos[];
+layout(points) in;
+layout(triangle_strip, max_vertices = 10) out;
+
+flat in ivec3 pos[][2];
flat in mat2 rot[];
flat in float reps[];
flat in float dist[];
-layout(points) in;
-layout(triangle_strip, max_vertices = 10) out;
include(`networkCommon.glsl')
void
main()
{
- doSeg(dist[0], apos[0], bpos[0], 0.f, reps[0], rot[0], rot[0]);
+ doSeg(dist[0], pos[0][0], pos[0][1], 0.f, reps[0], rot[0], rot[0]);
}
diff --git a/gfx/gl/shaders/networkStraight.vert b/gfx/gl/shaders/networkStraight.vert
index 2834613..91ba955 100644
--- a/gfx/gl/shaders/networkStraight.vert
+++ b/gfx/gl/shaders/networkStraight.vert
@@ -1,12 +1,10 @@
#version 460 core
-layout(location = 0) in ivec3 v_apos;
-layout(location = 1) in ivec3 v_bpos;
+layout(location = 0) in ivec3 v_pos[2];
layout(location = 2) in mat2 v_rot;
layout(location = 4) in float v_reps;
-flat out ivec3 apos;
-flat out ivec3 bpos;
+flat out ivec3 pos[2];
flat out mat2 rot;
flat out float reps;
flat out float dist;
@@ -16,9 +14,8 @@ include(`networkCommon.glsl')
void
main()
{
- apos = v_apos;
- bpos = v_bpos;
+ pos = v_pos;
rot = v_rot;
reps = v_reps;
- dist = segDist(v_apos, v_bpos);
+ dist = segDist(v_pos[0], v_pos[1]);
}