Jan Jordan Software Product Manager MDL Lutz Kettner Director Advanced Rendering and Materials
Sharing Physically Based Materials Between Renderers with MDL
March 18, GTC San Jose 2019
Between Renderers with MDL Jan Jordan Software Product Manager MDL - - PowerPoint PPT Presentation
Sharing Physically Based Materials Between Renderers with MDL Jan Jordan Software Product Manager MDL March 18, GTC San Jose 2019 Lutz Kettner Director Advanced Rendering and Materials Introduction to NVIDIA Material Definition Language
Jan Jordan Software Product Manager MDL Lutz Kettner Director Advanced Rendering and Materials
March 18, GTC San Jose 2019
2
3
4
5
Iray Photoreal
6
Iray Photoreal
7
Iray Photoreal
8
courtesy Harley Davidson
9
10
11
NVIDIA vMaterials with Iray Photoreal
12
Iray Photoreal
13
14
Substance Designer
15
16
Share scene and MDL materials for a consistent look Switching renderers with no scene modifications
17
Iray Realtime OpenGL Rasterizer Iray Interactive Ray Tracer, Direct Illumination Iray Photoreal Path Tracer
18
Texture lookups Procedurals Uv-transforms Projectors Noise functions Math functions Light loops / trace N rays OIT / ray-continuation Ray marching Glossy reflection Transparency Translucency
19
Texture lookups Procedurals Uv-transforms Projectors Noise functions Math functions Light loops / OIT Glossy reflection Transparency Translucency
Trace N rays
Ray-marching
20
Light loops / OIT
Trace N rays
Ray-marching
21
Light loops / OIT
Trace N rays
Ray-marching
22
…
23
scattering
bsdf
…
24
scattering
bsdf
intensity emission
edf
…
25
scattering
bsdf
intensity emission
edf
scattering_coefficient absorption_coefficient scattering
vdf
…
26
scattering
bsdf
intensity emission
edf
scattering_coefficient absorption_coefficient scattering
vdf
cutout_opacity displacement normal
…
27
thin_walled ior scattering
bsdf
intensity emission
edf
scattering_coefficient absorption_coefficient scattering
vdf
cutout_opacity displacement normal
…
28
Diffuse Transmission Specular Reflection
Measured BSDF Glossy (various) Backscatter Glossy
Diffuse Reflection
29
Henyey-Greenstein Diffuse Spot IES Profile
30
Tint Thin Film Directional Factor Measured Curve Factor
31
Normalized Mix Clamped Mix Weighted Layer Fresnel Layer Measured Curve Layer Custom Curve Layer
32
34
35
struct material { bool thin_walled; material_surface surface; material_surface backface; color ior; material_volume volume; material_geometry geometry; };
36
struct material { bool thin_walled; material_surface surface; material_surface backface; color ior; material_volume volume; material_geometry geometry; }; struct material_surface { bsdf scattering; material_emission emission; };
37
struct material { bool thin_walled = false; material_surface surface = material_surface(); material_surface backface = material_surface(); color ior = color(1.0); material_volume volume = material_volume(); material_geometry geometry = material_geometry(); }; struct material_surface { bsdf scattering = bsdf(); material_emission emission = material_emission(); };
38
material();
39
material();
40
material name ( material-parameters ) = material ( material-arguments );
42
material plaster( ) = material( surface: material_surface( scattering: df::diffuse_reflection_bsdf() ) );
43
material plaster ( color plaster_color = color(.7)) = material( surface: material_surface ( scattering: df::diffuse_reflection_bsdf ( tint: plaster_color ) ) );
44
material plastic( color diffuse_color = color(.15,0.4,0.0), float roughness = 0.05 ) = material( surface: material_surface( scattering: df::fresnel_layer ( ior: color(1.5), layer: df::simple_glossy_bsdf ( roughness_u: glossy_roughness ), base: df::diffuse_reflection_bsdf ( tint: diffuse_color ) ) ) );
46
January 10th update: more on procedural texturing and displacement Upcoming: advanced volumes
47
value
color_constructor texture_coordinate
texture_space`: 0 position
summed_perlin_noise
plaster_color
Material plaster
48
float summed_perlin_noise ( float3 point, int level_count=4, float level_scale=0.5, float point_scale=2.0, bool turbulence=false) { float scale = 0.5, noise_sum = 0.0; float3 level_point = point; for (int i = 0; i < level_count; i++) { float noise_value = perlin_noise(level_point); if (turbulence) noise_value = math::abs(noise_value); else noise_value = 0.5 + 0.5 * noise_value; noise_sum += noise_value * scale; scale *= level_scale; level_point *= point_scale; } return noise_sum; }
49
material perlin_noise_material() = plaster( plaster_color: color( summed_perlin_noise( point: state::texture_coordinate(0) ) ) )
value
color_constructor texture_coordinate
texture_space`: 0 position
summed_perlin_noise
plaster_color
Material plaster
50
51
search path MDL package space nvidia::vMaterials::Design::Metal::chrome
52
53
http://docs.oasis-open.org/xliff/xliff-core/xliff-core.html
54
struct material { … hair_bsdf hair; }; hair_bsdf chiang_hair_bsdf { float diffuse_reflection_weight = 0.0; color diffuse_reflection_tint = color(1.0); float2 roughness_R = float2(0.0); float2 roughness_TT = roughness_R; float2 roughness_TRT = roughness_TT; float cuticle_angle = 0.0; color absorption_coefficient = color(); float ior = 1.55; };
Combined hair BSDF model
55
56
Spatially Varying BRDF AxF from X-Rite Measure Isotropic BSDF Modules and packages Archives Little data dependencies Side-effect free functions
57
58
MDL 0.x MDL 1.5 MDL 1.0 Iray 2013 MDL 1.1 Public Specification Catia V6 Bunkspeed MDL 1.4 Open Source SDK Public SDK Unreal Studio 4.20 Advisory Council Holodeck Solidworks Visualize MDL 1.3 Vray Adobe Dimension ESI IC.IDO vMaterials Nvidia Iray Plugins MDL 1.2 JIT Compile mental ray (3ds May, Maya) Substance Designer Daz 3d Megascans Vizoo
59
Joint direction of MDL and the MDL eco system Include expertise other companies have gained in the field and with MDL
60
Iray RTX 2019
61
62
63
www.vizoo3d.com
64
www.medulr.com
65
quixel.com
66
Substance Designer Adobe Dimensions
Unreal Studio Adobe Stock Vray Max/Maya NVIDIA Holodeck Substance Source NVIDIA VMaterials NVIDIA Iray UE4
Chaosgroup Vray Iray DCC Plugins Dassault Catia V6 Daz 3D Studio Solidworks Vis. Siemens NX11 Other Iray Prod‘s Vizoo xTex Quixel Megascans medulr
67
Substance Designer Iray for Rhino
Chaosgroup V-RAY
68
69
70
71
MDL is included
Based on the freely available MDL Specification
Published under the NVIDIA Designworks License and …
72
73
RENDERING
Multi-Display Capture SDK Warp and Blend GPUDirect for Video Video Codec SDK Iray SDK OptiX SDK MDL SDK vMaterials NV Pro Pipeline GVDB Voxels VXGI GRID SW MGMT SDK NVAPI/NVWMI PhysX
PHYSICS VOXELS VIDEO MANAGEMENT DISPLAY
74
MDL 1.4 (1.5 feature previews) DB for MDL definitions DAG view on materials
several compilation modes
MDL editing Code generators
PTX, LLVM IR, x86, HLSL, GLSL (fcts.
Distiller and texture baker Samples Documentation and tutorials
Editor Renderer API Samples Distill MDL source Database of content Generate code Bake textures Docs MDL SDK Compile Material Resolve, parse, store Optimized DAG view on material
75
Preview of MDL 1.5 features:
Improved BSDF reference implementation (libbsdf) including measured brdf and emissive distribution functions Additional distilling mode (transmissive PBR) HLSL backend (2019.0.1) Automatic derivatives for texture filtering Open source release available on Github
More samples
materials
76
MDL materials make RTX shine!
77
and sample path tracer in the SDK
sample program available as part of Optix 5.1 & 6 Integrating MDL with an RTX based renderer is simple!
78
79
80
81
Complex BSDF layering Complex procedurals Simple BSDF structure One texture per parameter
82
Complex BSDF layering Complex procedurals Simple BSDF structure One texture per parameter
fct bsdf bsdf fct fct fct fct fct fct fct fct bsdf bsdf fct fct fct fct bsdf bsdf bsdf
83
Complex BSDF layering Complex procedurals Simple BSDF structure One texture per parameter
tex tex tex tex tex
Material
diffuse specular glossy kurtosis normal fct bsdf bsdf fct fct fct fct fct fct fct fct bsdf bsdf fct fct fct fct bsdf bsdf bsdf
84
Complex BSDF layering Complex procedurals Simple BSDF structure One texture per parameter
tex tex tex tex tex
Material
diffuse specular glossy kurtosis normal fct bsdf bsdf fct fct fct fct fct fct fct fct bsdf bsdf fct fct fct fct bsdf bsdf bsdf
Approximate render result: Some materials will look quite different
85
Complex BSDF layering Complex procedurals Simple BSDF structure One texture per parameter
tex tex tex tex tex
Material
diffuse specular glossy kurtosis normal fct bsdf bsdf fct fct fct fct fct fct fct fct bsdf bsdf fct fct fct fct bsdf bsdf bsdf
Fast projection of material instances: Realtime editing Approximate render result: Some materials will look quite different
86
Complex BSDF layering Complex procedurals Simple BSDF structure One texture per parameter
tex tex tex tex tex
Material
diffuse specular glossy kurtosis normal fct bsdf bsdf fct fct fct fct fct fct fct fct bsdf bsdf fct fct fct fct bsdf bsdf bsdf
Fast projection of material instances: Realtime editing Approximate render result: Some materials will look quite different Flexible framework to target different fixed models not a fixed MDL subset (no “MDL lite”)
87
Fresnel( glossy, diffuse) diffuse-only
88
Original: Iray MDL Projection: Dassault Stellar with Enterprise PBR
89
MDL Distilling and texture baking GLSL compiler back-end
Feature image courtesy of Adobe, created by art director Vladimir Petkovic.
90
91
Declarative Material Definition Procedural Programming Language Open Source release MDL Specification MDL Handbook MDL SDK MDL Backend Examples Conformance Test Suite NVIDIA vMaterials MDL Advisory Council
92
Technical Introduction Handbook Language Specification
Mon 9 AM SJCC 230B
Sharing Physically Based Materials Between Renderers with MDL Integrating the NVIDIA Material Definition Language MDL in Your Application A New PBR Material Serving Mobile, Web, Real-Time Engines and Ray Tracing Multi-Platform Photo-Real Rendering: Utilizing NVIDIA'S MDL and Allegorithmic's Substance Suite for Product Imaging Real-Time Ray Tracing with MDL Materials
Mon 10 AM SJCC 230B Mon 11 AM Hilton Hotel Almaden 2 Tue 9 AM Hilton Hotel Almaden 2 Thu 10 AM SJCC 230C