In traditional computer graphics, most 3D models are rendered by rasterizing or ray tracing against a subdivided mesh of primitives, usually triangles or quads. More recently, some real-time techniques have been predicated on ray-tracing against signed distance fields (SDFs). Intuitively, these distance fields cannot be the same triangles and quads of traditional rendering and must be something like 3D geometric primitives (cubes, spheres, etc.) in order to get proper shading. Is this true? If not, can complex scenes of "traditional" 3D models be represented using SDFs? If it is true, then how do artists create high-detail models used in SDF renderers?
1 Answer
Signed distance fields are popular in minimal graphics applications, such as the demo scene, where interesting objects can be synthesized from few simple analytic primitives such as spheres or cubes. However, signed distance fields are not restricted to these simple objects, and they do not necessarily need to be designed by a human. For example, you can synthesize the analytic signed distance field of a triangle mesh without any artist interaction - the SDF is just the signed distance to the closest triangle after all, which can be easily computed. This allows you to keep using your traditional mesh pipeline while also using SDFs in the background.
In the case of the Unreal Engine, the SDF is precomputed automatically once for all static meshes and is then sampled into a low-resolution 3D texture. It can then be cheaply evaluated everywhere using a simple texture lookup, allowing them to do soft shadows and similar at runtime. This Unreal presentation at GDC 2011 mentions the 3D textures briefly (slide 27).
-
2$\begingroup$ It's also easy to generate an SDF from a voxel model. $\endgroup$ Commented Aug 5, 2015 at 9:10
-
$\begingroup$ There's an article on GPU Gems 3 about the construction of signed distance fields for arbitrary meshes using the GPU, which is freely available here: http.developer.nvidia.com/GPUGems3/gpugems3_ch34.html $\endgroup$ Commented Aug 7, 2015 at 14:32