This project consists of a ray-tracing renderer following the implementation outlined in chapters 2–4 of Gabriel Gambetta's Computer Graphics From Scratch, available for purchase here.
A demo script exists for each applicable chapter of the book. For example, run chapter_2.py
to output the scene depicted at the end of Chapter 2.
This repository consists of the following project components:
-
A renderer package that handles the meat of the ray-tracing tasks. This package is contained with the
/renderer
subdirectory. -
A modeler package that provides classes and tools to describe the 3D scene to be rendered. This package is contained within the
/modeler
subdirectory.
The development of this minute system of packages will, in general, follow the progression of chapters in Computer Graphics From Scratch. This timeline is fundamentally constructed around the development of the renderer
package.
-
[✓] Chapter 2: Basic Raytracing
-
[✓] Chapter 3: Lighting
-
[✓] Chapter 4: Shadows and Reflections
-
[--] Extended Features and Optimizations
- [✓] Support for arbitrary camera position and rotation
- [✓] Triangle primitive
- [✓] Geometry primitive (Mesh) supporting complex arrangements of Triangles
- [--] Refactor
- [--] Render optimizations