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.

About David

I am a VFX artist that specializes in Lighting and Rendering. I spend a fair amount of my time supplying clients with artistic solutions as well as technology solutions. With a background in fine art and technical animation training, I strive to bridge the divide between the artist and technologist.

Posted on May 6, 2013, in Optimization, shaders and tagged , , , . Bookmark the permalink. 31 Comments.

  1. Thanks, but still I’m not able to download and try this…

  2. Hi David ! thanks for giving us good news about what’s next…btw the nvidia GTC On-Demand presentations are up…
    – Easily Achieved Photorealism with NVIDIA Iray.
    – The NVIDIA Material Definition Language for Coordinating Materials between Renderers.

    Click to access S3560-NVIDIA-Material-Definition-Language.pdf

  3. Thanks for the update!
    And thank you for your very informative and technical blog!

  4. Once again thanks for the excellent info David! Great stuff coming up for mental ray.

  5. I like how you can render out a matte of the transmission and refractions. I’m in the process of developing a compositing workflow, that gives me the most power and flexibility, so far only small baby steps, if anyone would like to offer a hand, I would appreciate it 🙂

    The headlight compositing looks really well.

  6. What is the clamp level? Can I set it?

    • Not currently. Luminance 1 right now. There’s still the internal balance between complexity where users are trying to understand the exposure controls and a simple one-click that solves “most” issues. I suppose users could suggest a scalar control or even a color.

      My initial thought is simply to control fireflies until a solution like improved MIS comes along (ideal). Basically the “firefly” filter in iray. Not sure I’d like artists trying to use that to control exposure instead of Nuke or Photoshop. Duplicates the lens shaders in that way anyway. This also solves the issue where users have been asking for a way to clamp the resulting framebuffers that a lens shader does not solve. This solves them in indirect reflections at least.

      • Except this breaks the shader dead in max, when you use physical lighting. Units are then in (by default) lux (ish), i.e. in the multiple thousands, routinely. “1” is black in max. So – completely, and utterly – unusable.

      • So far there have been no artifacts using it. But this is just a first try on the Beta to see where to go from here since it’s a new feature.

        But yes, it’s not physical if that’s what you mean by “breaking it”. Since these are in Beta it’s up for changes and tuning. Can always comment on the forum what might be a good direction for the control.

        At least for animation and VFX we occasionally require non-physical realism. Not because we really want to work that way, but because the client asks for something we are required to fake.

  7. The headlight is so attractive, That is a compositing technique that is unfamiliar to me.

  8. Was the clamp switch removed from Maya 2015 SP2 ?

  9. Thanks, I’ll do the research 🙂

  10. If the Indirect contribution for the base layer is set to 1.0, I assume this should turn on the mILA version of AO, without the need for me to bake out an AO map and blend it with the mILA shader, as far a I’m aware you can’t add an AO shader to mILA, unless you can though a custom layer ?

    What is the Color and Colorfb represent in the Extra Color buffers, I can’t find it in the documentation ?

    • No, that refers to indirect light/reflection contribution. Keeping it at 1.0 is physically correct. Look at the section called: “Contribution: What’s an example of direct and indirect weighting?” MILA has built-in universal AO + Colorbleed available through string options, but coming technology will replace this feature in rendering. In the meantime an AO pass will work like before or you can render one on the GPU using the exposed options in Maya 2015.

  11. I really shouldn’t bother with AO+Colorbleed string options because it’s around the corner that things are about to change, or I can if I want to have options ?

  1. Pingback: The Layering Library (MILA) Part 2 | elemental ray

  2. Pingback: Maya 2016, new features and integration | elemental ray

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: