Register now for an interactive discussion on the new mental ray for Maya on February 7 – Don’t miss out! Click here or on image below to register.
In this fourth post in a series on mental ray for Maya 2016 Render Settings, we follow up on the Using Modern Materials and Lights post with more detail on the new Physical Area Light.
Where to find the new Physical Area Light
Note the new mental ray section. All lights below the line are mental ray lights.
Convenient Creation of Maya Area Light
The Physical Area Light is a Maya Area Light set up using the mila_light shader, for best operation with Layering (MILA) materials.
By default, the settings are as follows:
- Physically-based falloff (Light Decay is Quadratic)
- Shapes supported by mental ray (Light Shape Type is Rectangle)
- Intensity connected to the mila_light
- Color connected to the mila_light, supporting textures
Scene scale matters
The Physical Area Light has physically-based falloff (Light Decay is Quadratic) so the intensity of the light compared to the scene scale matters. It is the number one reason we find when troubleshooting a physically-based scene that renders black or dark. Take the following example.
A default polygon plane is created on the default grid.
The plane is scaled up to the size of the default grid.
A Physical Area Light is created and moved to 4 units above the plane.
Then rendered, noting that the default intensity of the light is 100.
Now the light is moved to 10 units above the plane.
Rendered. And barely lighting this plane, so more than that requires more light intensity.
Also, the size of the area light matters.
A flashlight can light up a baseball, but it cannot light up a baseball field. This kind of thinking has to start informing your lighting decisions. But once you get used to it, it may actually help you work more efficiently to produce realistic lighting results.
With Light Importance Sampling (LIS) on, the area light Samples settings are ignored, and quality of direct lighting can be more easily controlled with the Lighting Quality setting in the Quality tab of the Render Settings. This is especially useful for scenes with many lights.
Because the Physical Area light automatically uses the texture-able mila_light shader, one can set the input for the light Color with a Maya File node. By the way, we also updated the physical_light to be able to use textures, but now the mila_light is preferred, as it will evolve with the physical area light.
Example using an HDR textured rectangular area light. The intensity multiplier scales the values whether they are HDR or LDR. It’s just a multiply of whatever the texture returns. In other words, the texture is not normalized before multiplication.
Spot edge falloff
The physical area light defaults to use a point light output pattern over the surface area of the light. In order to use a more spot-like falloff for the edges of the area, we need to adjust the area light. To do this, change the light type of your Physical Area Light from Area Light to Spot Light. It is still a Physical Area Light because it uses the light shape. The mila_light shader remains hooked up to the color and the intensity.
We are now beta testing Pi-ray, our exciting new version 3.14 of mental ray, within Maya 2016, in a private mental ray For Maya beta test. If you are interested, please email firstname.lastname@example.org, with your beta test request. Please state your company, how you use mental ray, and your machine configuration. In addition to registering in our forum, you need to have Maya 2016 and the mental ray for Maya 2016 plugin installed before installing the beta plugin.
The following image is rendered with the latest global illumination (GI) algorithm in 3.14. Enter the beta test to find out some great things about the latest GI.
Modern Materials and Lights
We recommend physically-based materials and lights to fit a modern workflow. In this post, we focus mostly on the materials, and we will follow-up with more posts on lights. These materials are designed to work more compatibly with unified sampling, and the simpler UI quality controls. They provide the flexibility of balance in adjusting global vs. local sampling quality controls.
The Layering (MILA) material not only provides better compatibility with unified sampling and quality controls, but it also provides simple passes which can help you to adjust the quality settings.
For example, this interior scene using mila materials clearly demonstrates the difference between direct and indirect lighting. The left picture has no indirect diffuse lighting as it is turned off in the Render Setting Quality tab, and the right picture has Indirect Diffuse (GI) Mode turned On with a depth of 4. Note that the 2 pictures below are organized in a gallery, so that if you click on them, you can see a larger version. Click on x upper left to get back to this page.
The direct lighting quality is controlled with Lighting Quality, while the indirect quality is controlled with Indirect Diffuse Quality when Indirect Diffuse (GI) Mode is On.
Then, we can see the relationship between the pass results with respect to their quality. Note again that the 4 pictures below are organized in a gallery, so that if you click on them, you can see a larger version, and step through each with a right, left arrow.
Below we increase the Indirect Diffuse (GI) Quality to reduce noise in that pass.
Adjusting (MILA) Material Quality
Use the (MILA) Material Quality to address noise caused by the material sampling. For the layering library (MILA) materials with either glossy reflection/transmission or scatter components, the Material Quality controls the number of samples, ie the outgoing rays split out from the interaction of the material with an incoming ray. In a sense, this is the indirect quality aside from the indirect diffuse, i.e., the indirect glossy and scatter components.
When Advanced Settings are on, we provide separate Glossy Quality and Scatter Quality controls in case the noise differs significantly between these components. Note that the material quality settings are relative, so controlling Material Quality will continue to control both glossy and scatter quality. The material quality is multiplied by glossy or scatter quality to determine a quality for each respective component, with all defaults at 1.0.
Note that the passes for indirect glossy/specular and scatter directly correlate in quality to these settings.
Increasing Glossy Quality
Increasing Scatter Quality
Scene Settings Shared across Materials
Note that for the MILA shaders, we provide quality settings by scene. In other words, all the materials in the scene share the settings. This makes it easier to control in a typical scene with many materials, rather than per-shader. It also allows the renderer implementation to optimize better.
Besides quality, we have several other useful render settings that are shared by the mila materials. They are in the Scene tab in the Materials section.
Reducing very high dynamic range results
MILA Clamp Output
Clamps the output of mila_material. This is an enable, for using the clamp level. If off, light transports through the scene in the most physically-accurate way, though with high dynamic range lighting, more quality may be required. The default is off.
MILA Clamp Level
The level used for clamping, typically between 1 and 10, based on desired output.
Understanding internal reflection
When making a material to model colored glass, not only do transmission paths inside the glass need to be colored, but also, if one of those paths reflect inside the glass again (internal reflection), it should be colored. Depending on your scene, this may be more or less subtle of an effect visually.
A material with a reflection component could be on the outside or the inside, so the max distance parameter for a reflection component needs information as to whether it is modeling physically-correct internal reflection, or modeling the legacy max distance render trick for the external reflections. We recommend using colored max distance primarily for internal reflection, when combined with a transmission component, and therefore, make this the default.
MILA Use Max Distance Inside
Use the max distance for reflection internally for colored glass. On is the default. If off, the max distance is used for external reflections, those bouncing off the outside of an object, instead of internal reflections.
Scatter look adjustment
Modern rendering uses more quantities that depend on scene units, such as the distance to scatter with mila_scatter. In the Materials section of the Scene tab, we provide a global scaling factor for scatter distances.
MILA Scatter Scale
The MILA Scatter Scale is very convenient for re-using materials across different size scenes. It multiplies by the local scale control, if exposed, in the (MILA) scatter component. Below we show how increasing the scale makes the scatter pass look more like the diffuse pass, with less and less scattering.
For practically good results the scatter pass should look barely noticeable when mixed in with all the other passes.
Layering complexity not a significant performance factor
At SIGGRAPH 2015, I noticed how many users were still concerned that the number of layers in a material may affect performance. For modern materials, such as MILA and MDL, this should not be of concern. The elemental component structure provides the renderer with this ability. The material can either be selectively sampled or flattenend for a single minimal BSDF representation, and as the depth of a ray increases, more optimizations can occur.
Use physically-based mental ray lights such as the Physical Area or Environment lights. See Create>Lights>mental ray section
All lights in this section default to quadratic falloff for physically-based lighting, and compatibility with the modern techniques including Light Importance Sampling (LIS). With LIS, the Lighting Quality can be used for direct lighting quality.
In our next post, we will introduce the Physical Area Light, and in another post we will provide more detail for the Object Light, which is a special case of the Physical Area Light assigned to an object for emission. We will also provide a post on how to use the newly packaged Environment Lights.
In this second post in a series on mental ray for Maya 2016 Render Settings, we assume you are familiar with the concepts presented in the introductory post.
Adjusting Overall Quality
Overall quality is the primary control for adjusting quality vs. speed. When there is noise in the scene, typically increase this quality.
In our example scene below, we set Overall Quality to an extremely low 0.01. Please note the edge aliasing on the tops of the spiral cone object. The back wall also has a bump texture which has noise at this quality setting.
In the following images we increase the overall quality from 0.2 to 1.0 by 0.4. Note the better anti-aliasing at the edges of these objects, in particular.
To visualize how eye ray samples were placed in the rendered image, from the Diagnostic tab check Diagnose Samples before rendering. With this checked, each render creates special informational passes for diagnostics including samples, error, and time per pixel. To view it, from the Render View File menu in Load Render Pass, choose the Diagnose samples pass.
Note the green arrow above pointing out useful information in the bottom bar. Wherever you locate the cursor on the image, in this bar you will see the pixel location, [202 48], and the number of samples, 15 in this case.
Here are a set of samples diagnostics to match the increasing quality from our scene above from 0.2 to 1.0. Whiter areas have more samples.
Balancing Quality Adjustment
Although Overall Quality can be used to handle most quality vs. speed adjustment, we can provide understanding how to get to desired results more efficiently. Understanding is important to prevent artists from quick fixes that turn out to take longer than originally planned.
With that said, it is possible to balance the local vs. the global quality settings for faster renders. This balance will evolve as machine resources change and rendering technology adapts. For example, a brute force render running on GPU might rely solely on a global quality control, since pure path tracers do not split eye rays by design. However, current mental ray provides flexibility in how much you want to tip this balance one way or the other. It can evolve at your pace, and fit your CPU and GPU resources as they evolve.
Use the local quality controls when there is an unbalanced amount of noise from lighting or from materials. For example, if the direct lighting appears to create more noise than other aspects of the scene, increase the lighting quality for optimum speed vs. quality tradeoff. Once adjusted, the overall quality can be used as the main control again.
Consider lighting quality adjustment when the lighting has a large variation. For example, when using a large (> 40) number of lights, or several large area lights. Or when using a high resolution, highly varying HDR image for your light texture. For example, below we have one rectangular area light showing its HDR texture clearly as not uniform. Its range reaches up to values of 70 in a thin horizontal line in the middle of the thick one you see at this exposure. It required less light intensity as well as high lighting quality.
Consider indirect diffuse or material quality adjustment when noise appears on indirectly lit diffuse or glossy surfaces. Or on surfaces with a lot of geometric detail. If you ever had to work with an ambient occlusion (AO) pass that needed more samples, you have a rough idea of the kind of look difference due to geometric variation. The surface details can come out a bit more clearly, with less noise.
Adjusting Lighting Quality
The Lighting Quality controls the number of direct light samples used, when a ray hits an object. It takes into account the number of lights, both point and area, and other factors to determine how many light samples to use.
The scene used for our example has 14 area lights with sphere shapes. Note the quality of the direct lighting on the floor as we increase lighting quality. In this series, we keep Overall Quality at 0.25 and increase Lighting Quality from 0.2 to 1.0 by 0.4 steps.
When using Lighting Quality in the new UI, mental ray overrides the explicit area light samples set in each area light with a global samples-per-light setting. (Currently, it does not gray out the samples settings in the area light AE UI). The total number of light samples are re-allocated based on importance. For example, more samples may be taken from closer, or higher intensity, lights.
Tip: If you are having difficulty isolating the visual noise for adjusting direct lighting quality, use MILA light passes to help you see it. In the Scene tab, enable the direct diffuse pass and adjust to minimize noise in that pass, compared to other passes or the beauty itself.
For example, the following images show the direct diffuse pass from the above renders, as Lighting Quality increases from 0.2 to 1.0 by 0.4 steps.
We will show more detail about light passes in our upcoming post on light passes.
Environment Lighting Quality
Controls the number of environment light samples to use. Also using importance, it is separate from lighting quality and enabled when environment lighting is enabled. We will give examples of this in a later post in this series about environment lights.
Adjusting Indirect Diffuse (GI) Quality
We encourage the selection of On (GI Prototype) mode, over Finalgathering and other legacy modes, for its reduced controls and higher quality. When On, mental ray uses a new technique to characterize arbitrary material shaders, while also providing non-interpolated brute force sampling paths for ease-of-use.
The Indirect Diffuse Quality controls the number of samples split out for a diffuse interaction at a material. For the basic default Global Illumination (GI) mode of On, this controls the number of GI rays. In Finalgather (FG) mode, it controls the number of FG rays, as well as the FG point density and other FG controls.
Below as Indirect Diffuse Quality is increased, note the noise on the floor where the light has to reach from reflections off the walls, ceiling and objects.
To see it isolated as we did above with the direct diffuse pass, enable the indirect diffuse pass.
Diffuse Trace Depth
The Trace Depth controls affect how deep an individual eye sample path can go. The Indirect Diffuse trace depth has moved into the general Trace Depth section. When an eye sample originates from the eye, each interaction along a given path increases the ray traced depth count. The interaction type can identify different types of counts. For example, a Diffuse reflection or transmission counts toward the Diffuse depth, while glossy or specular reflection counts toward Reflection, and glossy or specular transmission counts toward Refraction.
Note: Currently, a Diffuse value of 0 means that the first indirect diffuse samples are taken, but then no others, when an indirect diffuse mode is enabled. In other words, the act of using an indirect diffuse mode automatically creates the first level in trace depth. However, this diffuse count starts after the first diffuse interaction, not at the eye. Compared to the rest of the depths, this means this number is one less in relative depth to the other interactions for a given eye sample. This matches legacy FG diffuse depth control. But this will be changed in the future to better match the other trace depth controls.
Material Quality is discussed in more detail in the next post on recommended modern materials and lights.
This is the first in a series of posts on mental ray for Maya 2016 Render Settings
We significantly changed the mental ray for Maya 2016 Render Settings User Interface (UI) in order to reduce time spent adjusting renders. The defaults aim for no-fuss rendering of the most frequently used and up-to-date features. Of specific note, our newest Global Illumination (GI) mode significantly increases ease-of-use and productivity.
We provide almost everything a user needs here within this UI. For example, a user should not have to type in string options anymore.
Members of both NVIDIA ARC and Autodesk, including UI designers and developers, collaborated to make this change significant. As stated in the Maya 2016 documentation for mental ray Render Settings, we aim to:
- Enable complete rendering without requirement to adjust or enable most settings. The defaults should enable the most frequently used features.
- Increase ease-of-use when adjusting settings to control for optimization and quality.
- Provide single global controls to reduce repetitive and potentially error-inducing settings across scene elements.
We also want to retain the flexibility of mental ray for production users. So we provide an Advanced Settings option on each of the new tabs. We hide less frequently used features in favor of a cleaner, more productive and simpler control for basic workflow. This leads users of all levels to what is fundamentally important to control.
Render Settings Tabs
We re-organized the mental ray Render Settings into four main tabs:
The Quality tab contains quality settings for controlling sampling. By using quality settings, instead of sample counts, we take advantage of better optimization schemes internally. We also believe it will be conceptually easier, once the community gets familiar with this style of control.
The Scene tab contains shared settings across scene elements, such as camera settings that should be applied to all renderable cameras. This is where we provide the new simplified mental ray Passes.
The Configuration tab contains settings that are more likely to be used across Maya sessions, and how a user likes to work with the scene. For example, the interactive rendering control for progressive rendering depends on a machine’s resources.
The Diagnostics tab contains settings that help a user with problem solving, or identification of areas for optimization.
Here, we provide an overview of how to adjust your scenes with the new UI, suggesting our recommended practice.
For new scenes, use the Overall Quality setting in the Sampling section as the primary control for speed vs. quality. It is located at the top of the Quality tab.This controls samples across a scene. Samples are not fixed per pixel. Rather, they vary in density per pixel region. More samples are taken in each region until the quality is matched.
In the next section, we provide detail to better understand how to adjust quality beyond the Overall Quality setting. With better understanding, we hope you can more quickly achieve your desired results.
Understanding more about quality adjustment
Here, we introduce the concept of global vs. local sampling. This concept is key to adjusting quality now and in the future, as rendering technology evolves.
The Overall Quality setting is a global setting that controls samples across a scene. Each sample starts a ray traced from the camera out into the scene. In essence, we sample the scene from the eye (E). Below, we show an eye ray (in green) over a work by Albrecht Dürer.
When an eye ray intersects an object, the eye ray may split into several samples. We will call those the local samples, in contrast to the global samples, because they are local to each eye ray. Below, we show a diffuse distribution of local samples split out for diffuse reflection.
For materials, the sample directions depend on the type of surface at the intersection point. For example, above a diffuse surface creates samples in the hemisphere above the intersection point. Because these samples tend to hit objects, it represents indirect light.
For lighting, the samples are taken from all visible lights in the scene. Below, we see a single light sample for the same intersection point. There could be more light samples depending on number and size of lights. Light samples represent direct light.
Traditionally, lights were only those elements specified explicitly as lights in the scene, and they had no size. However, as rendering implementations evolved, so did lights, from point to area lights, and now, emissive objects. Also, consider the light from an environment. Environments convert automatically into light sources by enabling environment light emission. When enabled, we provide a separate quality control for the environment lighting.Note that it is grayed out when not enabled. Furthermore, now one can create such a light more directly. See for example Create > Lights > Environment Image (IBL).
Similarly, we provide a separate control for indirect diffuse (GI) quality in materials, even though it is conceptually a part of material quality.As global illumination techniques have evolved considerably, so have the ways to control these techniques. Yet, the Indirect Diffuse Quality applies to any Indirect Diffuse (GI) Mode selected, and to any material used.
In our next mental ray for Maya 2016 Render Settings post, we provide more details and examples for Adjusting Quality.
The Layering shader library (MILA) in mental ray 3.12 provides a flexible, component-based set of shaders designed to work with each other to accommodate most look development needs. It is more optimized for modern rendering usage of unified sampling, and quality control. It is more efficient with light sampling, and built to take advantage of light importance sampling. It also provides a lightmap-less subsurface scattering component.
In this post, we show how to use the Layering (MILA) shaders in the UI for Maya 2015. This is a first step, but the main concepts will be carried through further steps and across DCC applications. We are looking into providing a similar workflow for 3ds max.
Components – base and layers
The first concept is that of a base component with layer components placed over the top of the base. We provide elemental components for layers, and base combination components for the base layer. You may hear us use the term Phenomenon for a pre-combined network of shader nodes. The base components, except for pure Diffuse are these combination components called Phenomena.
A newly created mila_material always starts with a Diffuse base component by default. Here is what you would see in the Attribute Editior (AE) for the mila_material if you wish to select a different base component.
On the left below, we show a head (courtesy of 3D Scan Store, http://www.3dscanstore.com ), using only Diffuse, and on the right, the Diffuse (Scatter) base component.
As mentioned, we have a set of elemental components for layering over the base. These provide for elemental material characteristics such as diffuse, glossy, specular reflection and transmission. We have a diagram below left that we typically show so you can see the light path representation of these elemental components. On the right, we render each of these components isolated on each sphere to correlate with that diagram.
On the left below, we show the Diffuse (Scatter) to compare with the right, where we have layered two glossy reflection components on top of that base.
On the right, we show the elemental components you may select in the UI currently, categorized by Reflection, Transmission, Subsurface Scattering and Emission. All of these can be layered on top of the base or other layers.
To add a new layer on top of the current layers, a user clicks on the +layer tab/button on top of the UI in the AE for the mila_material, before being presented this elemental component selection menu.
There are three different types of layers, for which we need to explain weight.
What is weight?
For a given layer, the weight represents a percentage of the incoming energy. A layer can be weighted simply, or can have some directional dependency. For example, a Fresnel weighted curve derived from an Index of Refraction can be used to multiply by the weight, so that the layer has higher weight at grazing angles.
A Weighted layer is simple, as the weight represents the incoming light energy used.
A Fresnel layer uses an index of refraction input for directional dependency.
A Custom layer uses a Schlick approximation for directional dependency. Those familiar with the mia_material may recognize the controls for weight at facing and grazing angles and a curve exponent.
The mila_material AE UI presents layers in a top-down fashion, so one could imagine how the energy comes in at 100% from the top, while each layer takes away a percentage of that energy. It gives you a notion of the material as if looking at a cross-section. The base on the bottom is always considered as 100% of whatever is leftover, and therefore we don’t expose the weight for the base layer in the UI.
Above, the top layer receives 20% of the incoming light energy. The middle layer receives 25% of the 80% leftover energy from the top layer. One quarter of 80% makes another 20% of the overall incoming energy, and the base receives the leftover energy from the middle layer, which is now 60% of the initial incoming energy.
The UI also provides for mixing components in a given layer. One can think of a mix like a blend of two paints. This diagram depicts three layers, with the middle layer containing a mix of two components. The mix is built as the layer components are placed on top of each other.
In the Maya AE UI for mila_material, when there is a layer on top of the base component, a user can click on the +mix tab/button to mix a component into the top layer. The weight of the mix will take energy away within that layer. There will still be an overall layer weight for the mixed components. In the example below, this is actually a Fresnel layer mixing two different roughness variations of glossy reflection in a 50-50 mix.
The weight may also be considered conceptually like a masking function, for a material placed on top of another material, as can be shown with the following image on top of the head we’ve already shown above. Now he’s ready for paintball.
So what does this mean for look development in terms of how to approach layering for something you want to match?
In our GTC presentation, David Hackett from The Mill used the following example, from a Norfolk Southern commercial (assets used for demonstration here are courtesy of Norfolk Southern Copr., “City of Possiblities”).
Here we see the final layered material rendered with a background plate and reference mirror and gray balls.
To start, we can now think about the look of the original object based on its material properties, rather than which shader node attributes to tweak. We examine a variety of references. This one obviously has bright light hitting it.
How shiny is it? How shiny are the various layers? Is it a blend of shiny characteristics?
Where do other properties like rust or dust show up as potential layers?
Note the rust is not as shiny, and has more noisy color variation.
This translates into various component layers for the mila_material, including masks for weighting. These masks can be generated in Mudbox or Mari using UV tiles.
We think about the individual parts starting with the base paint layer which is primarily diffuse below left. Then, add a glossy reflection layer using the Fresnel layer. The roughness has a texture mapped to it below right.
Now we use a mask to weight a Grime layer. On the left below, we show it more obviously with a red color, and on the right we use the diffuse reflection component we intend.
At this point we have three layers in the UI. A base diffuse with a glossy layer, and then on top of that, the masked diffuse layer for the rust. That is what we see on the left below. For further detail, we add a more subtle dust component and mix it in with the rust. On the right below, we see the resulting mila_material AE UI, noting slight gray color shift for each level down in the shader network heirarchy. Note also that we’ve collapsed the original rust diffuse reflection component displayed underneath the new dust diffuse reflection.
With more subtle additions, we again make the dust component red, in order to spot it, on the left below. Then the final look development image with extra tweaks, we see on the right.
This workflow will continue to be developed, as there are already plans for enabling more complex components, while making the selection of those components easier. For a simple example, we could have created the dust layer first on a separate material; then later, choose that material from a menu of existing mila_materials, as a component to be layered.
The layering shaders provide a glimpse into NVIDIA’s Material Definition Language (MDL), which is designed to provide material sharing across rendering platforms. For better compatiblity with MDL, many of the optimizing shader controls of the past have been moved out of the MILA shaders and into string option controls. This also allows better ability to optimize more automatically in the renderer, and the ability to provide sweeping quality control changes over a large scene full of many materials.
More to come
This post provides a brief glimpse into what the layering shaders provide, and there will be more posts to discuss the global string options available for quality control, the base Phenomena in more detail, and the render passes provided as emulation of Light Path Expressions (LPE), another forward looking technology coupled with MDL.