Good videos, with context.
NVScene 2015 Session: How to Create Content with Signed Distance Functions (Johann Korndörfer)

NVScene 2015 Session: How to Create Content with Signed Distance Functions (Johann Korndörfer)

NVScene
3 HN recommenders · discussed 2017–2018
Open YouTube ↗

About this video

Johann Korndorfer's NVScene 2015 talk on building content with signed distance functions. It focuses on patterns that make SDF modelling more structured, arguing that SDFs capture a shape's essence like vector graphics do compared with polygons or voxels.

Why it appears in the archive

Recommended as an excellent talk from a demoscene practitioner on how to build sophisticated scenes from distance functions.

AI-generated summary and labels from the source dataset; verify important details against the video. Source & credits.

From the Hacker News discussion

westoncb · 2017-05 · strong rec

I think that's a pretty nice overview you have. One thing I would clarify is about how the objects in the scene are represented mathematically: it's done using 'signed distance functions' so every object you have in the scene is actually created through one of these functions which takes a point in 3D space and returns the distance to the nearest point on the object's surface to that point—which does, as you say, make the object/ray intersection testing trivial (the return value of this function is the radius of the sphere used to step along the ray). The other basic components when creating scenes to be raymarched are distance functions which combine other distance functions together. The simplest cases are just union and intersection, but it's easy to get more interesting things like smoothly blending objects together. This page is a nice reference of these 'combining' functions as well as distance functions for geometric primitives: [LINK] I think that combining power is one of the main reasons to use raymarching/distance functions: building procedural content this way is faaar easier than trying to knit triangle meshes together. Additionally, if anyone wants to go a little further on the subject of building up sophisticated content by raymarching distance functions, this is an excellent talk on the subject: [VIDEO]

Read original comment ↗
Impossible · 2017-11 · rec

Hg ( [LINK] ) is a great resource. I'm not a fan of the non-commercial license. The intro on the top of the site has a lot of great links to resources outside of iq, including the pouet.net thread on Raymarching, John Hart's original sphere tracing paper, and enhanced sphere tracing, as well as the author's original talk from NVScene 2015 ( [VIDEO] ). Definitely check out all of these resources. If you're more interested in signed distance fields outside of the shadertoy\demo scene use cases there are a lot of interesting resources out there written by people using them in more complex contexts. Alex Evans (Media Molecule) Dreams talk is awesome. You can see the talk here ( [LINK] ) and read the slides here ( [LINK] ). [LINK] covers how to generate meshes. With modern hardware with ballot\shuffle there are probably more efficient ways to do this in a compute shader now, but the talk is still good. Epic games siggraph presentation ( [LINK] ) is a good explanation of how UE4 uses signed distance fields for ambient occlusion and shadows. Q-Games presentation ( [LINK] ) on how the now defunct Game Tomorrow Children uses signed distance fields for dynamic world space reflections. Voxel Quest ( [LINK] ), a "failed" kickstarter project, has some good write ups of how he's built the engine over the years as well as source code. Unbound.io gave a talk at GTC 2017 ( [LINK] ) that goes into some detail on their signed distance field VR sculpting app. There are of course more resources t

Read original comment ↗
teamhappy · 2018-02 · rec

Here's a presentation from one of the mercury guys explaining how to do that kind of thing: [VIDEO] Also, elevated from RGBA should probably be mentioned since iq ( [LINK] ) is the guy behind Shadertoy. (Also because it's pretty.) [LINK]

Read original comment ↗