Breaking Down 3D Noise

1 June, 2016

In the field of CGI, image noise is that variable which allows for quality evaluation after a 3D rendering process. It is mostly caused when the rendering engine does not pick up the appropriate amount of lighting, causing different types of distorted effects (grainy, blurry, etc.). Other times the problem is caused by incompatibility among render engines and the selected processing unit: CPU or GPU.

For instance, if all GPU calculations are performed on the graphics card, then every bit of information needed to render a scene needs to fit into it (otherwise it will not be able to handle the load). If it doesn’t, the noise convergence algorithm will not apply and the frames will not render properly.

Hardware manufacturer BOXX Technologies has carried out a comparative analysis between CPU/GPU based V-Ray RT and CPU based V-Ray Advanced. The results show that subjective observation is not enough to distinguish between one form or the other. Speed variable aside, an empirical approach was needed to find any differences.[1] This was done using an Image Quality Calculator developed by The University of Manitoba’s Physics and Astronomy Department (you can read the full report here). As shown in the article, the way the plugin computes the Image Quality Factor can be summed up by the following graph:

3D rendering farm

Image quality = (P1-P2) + (P1-P3) + (P1-P4) + (P1-P5)

The equation sums the differences of adjacent horizontal and vertical pixel values at three different scales (original size, half size, and quarter size).[2] The higher the value, the nosier the image.

A more “hands-on” approach to tackle 3D noise can be achieved through Blener’s add-on Cycles, a ray tracing renderer capable of updating info constantly as modifications are done (e.g. changing material color, a lamp’s intensity or moving objects around).[3]

What sets Cycles apart from other render engines, or Blender Internal (BI) for that matter, is its “backwards” path tracer, meaning that it traces light rays by sending them from the camera instead of sending them from the light source(s)[4].

3D Rendering

©Blender Foundation – Blender Reference Manual Contents

The picture above shows this reverse process. As it’s been just mentioned, light rays are traced from the camera into the scene and onto lights, rather than from the light source into the scene and then into the camera. Path tracing has the advantage of being able to render more detailed and larger scenes when compared to other rendering algorithms.[5] This feature, along with other toolkit of tricks available on their manual, can help you reduce noise considerably. It should be noticed that Blender informs that the path tracer features presents some limitations when it comes to caustics. The following tutorial, courtesy of CG Cookie Blender, shows how to overcome this:

Don’t forget that BI and other render engines also have their set of advantages. Which one to use will depend what you actually want to achieve. The same logic applies to the processing unit. For instance, speed is a determining factor, though it should never be prioritized on top of quality, assuming that quality is what you’re shooting for. Eventually, the best thing to do is to be pragmatic and deploy the system that causes the fewer amount of counterproductive effects. “As with many things, when making a technology purchase decision, the specifics really do matter.”[6]

[1] Pizzini, Joe (BOXX Technologies). “GPU Rendering vs. CPU Rendering – A method to compare render times with empirical benchmarks”, – October 2, 2014 (accessed on May 24, 2016).

[2] University of Manitoba. “Plugins for Astronomical Image Processing with ImageJ”, – undated (accessed on May 24, 2016).

[3] “Cycles Render Engine – Introduction” – – undated (accessed on May 26, 2016).

[4] Blender Stack Exchange. “How is Cycles different from Blender Internal?”, – June 10, 2014 (accessed on May 26, 2016).

[5] “Cycles Render Engine – Reducing Noise” – – undated (accessed on May 28, 2016).

[6] “Should one invest in CPU or in GPU for CGI rendering?”, – January 3, 2015 (accessed on May 28, 2016).