diff options
Diffstat (limited to 'gfx/gl/shaders')
| -rw-r--r-- | gfx/gl/shaders/networkCommon.glsl | 8 | ||||
| -rw-r--r-- | gfx/gl/shaders/networkCurve.tese | 6 | ||||
| -rw-r--r-- | gfx/gl/shaders/networkStraight.geom | 10 | ||||
| -rw-r--r-- | gfx/gl/shaders/networkStraight.vert | 11 |
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]); } |
