It is now possible to import NVIDIA MDL and MaterialX materials, adjust exposed parameters in the Material Editor, and render in all three render modes (OpenGL, CPU raytracing, and GPU raytracing). We have also changed the material roughness control to a perceptually linear behavior with a 0 - 1 range for easier control.
Video captions: In VRED 2024, we started to modernize and rework the complete user interface. Additionally, we added the ability to import Material x and MDL materials. This will give you a ton of more options when working with materials, as they can capture complex material definitions, as they can be procedural, but are an open standard that have been used by many applications out there for better exchangability within and beyond Autodesk.
You may want to download MDL materials from the Nvidia website and Material X from the AMD website for example. Then simply create a Material X or MDL material and then load the material definitions. Now, you will see all editable parameters available. This can improve massively your pipeline when working with materials.
Thanks for watching the video.
Click the links below to access the following material libraries:
It is not yet possible to create NVIDIA MDL or MaterialX materials from scratch in VRED, neither there is a node-based material editor.
We recommend you monitor your render performance, as some of the materials from these material libraries are huge, contain very advanced parameters or up to 16 textures, and can decrease your render performance dramatically, especially when raytracing.
If you want to write your own material files, since both MaterialX and MDL are plain ascii text files, you should be able to use an external editor to do so.
For additional resources to help understand and use MDL, see NVIDIA MDL - Handbook. It provides background, theory, and practical examples of the language.
For the Precomputed Illumination mode in the OpenGL renderer and the CPU and GPU raytracers, MDL materials are processed to a simplified model, due to real time constraints. This simplified model is based on a roughness/metalness PBR model with some modifications. The MDL material gets simplified to the general metal, specular, and diffuse layers modeled with an anisotropic/isotropic GGX BRDF. On top of those layers, there is the clearcoat layer modeled with an isotropic GGX BRDF. Specular transmission is modeled using the absorption_coefficient
and scattering_coefficients
as combined coefficients for the Beer-Lambert Law, without changing the IOR in between boundaries (no refraction or internal reflections) for OpenGL and fully taking into account the IOR between boundaries in the raytracer's Precomputed Illumination mode. Diffuse transmission in OpenGL is approximated by a simplified diffuse lit approximation of subsurface scattering. Transparency is implemented as alpha blending. Emissions don't light the scene.
Note that the process of simplifying an MDL material produces a material as close to the original, based on the OpenGL renderer and CPU/GPU raytracer's precomputed Illumination mode constraints. In this process, some features of the MDL will be removed or switched to a simpler forms.
These features are not supported in the OpenGL renderer and CPU/GPU raytracers Precomputed mode:
measured_bsdf
. measured_curve_layer
, thin_film
, directional_factor
, and measured_curve_factor
.These features are not supported in only the OpenGL renderer:
These features are partially supported in the OpenGL renderer and CPU/GPU raytracers Precomputed mode:
microfacet_ggx_vcavities_bsdf
and diffuse_reflection_bsdf
.We have also changed the material roughness control to a perceptually linear behavior with a 0 - 1 range for easier control. This enables VRED to map roughness values from other material libraries. When opening existing scenes, the material appearance will not be changed; however, the value are adjusted to the new 0 - 1 range.
For those who have old materials that need to be converted to this new roughness scale, you can do this either manually or with Python.
Use a calculator for new conversion values. For example, if you used a VRED roughness value of 2.0 for certain material types, such as leather, you will need to calculate the value for use in the 2024 version.
If a material from an older version with a certain value is imported into 2024, the conversion is done automatically and you will see the new value.
Use these formula to convert an old roughness value to the new and vice versa.
From old to new - To get the new value, divide the old roughness value by 40.0, then take the square root of the result twice.
newRoughness = sqrt(sqrt(oldRoughness / 40.0))
From new to old - To get the old value, multiply the new roughness value by itself four times, and multiply that by 40.0.
oldRoughness = (newRoughness^4) * 40.0
Material roughness can be set with a Python script. VRED 2024 expects the values to use the new range (0 - 1). VRED 2023 and older expect the values use the old range (0 - 40).
Therefore, a script written for an older VRED version (2023.4 and below) might set a specific roughness value.
For example:
leather = vrMaterialService.createMaterial("leather", vrMaterialTypes.Plastic)
leather.setRoughness(2.0) # legacy roughness value for VRED 2023
When using this script in VRED 2024, this value needs to be converted to get the same visual result as in the old VRED version. To do this, the previous formulas can be defined as these two Python functions:
from math import sqrt, pow
def toNewRoughness(oldRoughness):
return sqrt(sqrt(oldRoughness / 40.0))
def toOldRoughness(newRoughness):
return pow(newRoughness, 4.0) * 40.0
Therefore, for VRED 2024, this will onvert legacy roughness value to 2024 value:
leather = vrMaterialService.createMaterial("leather", vrMaterialTypes.Plastic)
leather.setRoughness(toNewRoughness(2.0)) # convert legacy roughness value to 2024 value