Here is an explanation about an aspect of Cycles that’s often misunderstood and that’s really important for render speed and noise. I have explained this to a few people, but it’s a pretty complex concept so I think it would be better to write it down properly and in great detail so I can link it for future reference.
–
I have an example scene here, which is a corridor lit entirely by point lights inside of tubes. It is extremely noisy, to the point it’s hard to tell what you are looking at. This is rendered with 32 samples, no denoising. I am going to use those exact settings for all versions of this image for easy comparison of noise levels.
–
Part 1-
Let’s explain why there is so much noise.
Cycles is what’s known as a backward path tracer. It works by shooting rays out of the camera and tracing the path they took to reach the camera in reverse. This works really well if the light source is easily accessible, the ray can just bounce off a surface and find the light immediately.
This is a good thing in most situations, because it ensures only the rays that can reach the camera are calculated. If the rays were done forward, starting from the light, most of them would go away, be lost outside the camera’s cone of view and would do nothing but be wasted.
However, in this scene, it becomes a problem because the scene is mostly lit indirectly. The bright patches of light on the walls cause light bounces that account for most of the light in the scene.
Those patches of light act like area lights, except they are entirely in the second bounce and Cycles doesn’t know they exist and that it needs to send rays at them and treat them like light sources. The only rays that do anything in this scene and manage to find the lights are those that happen to randomly bounce at the patches of light by pure chance after failing to directly find the light object.
So in this scene, most samples fail to do anything. You can easily see it by rendering with 1 sample, most pixels will be black: those are all rays that failed to find a light source and were wasted doing nothing. You don’t see that happen in outdoor scenes, because the sky is very easy to find.
This problem is also common in scenes where a beam of bright sunlight enters through a window and makes a patch of light on the floor. That patch of light is like an area light that Cycles doesn’t know about. Look at all those black pixels that still didn’t manage to succeed once even after 32 samples.
–
Part 2-
Solutions
Cycles has an official answer for this problem: path guiding. It’s designed to make Cycles aware of those patches of light and increase the chances rays will bounce their way. Sadly, it’s only for CPU at the time of writing this and so slow that brute forcing the render on GPU is faster. Still, let’s see the result after 32 samples as a comparison.
There is a bit more light reaching the dark areas of the room and the middle of the ceiling, so it is doing something, but it’s only a mild effect and barely affects the noise level. Not worth using for now unless you are already rendering on CPU anyway (some render farms use CPU).
–
A much more effective solution, if the lighting won’t need to change, is to bake the light to textures. This will allow two advantages: you get to do the slow render only once for an animation, and this will also cause the patch of light to become an actual light source (as an emissive material) for anything that isn’t baked, like characters walking in the corridor.
This does assume that you know the basics of the baking system and also how to use multiple UV sets if the existing UVs aren’t good for baking.
I am going to bake the walls, ceiling and floor, so this is an ideal scene where almost everything can be done.
I bake the diffuse direct and indirect, but not the color as I want just the light in this bake, not the color/texture of the surface. Denoising is not used during the bake, because it doesn’t play well with baking (makes ugly seams), you have to do it as a separate step in the compositor if you want it, saving the result as an EXR after.
Once the bake is done, I completely replace the original material with an emission shader, multiplying the color or texture that was there before with the baked light so I can have both together.
This is the result, all walls are completely noiseless instantly at render. The lighting is all in the textures.
However, my original floor was shiny, so I am going to add that back in on top of the baked light.
The reflection will need some samples to clear the noise, but it’s still much better than without the bake.
Part 3-
What if baking can’t be used
The bake I have just created renders really quickly, but it has some flaws that greatly limit the cases where it can be used.
- It’s really hard to create, because it needs very high samples and the denoising needs to be done as a separate step for good results.
- It replaces the original material, so not suited for complicated shaders.
- It doesn’t work with bump.
- If a character walks on that floor, there won’t be shadows cast on it because the lighting is completely static, this would prevent baking the floor.
I have an alternate method that’s a bit easier to implement. It doesn’t bring as much of a speedup, but it leaves the original shader intact, allows shadows, bump and reflections while still greatly reducing the overall noise.
Instead of using the bake directly as a texture that’s visible to the camera, I am going to make it visible only to the indirect bounces.
For this version of the trick, the bake won’t be directly visible to the camera, so it doesn’t need as much quality. I am going to use fewer samples in the bake and I won’t bother to denoise it. I am also going to include the surface’s color into the bake this time as it will be simpler to deal with.
This time, I keep the original material fully intact, but I plug the bake using this setup at the end. The material will look just like it always did to the camera, but rays that bounce indirectly on this surface will instead perceive it as the baked version (this solves the light patch problem).
Not as crazy as the directly visible bake, but higher quality once fully rendered and preserves the direct light in full detail. This is still the same 32 samples as the first render. Not only is there much less noise, it also rendered faster.
This example is the best case scenario as almost everything uses the trick, but even a room full of furniture will see its noise halved if you do just the main walls, floor and ceiling.













