An implementation of Peter Shirley's Ray Tracing in One Weekend, using C# and Unity's Burst compiler.
Thanks to Peter for the excellent original book.
For a GPU implementation of the book in Unity, see this excellent post by Jeremy Cowles
For another implementation of a path tracer in C# + burst, see Aras' series
All of these were helpful to me in learning.
Menu: Window/Weekend Tracer/Book
Open this window to find chapter-by-chapter implementations of the book, with a button to draw each of them.
Chapters 1-7 are done as a straight translation of the book, and you can find code for them under Assets/Scripts/Chapters
.
Each of these chapters has its own implementation in its own file.
Chapters 8 until the end of the book re-use the same implementation, found in Assets/Scripts/BatchedTracer.cs
.
This implementation launches multiples jobs at once and combines them in a batch.
The code that does the actual path tracing will always be found in the job struct's Execute()
function.
Code around that is mostly about presenting it in the UI and handling options.
Menu: Window/Weekend Tracer/Interactive
EXPERIMENTAL, NOT IN THE BOOK
Try to render a basic Unity scene of just spheres via the raytracing camera, interactively.
Try opening the scene ChapterEight
if using this window.
I did a version that parallelized on a per-pixel basis using IJobParallelFor
, but it had a bug i didn't solve, so i scrapped it.
The project is setup for Unity 2019.1, but it should also compile in 2018.3.x
If something is broken, please feel free to submit an issue.