From 4ed72e263bf2b2d52fcfd7641e0aa8fc0dd65dd6 Mon Sep 17 00:00:00 2001 From: jgk Date: Fri, 12 Mar 2021 17:35:13 +0100 Subject: [PATCH] Implement varying width in bezierQuad --- shader/bezierQuad.frag | 17 ++++++++++++++--- shader/bezierQuad.geom | 5 ++++- src/Dodge/Rendering.hs | 2 +- 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/shader/bezierQuad.frag b/shader/bezierQuad.frag index 5e415103e..47b0565a6 100644 --- a/shader/bezierQuad.frag +++ b/shader/bezierQuad.frag @@ -8,12 +8,23 @@ float x = gBoundingBox.x; float y = gBoundingBox.y; float z = gBoundingBox.z; +float w = 0.1; + +float f (float a, float b) +{ + float c = 1 / (1 - 2*b) ; + return c * (a - 0.5) + 0.5 ; +} void main() { + //float d = x - y - 1 + 2* sqrt(y); float d = sqrt(x) + sqrt(y) - 1; -// if ( d < -0.1 || d > 0.1) { discard; } + float e = sqrt(f(x,w)) + sqrt(f(y,w)) - 1; + if ( d < 0 || e > 0) { discard; } fColor = gColor; - if ( d < -z*0.1 || d > z*0.1) { fColor = vec4 (0,1,0,1); } - if ( d < -0.1 || d > 0.1) { fColor = vec4 (0,0,1,1); } +// if ( d < 0) { fColor = vec4 (0,1,0,1); } +// if ( e > 0) { fColor = vec4 (0,0,1,1); } +// if ( d < z*z*0.0 || d > z*z*0.1+ 0.5) { fColor = vec4 (0,1,0,1); } +// if ( d < -0.1 || d > 0.1) { fColor = vec4 (0,0,1,1); } } diff --git a/shader/bezierQuad.geom b/shader/bezierQuad.geom index cb4d56003..670a30abd 100644 --- a/shader/bezierQuad.geom +++ b/shader/bezierQuad.geom @@ -11,11 +11,14 @@ void main() vec3 pb = gl_in[1].gl_Position.xyz; vec3 pc = gl_in[2].gl_Position.xyz; +// vec3 pa = vec3(paa.xy + 0.1 * (paa.xy - pca.xy), paa.z); +// vec3 pc = vec3(pca.xy + 0.1 * (pca.xy - paa.xy), pca.z); + gBoundingBox = vec3 (1,0,1); gColor = vColor[0]; gl_Position = vec4 (pa, 1); EmitVertex(); - gBoundingBox = vec3 (0,0,-0.9); + gBoundingBox = vec3 (0,0,0); gColor = vColor[1]; gl_Position = vec4 (pb, 1); EmitVertex(); diff --git a/src/Dodge/Rendering.hs b/src/Dodge/Rendering.hs index 353d9110a..f73a0221c 100644 --- a/src/Dodge/Rendering.hs +++ b/src/Dodge/Rendering.hs @@ -121,7 +121,7 @@ worldPictures w where tst x y sc t = translate x y $ scale sc sc $ color white $ text t testPic :: World -> [Picture] -testPic w = [setLayer 1 $ onLayerL [99] $ color red $ bezierQuad (-90,0) (90,-50) (-200,200) ] +testPic w = [setLayer 1 $ onLayerL [99] $ color red $ bezierQuad (-200,200) (-200,-200) (200,200) ] -- $ uncurry translate (mouseWorldPos w)