This will be the first version of your path tracer. Based on the rendering equation, you will get your first images with indirect lighting, shadows and multiple light sources.
...
...
@@ -249,10 +249,22 @@ Li(Scene scene, Ray ray, int depth) {
You might \textit{break}, or add things to \textit{value} in more than one place, or in a different order.
This is just the basic idea.
\subsection{Implement a higher-dimensional path tracing effect (15 Bonus Points)}
\subsection{Implement a higher-dimensional path tracing effect (15 bonus points)}
Implement either motion blur or depth-of-field effects. For motion blur, you will need to give something in your scene the ability to move (scene objects, camera). For each path, you will need an additional uniformly random time variable \texttt{t} and consider it when you perform intersection with your scene. To implement depth-of-field, you will need two additional uniformly random \texttt{u,v} variables for each path and consider them in the setup of your camera ray. You get 9 points for motion blur and 6 for depth of field.
\subsection{Standard deviation images (3 bonus points) and adaptive sampling (up to 9 bonus points)}
Standard deviation (SD) can be computed directly from the samples.
You can then colour map and store it in an extra output image (3 bonus points).
There you have the option to compute the SD of the samples or of the rendering produced (the difference is only the scaling factor $N$, the number of samples).
The SD gives you an estimate on the error, and you can use it for adaptive sampling, i.e., throw more samples at pixels that have a high SD.
However, this simple algorithm is biased.
You get 3 points if you implement that.
You get 3 extra points, if you explain why it's biased and implement an easy fix.
Another 3 extra points, if you implement a fix that reuses all samples (your own research).
\subsection{Be patient (2 Bonus Points)}
The path-traced images you get with the provided test scene configurations are very noisy. How long does it take on your machine to compute them? How much longer do you think it would take until you get a quality that you are happy with? Experiment with the number of samples and report if the development matches your expectations. Given that our scenes are extremely simple, do you think that with this kind of performance it is feasible to render entire \emph{movies}?