Physically Accurate Noise Free Real-time Rendering
Summary
This is the master thesis project performed by Mauro van de Vlasakker under supervision of
Dr. Robby T. Tan at Utrecht University. Physically based rendering is a widely studied topic
in the field of computer graphics. The goal is to find the average color of each pixel by solving
the rendering equation. The rendering equation describes light transport mathematically. Path
tracing is a way to solve the rendering equation and is done by shooting rays from the camera
through each pixel on the screen. Many rays are needed to get a good estimate for the final pixel
color. If the number of rays per pixel is low, this will show up as noise in the image. This project
is focused on post processing the output image where the goal is to make the post process fast
enough to enable real-time (24 fps) path traced scenes.
C++ and OpenCL are used to implement a path tracer which is used as a platform to implement
the filter. Random parameter filtering is implemented to directly compare our filters
quality with theirs. The main problems we solve are: real-time performance, filtering reflections/
refractions and filtering complex Monte Carlo effects like soft shadows and depth of
field. Using the variance in scene information we can detect noise. By splitting direct and indirect
illumination we can apply separate filtering on each to achieve better results. Skylights
and sky-boxes are taken into account since they usually have no normals and are infinitely far
away which can cause the filter to over blur parts of the scene.
We evaluate the speed of the filter at different resolutions with different test scenes. The
results show that the speed of the filter is fast enough to achieve real-time performance and
scales linearly with resolution. Then, the filter is carefully evaluated to determine the optimal
filtering parameters for all test scenes. With the optimal parameters we compare our filter
against Random Parameter Filtering in terms of quality. We show that our filter is able to filter
reflection/refractions, depth of field, soft shadows and sky-boxes/skylights in real-time. For
future work there are some interesting extensions that can be made such as adaptive sampling
and detecting when the filtering process can stop.