summaryrefslogtreecommitdiff
path: root/data/shaders/path-frag.glsl
diff options
context:
space:
mode:
authorDavid Thompson <dthompson2@worcester.edu>2021-08-27 16:07:38 -0400
committerDavid Thompson <dthompson2@worcester.edu>2021-08-27 16:09:23 -0400
commit9b5d364add330fc18100491bf3c57316a27183f5 (patch)
tree7799b4b8ae3224a4bdd6e4ec82db796a12b4d5c7 /data/shaders/path-frag.glsl
parent9b6c5e3ba42eace457ce96600fecd31109e976ab (diff)
graphics: path: Separate fill/stroke into different shaders.
Diffstat (limited to 'data/shaders/path-frag.glsl')
-rw-r--r--data/shaders/path-frag.glsl93
1 files changed, 0 insertions, 93 deletions
diff --git a/data/shaders/path-frag.glsl b/data/shaders/path-frag.glsl
deleted file mode 100644
index 0288ae1..0000000
--- a/data/shaders/path-frag.glsl
+++ /dev/null
@@ -1,93 +0,0 @@
-// -*- mode: c -*-
-
-#ifdef GLSL330
-out vec4 fragColor;
-#endif
-
-#ifdef GLSL120
-varying vec2 fragTex;
-varying float fragStrokeLength;
-#else
-in vec2 fragTex;
-in float fragStrokeLength;
-#endif
-
-uniform int mode;
-uniform vec4 color;
-uniform float feather;
-uniform int strokeClosed;
-uniform float strokeWidth;
-uniform int strokeCap;
-uniform int strokeMiterStyle;
-uniform float strokeMiterLimit;
-
-float infinity = 1.0 / 0.0;
-
-void main(void) {
- if (color.a <= 0.0) {
- discard;
- }
-
- // fill mode
- if(mode == 0) {
-#ifdef GLSL330
- fragColor = color;
-#else
- gl_FragColor = color;
-#endif
- } else if(mode == 1) { // stroke mode
- float hw = strokeWidth / 2.0;
- float u = fragTex.x;
- float v = fragTex.y;
- float dx;
- float dy;
- float d;
-
- // Stroke caps.
- if (u < 0 || u > fragStrokeLength) {
- if (u < 0) {
- dx = abs(u);
- } else {
- dx = u - fragStrokeLength;
- }
- dy = abs(v);
-
- if (strokeCap == 0) { // none
- d = infinity;
- } else if (strokeCap == 1) { // butt
- d = max(dx + hw - 2 * feather, dy);
- } else if (strokeCap == 2) { // square
- d = max(dx, dy);
- } else if (strokeCap == 3) { // round
- d = sqrt(dx * dx + dy * dy);
- } else if (strokeCap == 4) { // triangle out
- d = dx + dy;
- } else if (strokeCap == 5) { // triangle in
- d = max(dy, hw - feather + dx - dy);
- }
- // Stroke inner/join
- } else {
- d = abs(v);
- }
-
- if(d <= hw) {
-#ifdef GLSL330
- fragColor = color;
-#else
- gl_FragColor = color;
-#endif
- } else {
- vec4 c = vec4(color.rgb, color.a * (1.0 - ((d - hw) / feather)));
-
- if (c.a <= 0.0) {
- discard;
- }
-
-#ifdef GLSL330
- fragColor = c;
-#else
- gl_FragColor = c;
-#endif
- }
- }
-}