Thursday, January 29, 2015

Making Blurry Texture Crisp in 3ds Max

It is common to get blurry bitmap texture in renders, especially if the geometry is almost perpendicular to the camera line of sight (i.e. at glancing angle). Here is a render for illustration. Observe how the lines between tiles are blurred.

While reading the book "Architectural Rendering with 3ds Max and V-Ray", I learned about the filtering option "Summed Area" for Bitmap map under "Bitmap Parameters" rollout. Here is where the option is in Material Editor:
By default, the filtering method is "Pyramidal."
If you are wondering what image filtering is about, you can read the Wikipedia article on Mipmap. Basically a texture image needs to be filtered so that the rendered texture is anti-aliased.
Here is a comparison between the 2 methods.
Observe that the white lines between tiles are now crisp and nice.

... Too nice, in my opinion, that I wondered if there was a further story to this option.
According to Autodesk, both methods take approximately the same render time, but "Summed Area" method needs much more memory:
  • "Pyramidal" needs around 133% of the size of the bitmap;
  • "Summed Area" needs around 400% of the size of the bitmap.
This means that "Summed Area" method should be used sparingly. My own take at the moment is to use this for Diffuse maps of geometries, especially those at glancing angles to the camera such as ground, floor, et cetera. Perhaps Bump maps need "Summed Area" filtering depending on geometry and lighting. Specular maps should not need it.

Mental Ray used to not support "Summed Area" method, as was discussed in this CGTalk forum thread. However, I tested this and found that Mental Ray in 3ds Max 2011 supports "Summed Area" method.

Finally, there is an alternative method described by Neil Blevins.

I admit that the title of this post is rather bombastic. Apologies.

No comments:

Post a Comment