Backgrounds and Motives

Path tracing has been known to be a very expensive computing task for many decades, but the level of realism it produces is simply astonishing. I want to push the limit of path tracing and see how fast it can become on modern hardware.

Current Status and Goals

Currently CRay is able to render static scenes up to 1 million triangles at an interactive framerate (15 ~ 30 FPS) on a powerful GPU (for instance, an Nvidia GTX1060 would do) with a diffuse reflection model. Everything is implemented from scratch besides the UI. The rendering part is written in Direct3D 11 so it should be able to run on Windows 7 and onward. And sorry, no other platform other than Windows will be supported.

As it currently is, CRay is at by no means a good rendering framerate, nor is the result appealing. It still struggles on interior scenes even at a low triangle count due to some weaknesses of the underlying acceleration structure, and the result looks terrible with all the noises due to my 1spp/frame rendering scheme. So here are the goals that are shared by virtually all ray tracers in the world:

. Faster rendering, hopefully achieving a much smoother frame rate.
. Higher quality images with the same amount of samples.
. A wider variety of reflection models.


To make things run fast, I have the following plans in mind.

. Improve compare various acceleration structures.
. Research and implement traversal algorithms that's well suited on the GPU.
. Pre-compute as much lighting as possible at a minimal loss of quality.

To produce a higher quality image with the same number of samples:

. Better sampling methods than deterministic hashing
. Denoisers.

Long terms goals

If the short term results are promising, I will focus more on the dynamic side of things. Things like animated models and deformable meshes will all be in consideration to bring a truly interactive experience.

If I can achieve the above, then I will consider pulling the whole thing out as a usable rendering library for people to use.