Using Multiple Techniques In Tandem With Blender’S Denoiser For Best Results

Reducing unwanted noise in CGI renders is an essential part of creating high-quality 3D graphics and animations. The latest versions of Blender include powerful built-in denoising capabilities that can automatically filter out noise from renders. However, even Blender’s own OpenImageDenoise denoiser is not perfect. By combining it with complementary third-party denoising plugins and optimizing scenes for denoising, artists can achieve superior noise-free results with less tweaking and re-rendering.

Reducing Noise in Your Renders

Noisy renders are caused by an insufficient number of light samples per pixel. Increasing the number of samples reduces noise but significantly increases render times. Denoising attempts to algorithmically filter noise out of low sample renders in post-production while retaining detail. This can cut render times tremendously without sacrificing final image quality.

Denoising works by analyzing relationships and patterns between neighboring pixels to determine detail from noise. More advanced AI-based denoisers can synthesize plausible detail where information is missing. This works well for textures, surfaces, and edges but can cause problems with fine details, motion, transparency, and subtleties in lighting.

Achieving the cleanest results requires balancing render settings and denoiser settings for each specific scene and frame. Complex scenes typically need more samples or iterations of denoising while simpler scenes may denoise well with very few samples.

Blender’s Built-In Denoiser Capabilities

Blender includes the open source OpenImageDenoise denoiser which uses machine learning algorithms to filter noise from renders. It runs on both CPU and GPU with multilayer and tile support for interactive viewport and final frame denoising.

OpenImageDenoise handles most types of noise well but struggles with fire, smoke, and similar fuzzy details. It also blurs motion and causes artifacts around fine lines and complex textures.

Blender also offers a feature called Branched Path Tracing which randomly bounces more rays around for better localized sampling. This reduces noise significantly before denoising but increases render times.

Using the Denoising Features

Denoising is configured in the Render Properties tab. Enable OpenImageDenoise, optionally enable Branched Path Tracing, and set the desired number of samples.

More samples will always improve results but 12-24 samples is often enough for OpenImageDenoise to achieve clean results for simple to moderately complex scenes.

Branched Path Tracing requires more samples to work well. Aim for at least 64, ideally 128+ samples when using it or for complex scenes.

Render your frames then tweak denoiser settings as needed on a per-scene and per-frame basis. Feature passes may help recover lost detail at the cost of more noise or vice versa.

Complementary Denoising Plugins

While OpenImageDenoise is very capable, dedicated third-party denoising plugins can provide superior results and specialized noise reduction. They tap into deep learning and computational photography algorithms beyond what Blender offers natively.

Popular options include Neat Video, Altus, Xnormal, and Denoiser. These plugins typically need to be manually trained per scene but deliver excellent detail preservation with tuned settings.

Some plugins focus specifically on environments and textures by analyzing references renders from other 3D software rather than single frames alone. This can help reconstruct fine details in textures that would normally be blurred.

Integrating External Denoisers into Your Pipeline

Third-party denoisers don’t run natively in Blender so the typical workflow is:

  1. Render normally from Blender allowing for more noise
  2. Export noisy frames to OpenEXR files
  3. Import frames into denoising software and filter noise
  4. Export cleaned up frames and re-import to Blender

This can be automated by scripting Blender, integrating command line utilities, and setting up proxies and placeholders to swap cleaned footage back into scenes.

With this pipeline external denoisers act as automated post-production noise reduction allowing Blender to focus just on path tracing and sample counts.

Example Setups for Common Use Cases

Optimizing denoising often depends on the specific scene and assets used. Here are some typical examples:

Architectural Visualization

Clean textures and moderate lighting complexity. OpenImageDenoise delivers excellent results on its own. Sample counts between 24-64 are often sufficient.

Product Shots

Lots of gloss, reflections, and fine label text. Requires 200+ samples minimum. Use Xnormal with multiple reference renders from Keyshot to better reconstruct micro detail.

Photoreal Characters

Skin, hair, and clothing require high sample counts 400+ minimum to not lose fine pore detail. Run through Neat Video using a 5K portrait render from Capture One as a detail reference.

Particle Simulations

Turbulent physics make denoising difficult and prone to artifacts. Enable Branched Path Tracing at 128+ samples. Use Altus in post along with motion tracking data.

Optimizing Your Scene and Renders for Denoising

Adjusting environment settings, materials, lighting, and renders specifically for better denoising can improve results and efficiency:

  • Eliminate overlapping transparencies and volumes in smoke and glass
  • Scale down emission strength to reduce fire and light flicker
  • Use non-raytraced ambient occlusion for niche occlusion needs
  • Lower depth of field sample counts post denoising
  • Bake indirect lighting into textures when possible
  • Use matcaps and faked global illumination tricks

Scenes that are less reliant on brute force unbiased path tracing will denoise cleaner and faster. Setting up albedo, normals, depth, and object ID render passes also helps plugins distinguish noise from detail.

Balancing Render Speed vs. Denoising Quality

Denoising quality is heavily dependent on having sufficient sample counts and render time. While plugins can smooth out noise surprisingly well even at just 32-64 samples per pixel, quality greatly benefits from 200+ samples.

Yet most denoisers also introduce artifacts, especially around motion, at higher sample counts. More processing can even over-smooth fine details.

Finding the right balance requires testing across various sample thresholds such as 32, 64, 128, 256, and 512 samples to find the point of diminishing returns for a particular scene.

Quality and speed also vary across hardware and engine tweaks such as tile size, kernel type, device memory limits, and feature passes. Benchmarking each variable against a standard validation frame is important.

Troubleshooting Denoising Artifacts and Flickering

Denoising can introduce artifacts such as blotchiness (splotchy areas), ghosting (overlapping elements), flickering over time, blurred textures, and other issues even with tuned settings and high sample counts.

Tweaking number of primes, kernel sizes, feature thresholds, and frame offsets may help. Masking problem areas can guide denoisers. Rendering problem shots on CPU vs GPU or vice versa sometimes improves results.

However fundamentally such artifacts point to scenes and lighting that path tracers still cannot solve efficiently even with AI assistance. In these cases the only recourse is either greatly increasing samples or simplifying and optimizing scenes.

Future Improvements to Denoising in Blender

The Blender foundation leads development of OpenImageDenoise which continues to improve over time. Intel and AMD also invest heavily into CPU and GPU optimizations for real-time path tracing and ML super sampling.

As hardware and algorithms advance, noisy renders and time-consuming re-rendering will become relics of the past even for the most complex animations and effects.

For now though, leveraging external plugins and tweaking scenes manually remains necessary for critical projects with tight deadlines and high expectations.

Leave a Reply

Your email address will not be published. Required fields are marked *