This is an experimental render taking certain inspirations from the Nori renderer. I plan to follow the PBR Book (3ed) in my pursuit to create a Pathtracer.
I initially started this project in C++, but I quickly realized that rather than learning what was going on behind the scenes, I started copying code verbatim, or with minimal changes. What did I do next? Why I switched over to Rust! With its borrow-checker and type-system I hope to better learn how to manage different coding patterns accross different languages.
Current To-Do list -
-
Move away from Nori towards a more PBR-like implementationSince it is in Rust, the implementation is fundamentally different -
Add Geometry stuff (coordinate systems, vectors, points, rays, b boxes, transformations and interactions)
-
Add animated transformations
-
Add Shapes
-
Sphere
-
Cylinders, Disks
-
Quadrics, Curves
-
Triangle Meshes
-
Subdivision Surfaces
-
-
Add Primitives interface
-
Add aggregates Bounding Volume Heirarchy
-
Add Spectra and Color stuff
-
Add Camera models
-
Orthographic camera
-
Perspective camera
-
Environment (panoramic) camera
-
-
Add samplers
-
Stratified sampler
-
Other samplers
-
-
Add Film and Writer
-
Add BxDFs
-
Add textures (procedural and images)
-
Add Volumes!!!!!!
-
Add Light sources
-
Create Direct integrator
-
Create recursive Path integrator
-
Create Volume Renderer
-
Create Bidirectional Renderer
-
Create Photon Mapping integrator (maybe)
-
Add parallelism
-
And much much more....
Note - This list of to-dos is NOT exhaustive it is just what I could think up of right now