New Bump/Normal Filtering in Corona

What is filtering and why is it needed? 

Bitmap textures are pixel data based inputs. The border between each pixel is sharp and precise, and when rendering in a resolution in which the texture density is low, the texture can look undesirably patchy.

 

Default filtering when a bitmap is loaded in the host app (3ds Max or Cinema 4D): 

PyramidalFiltering.png

 

The same texture rendered with no filtering: 

NoneFiltering.png

 

If the texture is rendered from far away, with relatively the same texture pixel density as the render resolution, unfiltered textures can still look fine. But this does not guarantee consistent and good results in any resolution and distance, especially if the scene contains animation.

This is why render engines filter the textures. As you can see, it depends on the texture density at a given resolution or at a given point. The denser the texture is (or further away in rendered view), the more filtering will be applied.

The parameter responsible for the intensity of the filtering in Bitmap nodes (i.e. in the host app Bitmap and Corona Bitmap) is "Blur" (3ds Max | Cinema 4D). The farther away the map is, the greater the blurring. The greater the Blur parameter value, the greater the effect. 

 

Blurring in the host app Bitmap: default value

Blur1.png

 

Blurring in the host app Bitmap: blur value increased 

Blur20.png

Notice that the texture close to the camera stays almost the same, but further away it is blurred.

 

Sometimes, and for some material channels, texture filtering can cause loss of detail or unwanted effects. For some channels, e.g. opacity, the filtering is usually disabled - this is to have sharp cut edges with opacity texture and no fade-away effects. Different render engines implement the filtering of textures differently.

Until Corona 11, Corona used Linear filtering for all textures (except Opacity) by default, including the Bump and Normal maps. For high resolution bump/normal maps, this could cause inconsistent results between low and high resolution renders, and also for close-up and far-away renders.

 

Corona 10, Linear filtering:
Metal plane with bump map from far away:

Linear_0020.png

 

Metal plane with bump map from close-up:

Linear_0007.png

 

Animation:

LinearAnimation.gif

 

Note: In the examples the "Blur" parameter is higher than the default value, to showcase the effect better.

Notice that starting from some distance away from the plane the detail is lost. This could also lead to another issue - doing Interactive Rendering (low resolution), tweaking the settings, then getting different results in Production Rendering (high resolution).

 

New "Roughness Modulation" filtering mode for Bump/Normal maps

In Corona 11, the above issues have been addressed with a separate control for Bump/Normal maps filtering, in Corona Physical Material (3ds Max | Cinema 4D) and Corona Skin Material (3ds Max | Cinema 4D). New default - "Roughness Modulation" mode has been introduced as well. It can be selected in the Advanced options of the material:

3ds Max

UI.jpg

Cinema 4D

roughness_pbr.png

 

Note: All the materials created prior to Corona 11 have "Linear" mode selected, for backward compatibility. Newly created materials will have the "Roughness modulation" mode by default, unless the default filtering mode is changed in the Corona System Settings or in the Corona Preferences Settings in Cinema 4D (3ds Max | Cinema 4D):

3ds Max

UI_System.jpg

Cinema 4D

rough_pref.png

 

The same Metal plane scene rendered using the "Roughness modulation" mode: 

RMAnimation.gif

 

Notice that the detail is preserved better and is visible even from far away. This helps achieving consistent results regardless of the resolution and distance. "Roughness modulation" mode, as the name implies, changes the roughness at a point to imitate the roughness details coming from fine bump/normal maps.

 

The "ground-truth" or the sharpest results will still be achieved with "None" filtering mode, or with very low "Blur" values: 

NoneAnimation.gif

 

But keep in mind that this can cause longer rendering times, higher noise, and more flickering in animations, even with steady cameras.

 

That is why Roughness modulation is chosen as the new default to get the best of both types.

 

Converting to a specific filtering type - 3ds Max

You can use Corona Converter to convert the filtering mode of all Corona Physical Materials in the scene to a specific type.

 

Limitations

  • The normals filtering methods in Corona Physical Material and Corona Skin Material affect only Corona Bitmaps (3ds Max | Cinema 4D).
  • 3ds Max and Cinema 4D maps are filtered on their own and Corona has no control over them.
  • If Corona Bitmaps are used in combination with 3ds Max or Cinema 4D maps, filtering type may or may not produce the expected results, depending on how much Corona Bitmaps contribute to the material's bump/normal channel.
  • If Corona Bitmap goes through any 3ds Max or Cinema 4D map, and filtering type is set to "Roughness modulation", then its filtering is reverted back to "Linear".
  • The "None" filtering method works always and in all combinations, affecting only Corona Bitmaps.

3ds Max

FilteringGraphs_PNG.png

 

Cinema 4D

ROUGHNESS MODULATION GUIDE.png

 

Was this article helpful?
2 out of 2 found this helpful