That transition to 3D at 5:25 was so smooth. You're truly a great teacher and getting super good at making informative videos Iñigo! Keep it up, can't wait to see what you do next. :)
Hi, just a huge thanks for making these. These kind of resources on the web are often way too "mathematical" (too fast, with too many "implied" shortcuts). You managed to make it sound very clear. Also, HUGE bravo to integrating the actual examples/rendering. Finally, this is a 7min long video, which is perfect ! Not too short/fast, not too long/digressing. In a word : thank you. And keep these coming (please) :)
I was literally just reading about this stuff, what perfect timing! These presentations are seriously the most elegant I've ever seen. Keep up the good work!
Yes. Inigo explains content amazingly well and sometimes I need to pause his videos and google stuff to remember. Math for CG would be awesome. This one I would be happy to contribute on patreon.
Excellent again. I'm impressed by how you used your ladybug shader and seamlessly transitioned to the exploded primitives. Very informative and illuminating. One thing: You could render your videos at 4k for even better visuals, if this doesn't clash with your render schedule, hard drive space or upload time, of course. 4k monitors are pretty cheap these days and doing what you do, you should definitely have one, so get one if you don't have one yet. That said, 4k is a decidedly _minor_ quality improvement for your videos as your videos are technically exquisite, something the mere quadrupling of pixels cannot compete with.
My main workbmonitor is 4k. My webcam (for the hand writing stuff) and phone do 1080p only though, so I assumed that doing 4k just for the CG elements while the rrst is 1080p wouldn't pay off. I can give it a try though and see what it looks like.
Thank you for making this video. I like the way to present these things, especially when you started talking about the extrusions. I just figured out the dot product, and so when I saw it, I totally understood what you were doing. Seeing you explain the equations makes total sense, they seem so cryptic on your website.
The statement about the 4:00, modern HW strictly depends on the target architecture, for example using some modern, but low-end 8-bit RISC CPU will very likely end up doing it as branching (as most likely IEEE754 will be software emulated on it anyway). But reducing branching is not just a feat of CISC x86, small RISC CPUs still might be able to do it directly just it will specifically depend on which architecture they use. For example RISC-V RV32IMF CPU would have dedicated instruction for min and max (fmin.s and fmax.s) even when it's not perfectly IEEE754 standard as extra exception IEEE754 checks would have to be made in SW, in practice you would probably check for NaN inputs on top of the SDF, make sure you wouldn't cause the NaN to be generated in the algorithm and then wouldn't have to do the checks on every single min/max etc.... Again these are architecture specific, RV32IMF will do it without braching, RV32IM will implement it as branching. Overall using min/max is best way to deal with this even when it doesn't guarantee removal of branching on all target architectures. And to go further very likely toolchain can recognize the simple if condition and if it can be implement through min/max then it will use it instead anyway. In generally one side it's good on high level to not bother about micro-optimisations on low-level, but in rendering and other types of applications still knowing bit about the low-level helps making better 'design' desitions on the high level.
After Effects' default camera tracking. I then pass the camera matrix to my Shadertoy plugin and the rest is regular (and realtime!) shader based raymarching and rendering.
Blown. Question, we treat the equation as if it were from the origin then? As in, we somehow transform the point p from where it’s being evaluated in world space to a local space? Or it was only for explanation purposes? Great vid, thanks a lot.
They are arbitrary valued parameters, they control the amplitude of the oscillations (b, since it's multiplying the sin wave) and how far from the spine of the line they are located (a, since it's being added to the sine wave).
Inigo, do you think it's possible to convert an arbitrary standard 3D geometry model to a single composition of SDFs and vice-versa? And I don't mean SDFs represented as 3D volume textures, but actual SD functions aggregated into a single giant SDF composite, hence an analytical representation. I think the usefulness of such a tool speaks for itself.
In short: Signed Distance Field -> a function that returns for any point in 3D space the distance to the nearest surface. Signed because it's usually negative inside the surface.
Thanks, I am starting with SDF for fluid interface dynamic, can you pass me a good book to start? I'm physicist and I've made simulations before with steady boundaries. This is a new world for me.
Is it allpay.net or allpaid.com or some other? I'm just curious in general to know which one it is that allows for exchange between mainland china and the west.
Hola Inigo, gracias por el contenido y explicacion, espero que subas mas videos. Me gustaria preguntarte: que tarjeta de video GPU/CPU, RAM, etc, tienes en tu PC para animaciones y rendering? Saludos!
The distance d in the paper-formula is an absolute value, but the code implementation can return negative values. What's the expected domain of the returned d? shall it be allowed to take negative values? I understand that the sign could be exploited to differentiate internal points from external points, is it the idea?
I can't seem to find a video that explains the importance of Minimizing the branching can someone explain it briefly or point out a ressource that will do it?
GPU will "perform" both branches by group of threads. Even if it is false branch. So, you just waisting resources. It is price for parallelism. Google "lockstep gpu branching"
From watching your videos, I get the impression that SDF seem to have many advantages over triangulation. Why is it not used broadly? (Or is it and I just don't know?). Do we not have an efficient way to render them, like triangles?
on some potato computers like mine its way laggier to do however advantages are that you dont really need to worry about LOD. And you can also do pathtracing easily.
Deriving the SDF of a Line Segment - 1 dislike Rounding Corners in SDFs - 1 dislike Deriving the SDF of a Box - 1 dislike ....ahaha, who is that one the same guy? :D ...1000 likes and 1 dislike. Probably someone miss button
Great video could you please mention which software you used to make math into 3d is it Unreal engine /Unity or something else Thanks for the tutorial Jesus loves you
That last bit, the extrusion, blew my mind.
That transition to 3D at 5:25 was so smooth. You're truly a great teacher and getting super good at making informative videos Iñigo! Keep it up, can't wait to see what you do next. :)
benefit of being an expert in computer graphic
The insights per second rating of this video is off the charts.
This channel deserves so much more attention than it's getting...
Hi, just a huge thanks for making these. These kind of resources on the web are often way too "mathematical" (too fast, with too many "implied" shortcuts). You managed to make it sound very clear. Also, HUGE bravo to integrating the actual examples/rendering. Finally, this is a 7min long video, which is perfect ! Not too short/fast, not too long/digressing.
In a word : thank you. And keep these coming (please) :)
I was literally just reading about this stuff, what perfect timing! These presentations are seriously the most elegant I've ever seen. Keep up the good work!
Where You reading?
Had I known you could do all of these cool stuff with numbers, I would've taken my math class more seriously.
Thank you for this treat!
You definetely can make some cources "Math for CG", you are great on explaining complex things in an easy way
Yes.
Inigo explains content amazingly well and sometimes I need to pause his videos and google stuff to remember.
Math for CG would be awesome.
This one I would be happy to contribute on patreon.
wow that last section blew my mind. very cool!
Excellent again. I'm impressed by how you used your ladybug shader and seamlessly transitioned to the exploded primitives. Very informative and illuminating. One thing: You could render your videos at 4k for even better visuals, if this doesn't clash with your render schedule, hard drive space or upload time, of course. 4k monitors are pretty cheap these days and doing what you do, you should definitely have one, so get one if you don't have one yet. That said, 4k is a decidedly _minor_ quality improvement for your videos as your videos are technically exquisite, something the mere quadrupling of pixels cannot compete with.
My main workbmonitor is 4k. My webcam (for the hand writing stuff) and phone do 1080p only though, so I assumed that doing 4k just for the CG elements while the rrst is 1080p wouldn't pay off. I can give it a try though and see what it looks like.
Priceless content imo.
you are a wizard of maths and computations
I just found this channel and I'm amazed at the quality of your content! I'm so excited to watch more of these videos, thanks for making them!
Very nice explanation and visualizations!
Thanks man!
Great explanation. I like the format of these tutorials
Thank you! Please create more such short clips on SDF - this is mind blowing and amazing
This was a really great video! Thanks a lot for sharing this knowledge in such refined and well developed form!
Thank you for making this video. I like the way to present these things, especially when you started talking about the extrusions. I just figured out the dot product, and so when I saw it, I totally understood what you were doing. Seeing you explain the equations makes total sense, they seem so cryptic on your website.
Amazing presentation!
Magnificent as usual, iq!
Amazing! It would be nice to have a video about the capsule capIntersect() function.
This is beautifully done.
what an amazing human -
Thanks for this. This will probably save me somuch rendertime.
That. Was. Awesome.
The statement about the 4:00, modern HW strictly depends on the target architecture, for example using some modern, but low-end 8-bit RISC CPU will very likely end up doing it as branching (as most likely IEEE754 will be software emulated on it anyway). But reducing branching is not just a feat of CISC x86, small RISC CPUs still might be able to do it directly just it will specifically depend on which architecture they use. For example RISC-V RV32IMF CPU would have dedicated instruction for min and max (fmin.s and fmax.s) even when it's not perfectly IEEE754 standard as extra exception IEEE754 checks would have to be made in SW, in practice you would probably check for NaN inputs on top of the SDF, make sure you wouldn't cause the NaN to be generated in the algorithm and then wouldn't have to do the checks on every single min/max etc.... Again these are architecture specific, RV32IMF will do it without braching, RV32IM will implement it as branching. Overall using min/max is best way to deal with this even when it doesn't guarantee removal of branching on all target architectures. And to go further very likely toolchain can recognize the simple if condition and if it can be implement through min/max then it will use it instead anyway. In generally one side it's good on high level to not bother about micro-optimisations on low-level, but in rendering and other types of applications still knowing bit about the low-level helps making better 'design' desitions on the high level.
God I love these videos
Stunning.
This is gold.
Thanks!
That sketch in the beginning reminds me of Casey's GJK talk very much, voronoi regions!
Потрясающе
Amazing, thanks for sharing.
Thanks!
Great job!
You are a true math wizard
Could you please do one of these for the Bezier curve sdf
So good! What is your workflow for tracking the camera movements?
After Effects' default camera tracking. I then pass the camera matrix to my Shadertoy plugin and the rest is regular (and realtime!) shader based raymarching and rendering.
Whats the document camera u r using? Thanks for the video
Very good!
Amazing
There are articles or books about this topic? Where I find more informations about SDFs.
Blown.
Question, we treat the equation as if it were from the origin then? As in, we somehow transform the point p from where it’s being evaluated in world space to a local space? Or it was only for explanation purposes?
Great vid, thanks a lot.
At 4:59, the capsule is made wavy by the equation: d` = d - (a + b * sin(8 * PI * h))
What are 'a' and 'b' in this equation?
They are arbitrary valued parameters, they control the amplitude of the oscillations (b, since it's multiplying the sin wave) and how far from the spine of the line they are located (a, since it's being added to the sine wave).
@@InigoQuilez Makes total sense. You are amazing btw!
this is cool 👍👍👍👍👍
I can't believe I didn't see this earlier
Inigo, do you think it's possible to convert an arbitrary standard 3D geometry model to a single composition of SDFs and vice-versa? And I don't mean SDFs represented as 3D volume textures, but actual SD functions aggregated into a single giant SDF composite, hence an analytical representation. I think the usefulness of such a tool speaks for itself.
Sorry for my silly question, but what does SDF means in maths ?
en.wikipedia.org/wiki/Signed_distance_function
In short: Signed Distance Field -> a function that returns for any point in 3D space the distance to the nearest surface.
Signed because it's usually negative inside the surface.
Mind blown! I assume you work in CG full time?
Thanks, I am starting with SDF for fluid interface dynamic, can you pass me a good book to start? I'm physicist and I've made simulations before with steady boundaries. This is a new world for me.
Suggestion reading about this topic SDF please.
Not a good introduction, but once you are a bit familiar with SDFs, you can read this too: iquilezles.org/www/articles/raymarchingdf/raymarchingdf.htm
i will donate on alipay,i dont have paypal
Is it allpay.net or allpaid.com or some other? I'm just curious in general to know which one it is that allows for exchange between mainland china and the west.
This is arcane wizardry
I gotta get better at this stuff lol, my first and second versions were way slower running than yours
I see Inigo Quilez name everywhere... Now, I understand why. I must ask, which software you used for this 3d creations?
I use shadertoy.com for thr bulk of it (so GLSL) and a bit of C++ on top.
Hola Inigo, gracias por el contenido y explicacion, espero que subas mas videos.
Me gustaria preguntarte: que tarjeta de video GPU/CPU, RAM, etc, tienes en tu PC para animaciones y rendering?
Saludos!
Hola. Tengo in laptop Asus con 8GB de RAM, con una GeForce 1070 Mobile.
The background music makes it hard to hear you.
The distance d in the paper-formula is an absolute value, but the code implementation can return negative values. What's the expected domain of the returned d? shall it be allowed to take negative values? I understand that the sign could be exploited to differentiate internal points from external points, is it the idea?
Yes, it tells if the point is inside or outside the surface.
I can't seem to find a video that explains the importance of Minimizing the branching can someone explain it briefly or point out a ressource that will do it?
GPU will "perform" both branches by group of threads. Even if it is false branch. So, you just waisting resources. It is price for parallelism. Google "lockstep gpu branching"
From watching your videos, I get the impression that SDF seem to have many advantages over triangulation. Why is it not used broadly? (Or is it and I just don't know?). Do we not have an efficient way to render them, like triangles?
on some potato computers like mine its way laggier to do however advantages are that you dont really need to worry about LOD. And you can also do pathtracing easily.
What exactly does SDF stand for? Google shows weird stuff and it's never really being explained in the video or in the video description.
It's Signed Distance Fields : www.iquilezles.org/www/articles/raymarchingdf/raymarchingdf.htm
Quick question. For the modulation how do you get a float value (d') from multiplying a vec (a,b)?
In d' = d - (a+b*4*h*(1-h)+c*cos(10*h+4*time)+... al constants a, b, c, ... are scalars (float values)
@@InigoQuilez a and b are not vertices? Or are they unrelated to a,b,h in the diagram?
@@shifter65 They are unrelated. Uppercases are vectors, lowercase is escalars.
@@InigoQuilez Oh, i see! Is h also unrelated?
Or is it the same value we calculate from the projection?
WOW what tools are used for such animations on the paper
he mentioned in a stream that he uses a After Effects script that lets him use his shadertoy shaders inside after effects, and somehow composit them.
@@NikolaNevenov86 That's exactly right. I just use Shadertoy to do all the visuals and glue them to the webcam footage with After Effects
Wow... How can you integrate camera tracking data into your shader? This is great tho XD
Hi. I responded in some other comment above or below this one. But basically I get it from After Effects and I pass it in a matrix.
@@InigoQuilez wow... That's really great :D... Thank for making such a great content XD
What is SDF?
A Person I had the same question and found signed distance function en.wikipedia.org/wiki/Signed_distance_function
Signed Distance Field
developer.nvidia.com/gpugems/gpugems3/part-v-physics-simulation/chapter-34-signed-distance-fields-using-single-pass-gpu
More (practical info) in my website. Download the PDF in the link in the article: www.iquilezles.org/www/material/nvscene2008/nvscene2008.htm
Deriving the SDF of a Line Segment
- 1 dislike
Rounding Corners in SDFs - 1 dislike
Deriving the SDF of a Box - 1 dislike
....ahaha, who is that one the same guy? :D ...1000 likes and 1 dislike. Probably someone miss button
Great video could you please mention which software you used to make math into 3d is it Unreal engine /Unity or something else
Thanks for the tutorial
Jesus loves you
I use shadertoy.com. You have a link to the painting in the description of the video.
canela
you're a fuckin' genius, but i'm sure you know that xD
If you turn off the background music it would help a lot
You say line segment, but the pill shape is 3D... Hmm
A line segments is a straight line connecting two points in 3D. Or in 2D, or any number of dimensions.