Blog Archives

MILA New Features – May

As the MILA shaders evolve, features will be updated here when possible. These shaders are inspired by the Material Description Language and you can find more on that from the GTC conference here: nVidia Material Definition Language for Coordinating Materials (Thanks to Saycon for the link in the comments)

This latest release includes some more user-inspired changes like:

  • A non-physical global clamp for reflection to eliminate hotspots (fireflies) from lights and interreflections
  • Independent direct and indirect contribution sliders on components to create non-physical but art driven look
  • Further moving of controls to global Quality String Options both for all MILA Quality as well as specific controls like “mila glossy quality” etc.
  • Continued work on the Quality controls adaptability meaning fewer tweaks, just set the shader look and hit render
  • Creating a Diffuse Reflection Detail Quality to replace Ambient Occlusion controls
  • Moving controls off the shader components to make them clean and easy, a move toward greater simplicity for mental ray (to be continued)
  • The elimination of unused or infrequently used controls
  • *experimental* propagation of additional buffers in secondary rays


The clamp option can be used as on or off (default is off) for controlling overbright highlights and reflections. It is a non-physical effect. This means it purposefully changes the energy in the render to avoid artifacts from insufficient sampling. This is usually caused by a very hot HDRI used to light a scene or a bright area light and the resulting indirect reflections.

This clamp option may also reduce render times because fewer samples are taken to resolve hotspots that cause variance in the image. The below image had an HDRI with a high value of over 7000 for the sun. Rendered at Quality 0.20 for Unified Sampling to amplify the effect of poor sampling. This also affects the resulting framebuffer contribution. Notice the areas that are not overly hot are maintained.

Clamp off and on

Clamp off and on

Direct and Indirect Contribution

A direct and indirect slider can be used to change the look of the material non-physically. Recall that Direct Reflection is the result of the light. Indirect Reflection is the result of the light from other objects in your scene. The easiest way to think of this is the direct diffuse is historically your diffuse pass and indirect diffuse is the indirect pass or “color bleed” from nearby objects reflecting light and measured by something like Final Gathering.

Below is an example with the effect of direct at 0.00 contribution and then indirect at 0.00 contribution on glossy reflection. You can adjust these independently to achieve a non-physical but pleasing artistic look in a material. This will also affect the resulting framebuffer contribution. These can be texture mapped as well for special effects.

Direct and Indirect scale comparison

Direct and Indirect scale comparison

Diffuse Indirect Detail

Diffuse Indirect Detail replaces the Ambient Occlusion controls with an On and Off switch globally, a distance parameter, and quality. Below is an example of on and off at default values.

Diffuse Detail on and off (animation)

Diffuse Detail on and off (animation)

Framebuffer Indirect Contribution Writing

*experimental* Additional buffers can now be rendered as seen in a reflection or refraction (indirect). This means you can get the matte color of an object written to its own buffer even if it is only seen in a reflected or transmitted ray. Below is an example where the turn blinker (indicator) writes its resulting color matte to the framebuffer despite being behind the lens cover of the light. It also contains information where it was reflected as well. This is useful to isolate and alter elements after rendering.

Headlamp with lens cover

Headlamp with lens cover

Amber Shader matte (color buffer) output

Amber Shader matte (color buffer) output

You can also pass the matte through another node like a rayswitch to further define the mattes generated through transmission (blue) or reflection (red) as seen below.

Amber material matte generated through a rayswitch

Amber material matte generated through a rayswitch

Now apply Glint!

Turn indicator with glint

Turn indicator with glint

Keep in mind that this object would be “baked” into the transmission framebuffer derived from the beauty. So changes after rendering would still be limited. This may also increase the render time as an extra color framebuffer is considered for anti-aliasing. If you wish to avoid that you can turn off “contrast all buffers” in the Quality Tab -> Framebuffer Rollout of your Render Settings.

Overall the goals for MILA are continued flexibility and simplicity based on MDL. Redundant and unused controls are moved and clarity in settings is being improved.

Why all of the “Quality” Controls?

Also notice the increase in controls for “Quality”. This is important since the underlying method or algorithm can be hidden under a simple control. This is already true of Unified Sampling and the Native IBL.

Why is this useful?

By hiding the method, developers can later change or improve it without introducing new controls or altering the old ones. This was true of the refinements made in Unified Sampling in 3.10. Artists can continue to work as the renderer improves without learning new techniques.

This is part of how mental ray will continue to simplify the workflow for users without sacrificing flexibility or speed. This will also make the integration of new features much easier in OEM products like Autodesk Maya since documentation and UI changes will be unnecessary with added improvements to existing features.

MILA updates

On the nVidia forum you’ll see the Layering Library continues to evolve. New features will include:

  • Improved weighting between layers
  • A Quality control for glossy reflection and refaction (to replace ray count). This handles these effects based on roughness and importance. (Changing the roughness of a surface no longer requires re-tweaking ray counts for smooth renders) Also includes a global scene control defaulted to 1.0 as a String Option This will allow developers to improve and change the algorithm without interrupting the user’s workflow.
  • A new and improved flakes shader that will continue to evolve with more flexibility including cellular noise, different distribution, and shapes. Users can control weight, density, perturbation and more.
Multi-level and color flakes

Multi-level and color flakes

Something to note about the flakes shader is the use scenarios are going to be beyond that of metallic flakes. Think of cosmetics packaging and snow for instance. Some more controls and a node-based design will help you to combine these in more ways. The previous issues with repeating patterns found in the flake shader have also been resolved.

**IMPORTANT: A change in controls will often cause a break in Maya for previous scenes. You may find your assigned shader groups are no longer attached to a material. Also, the current documents need updated in the next release**

Flake Applied as Glossy Reflection Layer Bump

Flake Applied as Glossy Reflection Layer Bump (more subtly can be used to simulate “orange peel” effect)

Flake as a Weight to red Glossy Reflection
Flake as a Weight to red Glossy Reflection

SIGGRAPH Presentation

You can find the presentation here:  nVidia Advanced Rendering and Ray tracing

You can also find a short blurb about coming features here: ARC Forum SIGGRAPH recap

Mentioned are features such as:

  • Ambient Occlusion on the GPU with mental ray
  • Layered shaders (layered components) that include the SSS shader without lightmapping. They have their own framebuffer mechanism with passes for added flexibility in OEM packages.
  • Object lights with a new shader independent of OEM integrations
  • Light Importance Sampling (IS) and Material Importance Sampling. This makes the usage of objects as area lights much easier and faster than before
  • Multiple Motion Transforms (think curved paths and light streaks)
  • Light Path Expressions (LPE) in iray
  • Kepler support for iray 3 in mental ray



Updated PTex shaders from nVidia

Take a look here: ptex shader update available

You’ll find updated PTex shaders directly from nVidia.

From Gunter (nVidia Developer for mental ray)

The update has been announced in separate message. Please make sure that the registry entry
registry "{_MI_REG_SHARED_DISPLACEMENT}" value "on" end registry
is set, it will fix a lot of seams/gaps in your scene (which apparently does not have higher precision uv values at the seam, this is not a mental ray issue).
The update is required only when using the Maya vector displacement mode, there are no other changes in the ptex shader.