pouët.net

Go to bottom

Rendering a bezier curve on the GPU

category: code [glöplog]
I found this shader on glslsandbox : http://glslsandbox.com/e#40709.0

It renders a bezier curve by calculating closest distance between a point and a curve.

I was wondering if there was a mathematical way to calculate another value (let's call it T) which will indicate how far we are from start and end point of the curve :

Example (red is curve)

That pair of values (distance + T) could be used like X/Y axis. Eg : to map a texture on the curve : something like this
added on the 2017-06-02 12:50:45 by Tigrou Tigrou
Tigrou: for quadratic there is a closed formula for "t" as well. Most shader just don't use it. Try this https://www.shadertoy.com/view/ltXSDB and you can see in sdBezier function "t" is actually calculated. Later it is additionally compared if endpoints are closer - than you just set "t" to 0 or 1. It's just not returned.

For cubic: usually some form of iterative bisection is used and you also calculate "t" along the way,like here: https://www.shadertoy.com/view/4sXyDr. Again,you should be able to easily return it as well.
added on the 2017-06-02 15:13:31 by tomkh tomkh
Thanks for your help.
I have adapted code a little bit. It's far from perfect, there is glitches near start / end points and near middle point with hairpin turns.
Note : you need a texture in iChannel0 to make it work.

Code:// Signed Distance to a Quadratic Bezier Curve // - Adam Simmons (@adamjsimmons) 2015 // // License Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License // // Inspired by http://www.pouet.net/topic.php?which=9119 // and various shaders by iq, T21, and demofox // // I needed the -signed- distance to a quadratic bezier // curve but couldn't find any examples online that // were both fast and precise. This is my solution. // // v1 - Initial release // v2 - Faster and more robust sign computation // // Test if point p crosses line (a, b), returns sign of result float testCross(vec2 a, vec2 b, vec2 p) { return sign((b.y-a.y) * (p.x-a.x) - (b.x-a.x) * (p.y-a.y)); } // Determine which side we're on (using barycentric parameterization) float signBezier(vec2 A, vec2 B, vec2 C, vec2 p) { vec2 a = C - A, b = B - A, c = p - A; vec2 bary = vec2(c.x*b.y-b.x*c.y,a.x*c.y-c.x*a.y) / (a.x*b.y-b.x*a.y); vec2 d = vec2(bary.y * 0.5, 0.0) + 1.0 - bary.x - bary.y; return mix(sign(d.x * d.x - d.y), mix(-1.0, 1.0, step(testCross(A, B, p) * testCross(B, C, p), 0.0)), step((d.x - d.y), 0.0)) * testCross(A, C, B); } // Solve cubic equation for roots vec3 solveCubic(float a, float b, float c) { float p = b - a*a / 3.0, p3 = p*p*p; float q = a * (2.0*a*a - 9.0*b) / 27.0 + c; float d = q*q + 4.0*p3 / 27.0; float offset = -a / 3.0; if(d >= 0.0) { float z = sqrt(d); vec2 x = (vec2(z, -z) - q) / 2.0; vec2 uv = sign(x)*pow(abs(x), vec2(1.0/3.0)); return vec3(offset + uv.x + uv.y); } float v = acos(-sqrt(-27.0 / p3) * q / 2.0) / 3.0; float m = cos(v), n = sin(v)*1.732050808; return vec3(m + m, -n - m, n - m) * sqrt(-p / 3.0) + offset; } vec2 min2(vec2 a, vec2 b) { if(a.x < b.x) return vec2(a.x, a.y); else return vec2(b.x, b.y); } // Find the signed distance from a point to a bezier curve vec2 sdBezier(vec2 A, vec2 B, vec2 C, vec2 p) { B = mix(B + vec2(1e-4), B, abs(sign(B * 2.0 - A - C))); vec2 a = B - A, b = A - B * 2.0 + C, c = a * 2.0, d = A - p; vec3 k = vec3(3.*dot(a,b),2.*dot(a,a)+dot(d,b),dot(d,a)) / dot(b,b); vec3 tc = solveCubic(k.x, k.y, k.z); vec3 t = clamp(tc, 0.0, 1.0); vec2 pos = A + (c + b*t.x)*t.x; vec2 dis = vec2(length(pos - p), tc.x); pos = A + (c + b*t.y)*t.y; dis = min2(dis, vec2(length(pos - p), tc.y)); pos = A + (c + b*t.z)*t.z; dis = min2(dis, vec2(length(pos - p), tc.z)); return vec2(dis.x * signBezier(A, B, C, p), dis.y); } void mainImage( out vec4 fragColor, in vec2 fragCoord ) { vec2 p = (2.0*fragCoord.xy-iResolution.xy)/iResolution.y; vec2 m = (2.0*iMouse.xy-iResolution.xy)/iResolution.y; // Define the control points of our curve vec2 A = vec2(0.0, -0.6), C = vec2(0.0, +0.6), B = (4.0 * m - A - C) / 2.0; // Render the control points float d = min(distance(p, A),(min(distance(p, m),distance(p, C)))); if (d < 0.04) { fragColor = vec4(1.0 - smoothstep(0.025, 0.034, d)); return; } // Get the signed distance to bezier curve vec2 uv = sdBezier(A, B, C, p); // Visualize the distance field if(abs(uv.x) < 0.3) fragColor = texture(iChannel0, uv); else fragColor = vec4(0.0); }
added on the 2017-06-02 17:09:33 by Tigrou Tigrou
I cannot check/compile right now,but shouldn't you use clamped "t" (not "tc") passed to min2 as well?
Also min2 could be just return (a.x<b.x)?a:b; but that is just minor of course.
added on the 2017-06-02 19:04:02 by tomkh tomkh
Tigrou: ok, I see the problem now (after compiling). You have to clamp "t" for endpoints like I said,but treat areas that are closer to endpoints a bit differently - you could try to extended "t" in angular space (using atan2 or something).
As for glitches in the middle: of course if the curvature is bigger than 1/width you will have discontinuities, also I see some precision issues there,but I think you cannot really do much about it :/
added on the 2017-06-02 19:33:48 by tomkh tomkh
Or even better: extend "t" by projecting to straight lines extending the curve at endpoints.
added on the 2017-06-02 19:35:58 by tomkh tomkh
This is what I mean:
Code: // Based on: // Signed Distance to a Quadratic Bezier Curve // - Adam Simmons (@adamjsimmons) 2015 // https://www.shadertoy.com/view/ltXSDB // Solve cubic equation for roots vec3 solveCubic(float a, float b, float c) { float p = b - a*a / 3.0, p3 = p*p*p; float q = a * (2.0*a*a - 9.0*b) / 27.0 + c; float d = q*q + 4.0*p3 / 27.0; float offset = -a / 3.0; if(d >= 0.0) { float z = sqrt(d); vec2 x = (vec2(z, -z) - q) / 2.0; vec2 uv = sign(x)*pow(abs(x), vec2(1.0/3.0)); return vec3(offset + uv.x + uv.y); } float v = acos(-sqrt(-27.0 / p3) * q / 2.0) / 3.0; float m = cos(v), n = sin(v)*1.732050808; return vec3(m + m, -n - m, n - m) * sqrt(-p / 3.0) + offset; } // Signed distance to cubic bezier with parametrization. // Tom'2017 // returns vec4( // unsigned distance to clamped curve, // signed distance to extended curve, // extended t ) vec3 sdBezier(vec2 A, vec2 B, vec2 C, vec2 p) { B = mix(B + vec2(1e-4), B, abs(sign(B * 2.0 - A - C))); vec2 a = B - A, b = A - B * 2.0 + C, c = a * 2.0, d = A - p; vec3 k = vec3(3.*dot(a,b),2.*dot(a,a)+dot(d,b),dot(d,a)) / dot(b,b); vec3 t = clamp(solveCubic(k.x, k.y, k.z), 0.0, 1.0); vec2 dp1 = d + (c + b*t.x)*t.x; float d1 = dot(dp1, dp1); vec2 dp2 = d + (c + b*t.y)*t.y; float d2 = dot(dp2, dp2); // note: 3rd root is actually never closest, we can just ignore it // Find closest distance and t vec2 r = (d1 < d2) ? vec2(d1, t.x) : vec2(d2, t.y); // Find on which side (t=0 or t=1) is extension vec2 e = vec2(step(0.,-r.y),step(1.,r.y)); // Calc. gradient vec2 g = 2.*b*r.y + c; // Calc. extension to t float et = (e.x*dot(-d,g) + e.y*dot(p-C,g))/dot(g,g); // Find closest point on curve with extension vec2 dp = d + (c + b*r.y)*r.y + et*g; // Sign is just cross product with gradient float s = sign(g.x*dp.y - g.y*dp.x); return vec3(sqrt(r.x), s*length(dp), r.y + et); } void mainImage( out vec4 fragColor, in vec2 fragCoord ) { vec2 p = (2.0*fragCoord.xy-iResolution.xy)/iResolution.y; vec2 m = (2.0*iMouse.xy-iResolution.xy)/iResolution.y; // Define the control points of our curve vec2 A = vec2(0.0, -0.6), C = vec2(0.0, +0.6), B = (4.0 * m - A - C) / 2.0; // Render the control points float d = min(distance(p, A),(min(distance(p, m),distance(p, C)))); if (d < 0.04) { fragColor = vec4(1.0 - smoothstep(0.025, 0.034, d)); return; } // Get the signed distance to bezier curve vec3 r = sdBezier(A, B, C, p); vec2 uv = r.yz; // Visualize the distance field fragColor = texture(iChannel0, uv)*smoothstep(.5,.4,r.x); }

(again you need to add texture of course)
added on the 2017-06-03 01:38:06 by tomkh tomkh
Thanks. Not only it works but it is also lot simpler. Good job.
added on the 2017-06-03 01:44:04 by Tigrou Tigrou
Of course you can make it even simpler version, but without calculating distance to endpoints (open-ended):
Code: // Signed distance to open-ended quadratic bezier with parametrization. // Tom'2017 // returns vec4( unsigned distance, signed distance, t ) vec3 sdBezier(vec2 A, vec2 B, vec2 C, vec2 p) { B = mix(B + vec2(1e-4), B, abs(sign(B * 2.0 - A - C))); vec2 a = B - A, b = A - B * 2.0 + C, c = a * 2.0, d = A - p; vec3 k = vec3(3.*dot(a,b),2.*dot(a,a)+dot(d,b),dot(d,a)) / dot(b,b); vec3 t = solveCubic(k.x, k.y, k.z); vec2 dp1 = d + (c + b*t.x)*t.x; float d1 = dot(dp1, dp1); vec2 dp2 = d + (c + b*t.y)*t.y; float d2 = dot(dp2, dp2); vec4 r = (d1 < d2) ? vec4(d1, t.x, dp1) : vec4(d2, t.y, dp2); // Calc. gradient vec2 g = 2.*b*r.y + c; // Sign is just cross product with gradient float s = sign(g.x*r.w - g.y*r.z); float dist = sqrt(r.x); return vec3(dist, s*dist, r.y); }


The question is the use-case. Obviously, more advanced version should support a path of connected curves, which is another story - I'm too tired to try ;)
added on the 2017-06-03 02:29:21 by tomkh tomkh
Ok, ok, as long as gradients are continuous on joints, multiple connected curves should work just fine with previous version.
You can just check which curve segment is closer (using unsigned distance), and also yeah, when two join, the second one should have t+1 to maintain continuity.
added on the 2017-06-03 03:07:32 by tomkh tomkh
This is the source code for 3D Quadratic Bezier, both approximate and exact though cubic solver.

tomkh, look a the code, it shows how to connect different segments to create an arbitrary curve: https://www.shadertoy.com/view/ldj3Wh

I copy here the relevant code from that link. It returns the closest distance, and also the parameter along the curve.

Code: // The MIT License // Copyright © 2013 Inigo Quilez vec2 sdBezier(vec3 A, vec3 B, vec3 C, vec3 pos) { vec3 a = B - A; vec3 b = A - 2.0*B + C; vec3 c = a * 2.0; vec3 d = A - pos; float kk = 1.0 / dot(b,b); float kx = kk * dot(a,b); float ky = kk * (2.0*dot(a,a)+dot(d,b)) / 3.0; float kz = kk * dot(d,a); vec2 res; float p = ky - kx*kx; float p3 = p*p*p; float q = kx*(2.0*kx*kx - 3.0*ky) + kz; float h = q*q + 4.0*p3; if(h >= 0.0) { h = sqrt(h); vec2 x = (vec2(h, -h) - q) / 2.0; vec2 uv = sign(x)*pow(abs(x), vec2(1.0/3.0)); float t = uv.x + uv.y - kx; t = clamp( t, 0.0, 1.0 ); // 1 root vec3 qos = d + (c + b*t)*t; res = vec2( length(qos),t); } else { float z = sqrt(-p); float v = acos( q/(p*z*2.0) ) / 3.0; float m = cos(v); float n = sin(v)*1.732050808; vec3 t = vec3(m + m, -n - m, n - m) * z - kx; t = clamp( t, 0.0, 1.0 ); // 3 roots vec3 qos = d + (c + b*t.x)*t.x; float dis = dot(qos,qos); res = vec2(dis,t.x); qos = d + (c + b*t.y)*t.y; dis = dot(qos,qos); if( dis<res.x ) res = vec2(dis,t.y ); qos = d + (c + b*t.z)*t.z; dis = dot(qos,qos); if( dis<res.x ) res = vec2(dis,t.z ); res.x = sqrt( res.x ); } return res; }
added on the 2017-06-04 07:01:39 by iq iq
I forgot to link to the image that gets rendered by that code and shader:
[img]data:image/png;base64,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
added on the 2017-06-04 07:08:54 by iq iq
Holly shit, that worked with the "preview" button, but not with the actual display. Sorry for that. Maybe an admin can delete that post and this one??
added on the 2017-06-04 07:10:50 by iq iq
That's an epic post, Iñigo. :D
added on the 2017-06-04 08:58:31 by ham ham
WHAT the HELL happened there, IQ?
added on the 2017-06-04 10:13:48 by Foebane72 Foebane72
iq: surely I know your shader for 3d quadratic bezier.

The thing is the question was about 2d and I believe sign might be useful there. While in 3d, sign doesn't make any sense.

BTW actually I'm pretty sure you don't need 3rd root, apparently it's never closer than other roots. I have no proof/reference "why", but I guess it's because there is only one critical point and consequently only two candidates for the closest point.
So, you could simplify your code a little bit to safe just a few cycles:
Code: // calculate 2 roots and just ignore the 3rd vec2 t = vec2(m + m, -n - m) * z - kx; t = clamp( t, 0.0, 1.0 ); vec3 dp1 = d + (c + b*t.x)*t.x; float d1 = dot(dp1,dp1); vec3 dp2 = d + (c + b*t.y)*t.y; float d2 = dot(dp2,dp2); res = (d1<d2) ? vec2(d1,t.x) : vec2(d2,t.y);


That's basically what I did already in a previous example (and here).

On a side note: are you obsessed by getting credit for all the code that is using 1st grade algebra or something? ;)
added on the 2017-06-04 11:36:57 by tomkh tomkh
If anyone cares: here is my derivation with a little hand-wavy explanation why 3rd root is unnecessary. The formulas obviously works for 3d as well, because it's just scalar products. It's really trivial/basic math.
added on the 2017-06-04 14:33:49 by tomkh tomkh
Quote:
Holly shit, that worked with the "preview" button, but not with the actual display.

Post size limits are the reason we have image hosting services :)
added on the 2017-06-04 18:07:23 by Gargaj Gargaj
Code:echo parse_message( substr( $_POST["message"], 0, 65535 ) );

So 64k ought to be enough for anybody? ;)
added on the 2017-06-04 20:28:21 by tomaes tomaes
an "Edit" button would be an interesting feature too...
added on the 2017-06-05 00:28:30 by Tigrou Tigrou
Except Gargaj loves to have "dirt" on anyone just in case they will run for presidency one day ;)
I would actually record keystrokes already in "post" window and whatever you type should be irreversibly recorded - posted on not!

But I understand - nobody is paid to develop this forum, so mostly kidding.
added on the 2017-06-05 00:58:00 by tomkh tomkh
tomkh, cool observation about the need for 2 roots only. Proving it will be a nice game to play some night. In practice it doesn't save that much performance, but eh, free performance is free and if it's more mathematically elegant, why not. Have you given the prove any try so far?
added on the 2017-06-06 05:29:16 by iq iq
Hey tomkh, how can I reach you out? I modified your shader a bit to show which regions of the plane has which root as closest point, and I see some interesting effects/patterns/errors_may_be. I sent you a message in twitter, let me know if there's a better way to reach you
added on the 2017-06-06 05:56:36 by iq iq
iq: for the proof, I would start simply with root finding formula and proof 3rd root is always between other two.
Just by looking at cubic formula, we can see that roots are eventually found as follows:
phi = acos( x )/3 for some "x", assuming "x" can be anywhere within -1..1 range, phi is between 0..pi/3 range,
t1 = s*cos(phi) - o, for some positive "s"
t2 = s*cos(phi + 2pi/3) - o
t3 = s*cos(phi + 4pi/3) - o
Now it is trivial (left as an excercise;)) to show that for all phi in 0..pi/3:
cos(phi) <= cos(phi + 4pi/3) <= cos(phi + 2pi/3)
Therefore t1 <= t3 <= t2.

So now we know t3 is always between t1 and t2. Now we have to show that f(t3) (point at a root) is never closer than f(t1) and f(t2). And here I don't know :)

Somehow we have to proof that for all t1,t2 and t3: f(t).f'(t)=0, where t in {t1,t2,t3} implies f(t1).f(t1) <= f(t3).f(t3) <= f(t2).f(t2). Maybe it's not that hard, but I need more time to sort it out.
added on the 2017-06-06 18:27:55 by tomkh tomkh

login

Go to top