Demos

algebraic steiner surface

algebraic steiner surface

raymarcher

Path-traced Steiner surface: the real projective plane immersed in $\mathbb{R}^3$ as an algebraic surface, together with three singular lines.

majumdar papapetrou binary extrinsic

majumdar papapetrou binary extrinsic

threejs

Null geodesic threading between two extremally charged black holes in a Majumdar-Papapetrou spacetime

majumdar papapetrou octahedron extrinsic

majumdar papapetrou octahedron extrinsic

threejs

Chaotic null geodesic scattering between six charged black holes at octahedral vertices

majumdar papapetrou octahedron intrinsic

majumdar papapetrou octahedron intrinsic

realistic view of an observer approaching a system of eight charged black holes

Mpbh Binary Intrinsic

Mpbh Binary Intrinsic

relativistic pathtracer

Inside view of a binary Majumdar-Papapetrou black hole system with colored event horizons

Mpbh Single Intrinsic

Mpbh Single Intrinsic

relativistic pathtracer

Inside view of a single extremally charged black hole with gravitational lensing of the event horizon

mp black hole closed geodesic

mp black hole closed geodesic

threejs

Closed null geodesic found by symmetry in eight charged black holes arranged on a cube

Torus Mcg Featured

Torus Mcg

threejs

Mapping class group of the torus acting on texture coordinates via Dehn twists and the Anosov map

Torus Mcg

Torus Mcg

threejs

Custom SL(2,Z) matrix acting on the torus with user-adjustable integer entries

black hole lens

black hole lens

threejs

Parallel light rays gravitationally lensed by a Schwarzschild black hole, deflected near the photon sphere

black hole loop Featured

black hole loop

threejs

Light ray tuned to orbit a Schwarzschild black hole one or more times before escaping

black hole photon sphere

black hole photon sphere

threejs

Null geodesics orbiting near the photon sphere of a Schwarzschild black hole

black hole u turn

black hole u turn

threejs

Collimated packet of light rays diverging dramatically after a near-miss with a black hole

Pathtracer Cocktail

Pathtracer Cocktail

pathtracer

Path-traced cocktail glass with refraction, liquid absorption, and caustics

Pathtracer Cocktail Cylinder

Pathtracer Cocktail Cylinder

pathtracer

Path-traced cylindrical glass vessel demonstrating refraction through straight walls

Pathtracer Cocktail Cylinder Segment

Pathtracer Cocktail Cylinder Segment

pathtracer

Path-traced cocktail glass built from cylindrical segment primitives

Pathtracer Cocktail Glass

Pathtracer Cocktail Glass

pathtracer

Path-traced cocktail glass focusing on Fresnel reflection and refraction through curved glass

Pathtrace Ambient

Pathtrace Ambient

pathtracer

GPU pathtracer baseline: ambient-only lighting with no direct light sources

Pathtrace Diffuse

Pathtrace Diffuse

pathtracer

GPU pathtracer with diffuse Lambertian surfaces and color bleeding

Pathtrace Metalball

Pathtrace Metalball

pathtracer

GPU pathtracer rendering a perfect mirror sphere with specular reflection

Pathtrace Glassball

Pathtrace Glassball

pathtracer

GPU pathtracer rendering a glass sphere with Snell's law refraction and Fresnel reflection

Pathtrace Phong

Pathtrace Phong

pathtracer

GPU pathtracer with Phong specular highlights

Pathtrace Phong Lights

Pathtrace Phong Lights

pathtracer

GPU pathtracer with Phong shading and multiple light sources

Pathtrace Phong Shadow Lights

Pathtrace Phong Shadow Lights

Pathtrace Phong Shadow

Pathtrace Phong Shadow

pathtracer

GPU pathtracer with Phong shading and hard shadow rays

Pathtrace Static

Pathtrace Static

pathtracer

GPU pathtracer foundation: static scene with basic ray generation and shading

Pathtracer All Glass

Pathtracer All Glass

pathtracer

Path-traced scene of overlapping glass objects producing complex caustic patterns

Pathtracer All Mirrors

Pathtracer All Mirrors

pathtracer

Path-traced scene of perfect mirrors producing kaleidoscopic infinite reflections

Pathtrace Sim Multiple

Pathtrace Sim Multiple

pathtracer

GPU pathtracer with full multi-bounce global illumination

Pathtrace Sim Phong

Pathtrace Sim Phong

pathtracer

Pedagogical GPU pathtracer demonstrating the Phong reflection model

Pathtrace Sim Phong Shadow

Pathtrace Sim Phong Shadow

pathtracer

Pedagogical GPU pathtracer with Phong shading and shadow occlusion testing

Pathtrace Sim Phong Mutliple

Pathtrace Sim Phong Mutliple

pathtracer

Pedagogical GPU pathtracer combining Phong shading with multi-bounce indirect light

Pathtrace Sim Raymarch Progressive

Pathtrace Sim Raymarch Progressive

pathtracer

SDF raymarching with progressive pathtracing for converging global illumination

Pathtrace Sim Raymarch

Pathtrace Sim Raymarch

pathtracer

Hybrid SDF raymarching and Monte Carlo pathtracing for implicit surface rendering

Pathtrace Sim Refraction

Pathtrace Sim Refraction

pathtracer

Pedagogical GPU pathtracer demonstrating Snell's law refraction through transparent objects

Pathtrace Sim Roughness

Pathtrace Sim Roughness

pathtracer

Pedagogical GPU pathtracer showing the transition from mirror to diffuse via surface roughness

Pathtrace Sim Single Progessive

Pathtrace Sim Single Progessive

pathtracer

Pedagogical GPU pathtracer with progressive Monte Carlo accumulation

Pathtrace Sim Subsurface Scattering

Pathtrace Sim Subsurface Scattering

pathtracer

Pedagogical GPU pathtracer with subsurface scattering for translucent materials like wax and marble

Pathtrace Sim Subsurface Scattering Multiple

Pathtrace Sim Subsurface Scattering Multiple

pathtracer

Subsurface scattering pathtracer with multiple translucent objects of varying material properties

Pathtrace Sim Two Progressive

Pathtrace Sim Two Progressive

pathtracer

Pedagogical GPU pathtracer with two bounces, showing color bleeding from indirect light

Pathtrace Sim Single Featured

Pathtrace Sim Single

pathtracer

Pedagogical GPU pathtracer: single ray bounce per pixel

3body Accelerator

3body Accelerator

threejs

Gravitational three-body simulation with adjustable masses and chaotic trajectories

3body Fig8

3body Fig8

threejs

The figure-eight periodic orbit of the gravitational three-body problem

3body Oscillator

3body Oscillator

threejs

Three-body gravitational simulation with collision detection and chaotic trajectory trails

Hyperbolic Spring

Hyperbolic Spring

threejs

Spring oscillator whose phase-space trajectory follows a hyperbolic cosine curve

Hyperbolic Spring Damped

Hyperbolic Spring Damped

threejs

Damped spring oscillator with hyperbolic dynamics settling toward equilibrium

Inhomogeneous Spring

Inhomogeneous Spring

threejs

Spring with spatially varying stiffness traversing a non-uniform potential

Coupled Oscillator Circle

Coupled Oscillator Circle

threejs

Spring-coupled masses on a circle with periodic boundary conditions and bidirectional wave propagation

Coupled Oscillator Cloth

Coupled Oscillator Cloth

threejs

Spring-mass cloth simulation with draping and wave propagation in 3D

Coupled Oscillator Grid

Coupled Oscillator Grid

threejs

2D grid of spring-coupled masses simulating a vibrating membrane with circular wavefronts

Coupled Oscillator Line

Coupled Oscillator Line

threejs

Chain of spring-coupled masses in a line, simulating 1D wave propagation with reflections

Code: Gradient Descent

Code: Gradient Descent

threejs

Gradient descent on a user-defined surface with geodesic computation and glass overlay

Geodesic

Geodesic

threejs

Geodesic on a user-defined surface computed via Christoffel symbols

Geodesic Spray

Geodesic Spray

threejs

Spray of geodesics from a point on a user-defined surface.

Gradient Descent Comparision

Gradient Descent Comparision

threejs

Multiple gradient descent trajectories on the same surface, converging to different local minima

Gradient Descent Domain Featured

Gradient Descent Domain

threejs

Gradient vector field over the domain of a surface, revealing critical points and basins of attraction

Gradient Descent Single

Gradient Descent Single

threejs

Single gradient descent trajectory on a user-defined surface with gradient arrows

Gradient Plotter

Gradient Plotter

threejs

Interactive gradient vector field plotter for user-defined surfaces

Gravity Surface Dust

Gravity Surface Dust

threejs

Cloud of particles rolling downhill on a user-defined surface, tracing the gradient flow

Gravity Surface Grid

Gravity Surface Grid

threejs

Grid of particles flowing along the negative gradient of a user-defined surface

Elliptic Stripes X15

Elliptic Stripes X15

threejs

Path-traced elliptic surface decorated with a stripe pattern

Elliptic Surface X15

Elliptic Surface X15

threejs

Path-traced elliptic algebraic surface with subsurface scattering

Genus2 Algebraic

Genus2 Algebraic

threejs

Path-traced algebraic surface of genus two with subsurface scattering

Woodcut Gaussian

Woodcut Gaussian

threejs

Gaussian bump surface with geodesics

Woodcut Gaussian Side

Woodcut Gaussian Side

threejs

Side view of a Gaussian surface in woodcut engraving style

Woodcut Ripples

Woodcut Ripples

threejs

Concentric ripple surface rendered in woodcut engraving style

Woodcut Waves

Woodcut Waves

threejs

Wave surface rendered in woodcut engraving style

Woodcut Eggcarton

Woodcut Eggcarton

threejs

Doubly periodic egg-carton surface rendered in woodcut engraving style

Vision Dichromat

Vision Dichromat

threejs

Dichromatic color vision: two cone types responding to a time-varying spectrum

Vision Monochomat

Vision Monochomat

threejs

Monochromatic vision: a single cone type collapsing spectral data to intensity

Vision Man vs Dog

Vision Man vs Dog

threejs

Side-by-side comparison of human trichromatic and canine dichromatic color vision

Vision Spectrum Decomposition

Vision Spectrum Decomposition

threejs

Spectral power distribution scanned by a monochromatic wave, decomposing light into wavelength components

Vision Trichromat

Vision Trichromat

threejs

Human trichromatic color vision: L, M, and S cone responses to a time-varying spectrum

FrenetField

FrenetField

Code: Wormhole Featured

Code: Wormhole

riemannian raytracer

Raymarched traversable connect sum "wormhole" connecting two SF and Paris