Skip to content

Commit

Permalink
Update README.md
Browse files Browse the repository at this point in the history
  • Loading branch information
simondemeule authored Dec 22, 2020
1 parent 907f83d commit 47569f8
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ Curvature is an experimental hybrid raytracing / raymarching 3D engine written f

GIF above: orbiting around a 7x7 grid of spheres with a light-bending field at the center, which twists light in a fashion similar to the way magnetic fields bend the trajectory of electrons, and two light-repelling fields. The original 180 frame, 1920x1080, 2x anti-aliased render took about 8 hours to complete on a 8-core i9 2019 15" MacBook Pro running an earlier version of the software.

I have been working this as a fun side project since early 2019, mostly as a proof of concept for this improved algorithm I came up with. I am completely aware this code is far from perfect: I definitely cut corners on memory management in some parts of this application. I wish to eventually fix this, but in the mean time, I hope you will look past this and be just as excited as I am to be rendering weird, curved-spacetime images.
I have been working this as a fun side project since early 2019, mostly as a proof of concept for this improved algorithm I came up with.

This program implements standard techniques for raytracing acceleration such as BVH acceleration and multithreading support, but goes further with new, purpose-designed optimizations to accelerate curved lightpath rendering. At their core, these new techniques are inspired by ray-marching, and make use of distance functions to define safe, spherical zones where some calculations can be skipped in the iterative ray-curving process. In practice, these improve render time by 1.5x-4x, depending on the complexity of the scene. The engine represents the curvature of space as a set of bounded fields (which are free to intersect with each other or any normal object in the scene), which, given any point in space and a ray direction, return an incremental change in ray propagation. This way, a wide variety of light-bending fields can be defined. The engine is also intended to eventually support portals, and feature a more efficient path integration algorithm, improving the current, naive Euler method to the Runge-Kutta method.

Expand Down

0 comments on commit 47569f8

Please sign in to comment.