Your browser or GPU does not support WebGL2, which this simulation needs.

Schwarzschild Black Hole

real-time geodesic ray tracing
Distance—
Inclination—
Bearing—
Time dilation—
Render—
Powered by @abbosby
Dragorbit Right-dragpan Scrollzoom Dbl-clickzoom in Rreset

A black hole, ray traced in real time

Nothing on this page is a texture or a pre-rendered animation. Every pixel is a ray of light traced backwards through the curved spacetime around a Schwarzschild black hole, until it either falls through the event horizon, strikes the accretion disk, or escapes to the stars behind it.

What you are looking at

How it works

Null geodesics are integrated in Cartesian coordinates using each ray's conserved angular momentum h = |x × v|, giving d²x/dλ² = -1.5 · rₛ · h² · x / r⁵. The step length is proportional to the distance from the horizon, so the path is resolved finely where spacetime bends hard and strides forward where it is flat.

The accretion disk is a plane at the equator, and every crossing is solved for exactly, which is what makes the multiple lensed images appear on their own. Each crossing is shaded as an emitting and absorbing slab with relativistic Doppler and gravitational redshift, then the gas is sheared at Keplerian speed (ω ∝ r-3/2) so the turbulence winds into trailing filaments.

Controls

Drag to orbit, right-drag to pan, scroll or pinch to zoom, double-click to zoom in. The compass resets your bearing and the slider beside the zoom buttons controls tilt, from edge-on to straight down. Press H to hide the interface and P to save a PNG.

© 2026 @abbosby. All rights reserved. Built with WebGL2.

View

Camera preset
Field of view52°
Exposure1.00
Bloom0.65

Accretion disk

Brightness1.00
Inner radius3.0
Outer radius11.0
Turbulence0.70
Opacity0.90
Orbital speed1.00

Physics

Gravitational lensing100%
Doppler beaming100%
Starfield1.00

Sound

Volume55%

Quality

Adaptive resolution
Show gesture hints