Fireflies caused by the sun from the physical_sky

 

This scene consists of a boat model on a plane that represents the sea. Both models have standard_surface shaders assigned to them. As you can see in the image above, there are many 'fireflies' in this scene. In this situation, they are caused by the bright sun disc from the physical_sky shader that is connected to a skydome_light. This kind of noise is difficult to remove by simply increasing the number of samples in the render settings. However, there are several ways to overcome this type of noise. We will work through some of these methods below. 

 

AOVs images

We can instantly tell that they are coming from two places:

  1. The boat shader which has some specularity.
  2. The sea shader which also has some specularity. 

 

When rendering out these AOVs, the fireflies are clearly visible:

 

Specular Roughness

In some situations, increasing the specular_roughness may help to reduce fireflies as it is effectively creating a larger, softer specular hi-light. Increasing the specular_roughness of the standard_surface shader that is assigned to the boat reduces the number of fireflies. However, in this instance, there are still some fireflies evident when using this method.

 

Specular Samples

Due to the almost mirror-like surface of the sea shader, we are getting extremely high Specular values reflected from the sun onto the Specular sea surface. These high Specular values are very difficult to sample and therefore, in this situation, increasing the number of specular_samples does not help to eliminate the fireflies.

 

Rayswitch

A better method is to assign a simpler shader for Specular and diffuse rays using a ray_switch shader.

  • Assign a ray_switch shader to the boat. 
  • Connect a standard_surface shader to the diffuse_reflection and specular_reflection rays of the ray_switch shader. Make sure that the specular_weight is set to 0. This will force specular and diffuse rays not to evaluate the specular component of the shader, which is the source of the fireflies.
  • Connect the boat's standard_surface shader (with specular_weight) to the remaining attributes (camera, specular reflection, transmission, and shadow).

 

When we look at the AOVs we can see that the fireflies are not visible:

 

Clamp Sample Values

Another option is to clamp the output value of the pixels in the scene. This control will clamp pixel samples to the specified maximum value for all shaders in the scene. The images below show the effect clamping has on the fireflies. A value of 1 eliminates the fireflies completely. However, it also removes any dynamic range from the render.

An .ass file is available here.

  • No labels