Pick a scenario; every slider below stays editable.
The science
Units. Lengths in GM/c² (1.477 km per solar mass), G = c = M = 1: horizon r = 2, photon sphere r = 3, innermost stable circular orbit r = 6.
Ray tracing. Every pixel launches a light ray backwards from the camera. In Schwarzschild spacetime a ray stays in a plane through the hole and obeys d²u/dφ² = -u + 3u² with u = 1/r and the first integral (du/dφ)² = 1/b² - u²(1 - 2u), where the impact parameter is b = (D sinα)/√(1 - 2/D) for a static observer at distance D who sees the ray at angle α from the radial direction. The shader integrates this with a symplectic leapfrog (about 360 steps of 0.045 rad), stops when r < 2 (black), when the ray crosses the equatorial plane inside the disc (disc colour) or when it escapes (star field lookup in the escape direction).
Shadow. Rays with b < 3√3 M = 5.196 M are captured. The shadow's angular radius for a static observer is sinαc = 3√3 √(1 - 2/D) / D; the green outline is this exact value, and the page checks it against bisection on the integrator. Far away the deflection is 4M/b + 15πM²/(4b²) + ... (1.75 arcsec at the Sun's limb), and the Einstein ring angle for a source behind the hole is about √(4M/D).
Disc light. The thin disc orbits with the circular-orbit speed v = √(1/(r - 2)) (in units of c, measured by static observers). The frequency ratio is g = √(1 - 2/r) / (γ (1 - v · n)), with n the photon direction in the local static frame; the brightness scales as g⁴ and the colour temperature as g. The surface temperature falls as r-3/4.
Honest simplifications. Non-rotating hole (a spinning Kerr hole would make the shadow slightly off-centre and flattened); an opaque, infinitely thin disc with an invented brightness and a crude blackbody colour ramp, not a radiative-transfer model or a magnetohydrodynamic simulation; only the first disc crossing is drawn, so the faint higher-order images are partly missing; rays that circle the photon sphere more than about one and a half times are painted black (the very thin photon ring is not resolved); the star field is a Blender-rendered synthetic sky, not a catalogue. The real EHT images are rings of hot gas, not the shadow itself; the numbers for M87* and Sgr A* are rough (mass and distance as typically quoted) and only illustrate the scale.