aboutsummaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
authorhachem <im@hachem.wtf>2026-09-18 19:41:17 +0200
committerhachem <im@hachem.wtf>2026-09-18 19:41:17 +0200
commit192faffb9537d2f30b625d900263f4c1b722ecfe (patch)
tree9afc9a035a940ef198824ca5b725ce3a7c3717f9 /README.md
parent76c1cba021223d0086f81ca03f93ad749302868d (diff)
chore: update README
Diffstat (limited to 'README.md')
-rw-r--r--README.md34
1 files changed, 17 insertions, 17 deletions
diff --git a/README.md b/README.md
index 2896d55..4efc773 100644
--- a/README.md
+++ b/README.md
@@ -1,9 +1,9 @@
-![Logo](branding/logo_monochrome_white.jpg)
+![logo](branding/logo_monochrome_white.jpg)
-Donut is a real-time renderer for Sagittarius A* (Sgr A*) that traces light through the curved spacetime surrounding the black hole. Each pixel is represented by a light ray originating from the camera. The ray is integrated through the Schwarzschild metric, allowing the renderer to reproduce gravitational lensing and the distortion of the surrounding accretion disk and background. The renderer runs entirely on the GPU — one ray per pixel, traced in a full-screen fragment shader — allowing the scene to be explored interactively in real time.
+donut is a real-time renderer for sagittarius a* (sgr a*) that traces light through the curved spacetime surrounding the black hole. each pixel is represented by a light ray originating from the camera. the ray is integrated through the schwarzschild metric, allowing the renderer to reproduce gravitational lensing and the distortion of the surrounding accretion disk and background. the renderer runs entirely on the gpu — one ray per pixel, traced in a full-screen fragment shader — allowing the scene to be explored interactively in real time.
-## Physics
-Donut uses the Schwarzschild solution to describe the spacetime around Sgr A*. The metric is (with $r_s = \frac{2GM}{c^2}$):
+## physics
+donut uses the schwarzschild solution to describe the spacetime around sgr a*. the metric is (with $r_s = \frac{2GM}{c^2}$):
$$
ds^2 =
@@ -12,20 +12,20 @@ ds^2 =
+r^2(d\theta^2+\sin^2\theta\,d\phi^2),
$$
-Light rays are propagated along null geodesics of this metric. The geodesic equations are integrated numerically, the ray represented in spherical coordinates together with its derivatives. The Schwarzschild metric provides a conserved energy along each geodesic, which supplies the time component of the motion so that the $t$ coordinate never has to be integrated explicitly.
+light rays are propagated along null geodesics of this metric. the geodesic equations are integrated numerically, the ray represented in spherical coordinates together with its derivatives. the schwarzschild metric provides a conserved energy along each geodesic, which supplies the time component of the motion so that the $t$ coordinate never has to be integrated explicitly.
-Each ray is integrated step by step until it reaches the event horizon, intersects an object or the accretion disk, or escapes the region being rendered.
-The integration uses adaptive step sizes, and this is where most of the accuracy comes from. Rays passing through regions of strong curvature near the photon sphere take very small steps, while rays far from the black hole are advanced across near-flat space in a few large strides. Rays that are clearly escaping are terminated early to avoid unnecessary computation, so rays near the black hole receive far more computation than rays already leaving the gravitational field.
-The curvature of spacetime changes the direction of each ray as it passes around the black hole. Rays passing close to the photon sphere can undergo large deflections or orbit the black hole several times before escaping. This produces the distorted background, multiple images of the accretion disk, and the bright lensing structures surrounding the shadow.
+each ray is integrated step by step until it reaches the event horizon, intersects an object or the accretion disk, or escapes the region being rendered.
+the integration uses adaptive step sizes, and this is where most of the accuracy comes from. rays passing through regions of strong curvature near the photon sphere take very small steps, while rays far from the black hole are advanced across near-flat space in a few large strides. rays that are clearly escaping are terminated early to avoid unnecessary computation, so rays near the black hole receive far more computation than rays already leaving the gravitational field.
+the curvature of spacetime changes the direction of each ray as it passes around the black hole. rays passing close to the photon sphere can undergo large deflections or orbit the black hole several times before escaping. this produces the distorted background, multiple images of the accretion disk, and the bright lensing structures surrounding the shadow.
-## Rendering
-For each pixel, Donut generates a ray from the camera using its position, orientation, field of view, and aspect ratio. The ray is then converted into the coordinates used by the geodesic integrator and propagated through the scene. During integration, the renderer checks for intersections with the black hole, accretion disk, and other scene objects. Rays that escape are sampled against the background environment. The accretion disk is a thin, opaque, self-luminous surface in the equatorial plane, with a Novikov–Thorne temperature profile that is hottest just outside the inner edge and cools outward, coloured as a redshifted blackbody; an optional turbulence overlay modulates its brightness. Its gas orbits at relativistic Keplerian speed (reaching half the speed of light at the innermost stable orbit), so the disk is Doppler-brightened on the side rotating toward the camera. Since the disk is viewed through curved spacetime, different parts of it can reach the camera along multiple paths around the black hole. The resulting image includes gravitational lensing, gravitational redshift, and Doppler shifting from the rotating disk. The final pixel color is determined from the ray's path, its intersection with the scene, and the relativistic effects accumulated along the way. The entire process runs on the GPU as a full-screen fragment shader, tracing every pixel's ray in parallel.
+## rendering
+for each pixel, donut generates a ray from the camera using its position, orientation, field of view, and aspect ratio. the ray is then converted into the coordinates used by the geodesic integrator and propagated through the scene. during integration, the renderer checks for intersections with the black hole, accretion disk, and other scene objects. rays that escape are sampled against the background environment. the accretion disk is a thin, opaque, self-luminous surface in the equatorial plane, with a novikov–thorne temperature profile that is hottest just outside the inner edge and cools outward, coloured as a redshifted blackbody; an optional turbulence overlay modulates its brightness. its gas orbits at relativistic keplerian speed (reaching half the speed of light at the innermost stable orbit), so the disk is doppler-brightened on the side rotating toward the camera. since the disk is viewed through curved spacetime, different parts of it can reach the camera along multiple paths around the black hole. the resulting image includes gravitational lensing, gravitational redshift, and doppler shifting from the rotating disk. the final pixel color is determined from the ray's path, its intersection with the scene, and the relativistic effects accumulated along the way. the entire process runs on the gpu as a full-screen fragment shader, tracing every pixel's ray in parallel.
-## Documentation
-For a deeper explanation of how Donut works, see the [`docs/`](docs/) folder:
-- [docs/physics.md](docs/physics.md) — the physics and mathematics: null geodesics and the equations of motion, the numerical integrator, the event horizon / photon sphere / ISCO, the Novikov–Thorne accretion disk, gravitational + Doppler redshift and relativistic beaming, and the observable quantities the renderer can measure.
-- [docs/architecture.md](docs/architecture.md) — how the program is built: the portable OpenGL/Vulkan RHI, the two renderers, the unified scene-and-simulation world, the rendering pipeline, the docking UI, and the physical-value export pipeline.
+## documentation
+for a deeper explanation of how donut works, see the [`docs/`](docs/) folder:
+- [docs/physics.md](docs/physics.md) — the physics and mathematics: null geodesics and the equations of motion, the numerical integrator, the event horizon / photon sphere / isco, the novikov–thorne accretion disk, gravitational + doppler redshift and relativistic beaming, and the observable quantities the renderer can measure.
+- [docs/architecture.md](docs/architecture.md) — how the program is built: the portable opengl/vulkan rhi, the two renderers, the unified scene-and-simulation world, the rendering pipeline, the docking ui, and the physical-value export pipeline.
-## License
-Donut is released under the MIT License.
-The source code may be used, modified, and redistributed freely, including in commercial projects, provided that the original copyright notice and license are retained.
+## license
+donut is released under the mit license.
+the source code may be used, modified, and redistributed freely, including in commercial projects, provided that the original copyright notice and license are retained.