diff options
author | David Thompson <dthompson2@worcester.edu> | 2021-08-27 16:07:38 -0400 |
---|---|---|
committer | David Thompson <dthompson2@worcester.edu> | 2021-08-27 16:09:23 -0400 |
commit | 9b5d364add330fc18100491bf3c57316a27183f5 (patch) | |
tree | 7799b4b8ae3224a4bdd6e4ec82db796a12b4d5c7 /data/shaders/path-frag.glsl | |
parent | 9b6c5e3ba42eace457ce96600fecd31109e976ab (diff) |
graphics: path: Separate fill/stroke into different shaders.
Diffstat (limited to 'data/shaders/path-frag.glsl')
-rw-r--r-- | data/shaders/path-frag.glsl | 93 |
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 - } - } -} |