Computer Graphics

Geometry and Intersection

Representing surfaces and finding where a ray meets them.

Colour is the family; a dashed line is the second member of it.

Drag to pan · scroll to zoom · click a node to open it · hover one for the reasons on its edges, and to bring it forward
G bump-mapping Bump Mapping displacement-mapping Displacement Mapping bump-mapping->displacement-mapping bvh Bounding Volume Hierarchy whitted-ray-tracing Whitted Ray Tracing bvh->whitted-ray-tracing catmull-clark Catmull-Clark Subdivision subdivision-surfaces Subdivision Surfaces catmull-clark->subdivision-surfaces texture-mapping Texture Mapping displacement-mapping->texture-mapping dual-contouring Dual Contouring marching-cubes Marching Cubes dual-contouring->marching-cubes kd-tree kd-Tree kd-tree->bvh lbvh Linear BVH surface-area-heuristic Surface Area Heuristic lbvh->surface-area-heuristic level-of-detail Level of Detail rasterization Rasterization level-of-detail->rasterization loop-subdivision Loop Subdivision loop-subdivision->subdivision-surfaces sphere-tracing Sphere Tracing marching-cubes->sphere-tracing meshlets Meshlets and Mesh Shaders meshlets->rasterization simt SIMT meshlets->simt moller-trumbore Moller-Trumbore Intersection ray-triangle-intersection Ray-Triangle Intersection moller-trumbore->ray-triangle-intersection normal-mapping Normal Mapping normal-mapping->bump-mapping parallax-occlusion-mapping Parallax Occlusion Mapping parallax-occlusion-mapping->normal-mapping polygon-mesh Polygon Mesh surface-representation Surface Representation polygon-mesh->surface-representation rasterization->polygon-mesh z-buffer Z-Buffer rasterization->z-buffer ray-triangle-intersection->polygon-mesh signed-distance-field Signed Distance Field signed-distance-field->surface-representation sphere-tracing->signed-distance-field subdivision-surfaces->surface-representation surface-area-heuristic->bvh texture-mapping->polygon-mesh virtual-geometry Virtualized Geometry virtual-geometry->level-of-detail virtual-geometry->meshlets watertight-ray-triangle Watertight Ray- Triangle Intersection watertight-ray-triangle->moller-trumbore
The 27 reasons on these edges, as text

25 nodes

Texture Mapping

Assigns surface parameters from an image indexed by per-vertex coordinates, decoupling material detail from geometric density. · 1974

Bump Mapping

Perturbs the shading normal from a height texture without moving any geometry. Almost free, and its limits are visible the moment a silhouette or a s… · 1978

Catmull-Clark Subdivision

Generalizes bicubic B-spline refinement to meshes of arbitrary topology. The standard modelling surface in film, and the reason quad topology is the… · 1978

Displacement Mapping

Moves surface points along the normal by a stored height, producing detail that occludes itself and changes the silhouette because the geometry reall… · 1984

Loop Subdivision

The triangle counterpart of Catmull-Clark, built on box splines, for pipelines whose base meshes are triangular rather than quad. · 1987

Marching Cubes

Extracts a triangle mesh from a scalar field by table lookup on the sign pattern at each cell's corners. The reason volume data can be handed to ordi… · 1987

Surface Area Heuristic

Chooses each split by estimating traversal cost from the probability a random ray hits each child, which is proportional to its surface area. Still t… · 1990

Sphere Tracing

Marches along a ray by exactly the distance value at each point, which can never overshoot the surface. Renders implicit geometry without ever tessel… · 1996

Moller-Trumbore Intersection

Solves for barycentric coordinates directly with a scalar triple product, needing no precomputed plane equation and therefore no per- triangle storag… · 1997

Dual Contouring

Places one vertex per cell by solving a least-squares fit to the surface normals it intersects, which lets it reproduce sharp creases that corner-sig… · 2002

Parallax Occlusion Mapping

Ray-marches the height field in tangent space so texture features shift with view angle and occlude each other, recovering the parallax that normals… · 2006

Linear BVH

Sorts primitives along a Morton curve and builds the hierarchy from the resulting bit patterns, which parallelizes perfectly and rebuilds in millisec… · 2012

Watertight Ray-Triangle Intersection

Reorders the arithmetic so that a ray crossing an edge shared by two triangles is guaranteed to hit exactly one of them, closing the pinhole leaks th… · 2013

Virtualized Geometry

Builds a hierarchy of pre-simplified clusters and chooses the cut through it per frame, so level of detail changes per cluster and streams from disk… · 2021

Bounding Volume Hierarchy

A tree of nested bounding boxes over primitives. Handles unevenly distributed geometry gracefully, refits cheaply under animation, and is what ray tr…

kd-Tree

Recursively splits space rather than objects with axis-aligned planes. Nodes never overlap, which makes traversal tight, but primitives straddling a…

Level of Detail

Swaps in coarser geometry as an object shrinks on screen, keeping triangle density roughly constant in screen space.

Meshlets and Mesh Shaders

Splits a mesh into small vertex-and-triangle clusters that can be culled and dispatched independently, replacing the fixed vertex-fetch pipeline with…

Normal Mapping

Stores the perturbed normal directly in a tangent-space texture instead of deriving it from height differences, which removes the derivative computat…

Polygon Mesh

Vertices, edges and faces. Explicit, cheap to rasterize and to intersect, and the representation essentially all hardware is built around.

Rasterization

Projects primitives to the screen and fills the pixels they cover. Cost scales with primitives times coverage, and visibility comes free from a depth…

Ray-Triangle Intersection

The innermost operation of every ray tracer, so constant factors and numerical robustness here dominate both performance and correctness.

Signed Distance Field

Stores distance to the nearest surface, negative inside. Booleans, offsets and blends become arithmetic on the field, and the distance value itself i…

Subdivision Surfaces

Defines a smooth limit surface as the result of infinitely refining a control mesh, giving a single representation that is both editable at low resol…

Surface Representation

How a surface is stored before anything is rendered: explicitly as primitives, or implicitly as a function whose zero set is the surface.