Sharing Physically Based Materials Between Renderers with MDL Jan - - PowerPoint PPT Presentation

sharing physically based materials between renderers with
SMART_READER_LITE
LIVE PREVIEW

Sharing Physically Based Materials Between Renderers with MDL Jan - - PowerPoint PPT Presentation

March 26-29, 2018 | Silicon Valley Sharing Physically Based Materials Between Renderers with MDL Jan Jordan Software Product Manager MDL Lutz Kettner Director Advanced Rendering and Materials Introduction to NVIDIA Material Definition


slide-1
SLIDE 1

March 26-29, 2018 | Silicon Valley

Jan Jordan Software Product Manager MDL Lutz Kettner Director Advanced Rendering and Materials

Sharing Physically Based Materials Between Renderers with MDL

slide-2
SLIDE 2

2

Agenda

Introduction to NVIDIA Material Definition Language MDL Matching the appearance of a single material within different rendering techniques Defining physically-based materials Measured materials MDL ecosystem Become part of the ecosystem

slide-3
SLIDE 3

3

Introduction

slide-4
SLIDE 4

4

What is NVIDIA MDL?

The NVIDIA Material Definition Language (MDL) is technology developed by NVIDIA to define physically-based materials for physically-based rendering solutions.

slide-5
SLIDE 5

5

Iray Photoreal

slide-6
SLIDE 6

6

Iray Photoreal

slide-7
SLIDE 7

7

Iray Photoreal

slide-8
SLIDE 8

8

courtesy Harley Davidson

slide-9
SLIDE 9

9

slide-10
SLIDE 10

10

slide-11
SLIDE 11

11

NVIDIA vMaterials with Iray Photoreal

slide-12
SLIDE 12

12

Iray Photoreal

slide-13
SLIDE 13

13

Matching the appearance of a single material within different rendering techniques

slide-14
SLIDE 14

14

Pathtracer Interactive Raytracer Realtime Rasterizer

One Scene for Different Rendering Modes

Share Scene Database and MDL materials for a consistent look Switching modes with 1 call with no scene modifications

slide-15
SLIDE 15

15

Iray Realtime OpenGL Rasterizer Iray Interactive Ray Tracer, Direct Illumination Iray Photoreal Path Tracer

slide-16
SLIDE 16

16

Material Implementation Material Definition Texturing

Traditional Shading Language Parts

Texture lookups Procedurals Uv-transforms Projectors Noise functions Math functions Light loops / trace N rays OIT / ray-continuation Ray marching Glossy reflection Transparency Translucency

slide-17
SLIDE 17

17

Rasterizer Declarative Material Definition Procedural Program- ming Language

MDL

Texture lookups Procedurals Uv-transforms Projectors Noise functions Math functions Light loops / OIT Glossy reflection Transparency Translucency

Renderer

Raytracer

Trace N rays

Pathtracer

Ray-marching

slide-18
SLIDE 18

18

Rasterizer Declarative Material Definition Procedural Program- ming Language

MDL

Light loops / OIT

Renderer

Raytracer

Trace N rays

Pathtracer

Ray-marching

slide-19
SLIDE 19

19

Rasterizer

MDL

Light loops / OIT

Renderer

Raytracer

Trace N rays

Pathtracer

Ray-marching

MDL is not a Shading Language MDL defines what to compute, not how to compute it – no programmable shading – no light loops or access to illumination – no trace call – no sampling – no camera dependence Declarative Material Definition Procedural Program- ming Language

slide-20
SLIDE 20

20

material volume geometry surface

MDL Material Model

backface

slide-21
SLIDE 21

21

material volume geometry surface

MDL Material Model

scattering

bsdf

backface

slide-22
SLIDE 22

22

material volume geometry surface emission

MDL Material Model

scattering

bsdf

intensity emission

edf

backface

slide-23
SLIDE 23

23

material volume geometry surface emission

MDL Material Model

scattering

bsdf

intensity emission

edf

scattering_coefficient absorption_coefficient scattering

vdf

backface

slide-24
SLIDE 24

24

material volume geometry surface emission

MDL Material Model

scattering

bsdf

intensity emission

edf

scattering_coefficient absorption_coefficient scattering

vdf

cutout_opacity displacement normal

backface

slide-25
SLIDE 25

25

material volume geometry surface emission

MDL Material Model

thin_walled ior scattering

bsdf

intensity emission

edf

scattering_coefficient absorption_coefficient scattering

vdf

cutout_opacity displacement normal

backface

slide-26
SLIDE 26

26

Diffuse Transmission Specular Reflection

  • Spec. Refl.+Transm.

Measured BSDF Glossy (various) Backscatter Glossy

Bidirectional Scattering Distribution Functions

MDL Elemental Distribution Functions

Diffuse Reflection

slide-27
SLIDE 27

27

Emissive Distribution Functions Volume Distribution Functions

MDL Elemental Distribution Functions

Henyey-Greenstein Diffuse Spot IES Profile

slide-28
SLIDE 28

28

MDL Distribution Function Modifiers

Tint Thin Film Directional Factor Measured Curve Factor

slide-29
SLIDE 29

29

MDL Distribution Functions Combiners

Normalized Mix Clamped Mix Weighted Layer Fresnel Layer Measured Curve Layer Custom Curve Layer

slide-30
SLIDE 30

30

Gold Custom curve layer Silver

Modifier: Complex ior factor

MDL 1.4: New BSDF

Copper

Combiners: All weights can be color now

slide-31
SLIDE 31

31

MDL Layered Material Example

slide-32
SLIDE 32

32

diffuse bsdf red

slide-33
SLIDE 33

33

custom-curve layering diffuse bsdf yellow diffuse bsdf red

slide-34
SLIDE 34

34

custom-curve layering diffuse bsdf yellow diffuse bsdf red glossy bsdf roughness 0.5 weighted layering

slide-35
SLIDE 35

35

custom-curve layering diffuse bsdf yellow diffuse bsdf red glossy bsdf roughness 0.5 glossy bsdf roughness 0.1 weighted layering weighted layering

slide-36
SLIDE 36

36

custom-curve layering diffuse bsdf yellow diffuse bsdf red glossy bsdf roughness 0.5 glossy bsdf roughness 0.1 specular bsdf weighted layering fresnel layering weighted layering

slide-37
SLIDE 37

37

Defining physically-based materials with source code

slide-38
SLIDE 38

38

struct material { bool thin_walled; material_surface surface; material_surface backface; color ior; material_volume volume; material_geometry geometry; };

MDL is a ‘C’ like language. The material viewed as a struct

Defining a Material Using MDL

slide-39
SLIDE 39

39

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; };

MDL is a ‘C’ like language. The material and its components viewed as a struct

Defining a Material Using MDL

slide-40
SLIDE 40

40

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(); };

MDL is a ‘C’ like language. The material and its components viewed as a struct

Defining a Material Using MDL

slide-41
SLIDE 41

41

material();

Material struct is already fully defined

Defining a Material Using MDL

slide-42
SLIDE 42

42

Material struct is already fully defined

material();

Defining a Material Using MDL

slide-43
SLIDE 43

43

Creating new materials

material name ( material-parameters ) = material ( material-arguments );

Defining a Material Using MDL

slide-44
SLIDE 44

44

Creating new materials

material mymaterial ( ) = material ( );

Defining a Material Using MDL

slide-45
SLIDE 45

45

material plaster( ) = material( surface: material_surface( scattering: df::diffuse_reflection_bsdf() ) );

Defining a Material Using MDL

slide-46
SLIDE 46

46

material plaster ( color plaster_color = color(.7)) = material( surface: material_surface ( scattering: df::diffuse_reflection_bsdf ( tint: plaster_color ) ) );

New materials can have parameters

Defining a Material Using MDL

slide-47
SLIDE 47

47

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 ) ) ) );

Create complex materials by layering

Defining a Material Using MDL

slide-48
SLIDE 48

48

Added displacement since 2017

4 anisotropic glossy highlights + translucency

MDL Handbook

www.mdlhandbook.com Cloth example

slide-49
SLIDE 49

49

MDL Procedural Programming Language

Function results feed into material and function parameters “Shader graphs” are equivalent to function call graphs

C-like language for function definitions

value

color_constructor texture_coordinate

texture_space`: 0 position

summed_perlin_noise

plaster_color

Material plaster

slide-50
SLIDE 50

50

Defining a Function Using MDL

type-of-return-value function-name ( parameters ) { statements }

MDL is ‘C’ like

slide-51
SLIDE 51

51

Defining a Function Using MDL

color uv_as_color() { return color( state::texture_coordinate(0) ); }

Function access render state through standard modules

slide-52
SLIDE 52

52

Defining a Function Using MDL

color uv_as_color() { return color(state::texture_coordinate(0)); }

material uv_as_color_material_v2() = plaster( plaster_color: uv_as_color() )

Use functions to drive BSDF or material parameters

slide-53
SLIDE 53

53

Defining a Function Using MDL

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; }

MDL Handbook Functions allow control flow like loops, switches, conditionals

slide-54
SLIDE 54

54

Defining a Function Using MDL

material perlin_noise_material() = plaster( plaster_color: color( summed_perlin_noise( point: state::texture_coordinate(0) ) ) )

Call graph of functions substitute shader graphs

value

color_constructor texture_coordinate

texture_space`: 0 position

summed_perlin_noise

plaster_color

Material plaster

slide-55
SLIDE 55

55

MDL Module System

MDL is a programming language allowing dependencies among modules and materials import nvidia::vMaterials::Design::Metal::chrome::*; We use search paths to resolve imports

MDL is program code

slide-56
SLIDE 56

56

MDL Module System

MDL is a programming language allowing dependencies among modules and materials import nvidia::vMaterials::Design::Metal::chrome::*; We use search paths to resolve imports C:\Users\Jan\Documents\mdl\nvidia\vMaterials\Design\Metal\chrome.mdl

MDL is program code

search path MDL package space nvidia::vMaterials::Design::Metal::chrome

slide-57
SLIDE 57

57

UDIM and uv-tiles

New in MDL 1.4

UDIM texture layout in Autodesk Maya, rendering in Iray

slide-58
SLIDE 58

58

Material Catalogs Designed for Parallelism Measured Materials

Additional MDL Benefits

Spatially Varying BRDF AxF from X-Rite Measure Isotropic BSDF Modules and packages Archives Little data dependencies Side-effect free functions

slide-59
SLIDE 59

59

Measured materials

slide-60
SLIDE 60

60

Spatially Varying (SV)BRDF

Set of textures for an analytic material model

Fixed MDL material

diffuse specular glossy kurtosis normal

slide-61
SLIDE 61

61

Spatially Varying (SV)BRDF

Sample Simple acquisition method Raw measurements

Allegorithmic: Substance Designer

Images courtesy of Allegorithmic

slide-62
SLIDE 62

62

Spatially Varying (SV)BRDF

Postprocessing with Substance Designer: crop, repair, tile

Allegorithmic: Substance Designer

Images courtesy of Allegorithmic

slide-63
SLIDE 63

63

Spatially Varying (SV)BRDF

Render with Iray and export to MDL Easy modifications

Allegorithmic: Substance Designer

Images courtesy of Allegorithmic

slide-64
SLIDE 64

64

Spatially Varying (SV)BRDF

X-Rite: TAC 7, Pantora, AxF file format

Sample TAC 7 Virtual Lightbooth

Images courtesy of X-Rite

slide-65
SLIDE 65

65

Spatially Varying (SV)BRDF

X-Rite: TAC 7, Pantora, AxF file format

Images courtesy of X-Rite

Pantora

slide-66
SLIDE 66

66

Spatially Varying (SV)BRDF

X-Rite: TAC 7, Pantora, AxF file format

Images courtesy of X-Rite

AxF file format importer to Iray and MDL Added dirt with MDL layers Substance Designer combines AxF and MDL

slide-67
SLIDE 67

67

Light Path Expressions

+

Paths that interact with wall Paths that do not

slide-68
SLIDE 68

68

Light Path Expressions

+ =

Paths that interact with wall Paths that do not

*

slide-69
SLIDE 69

69

Light Path Expressions

+ =

Paths that interact with wall Paths that do not

*

slide-70
SLIDE 70

70

Light Path Expressions

+ =

Paths that interact with wall Paths that do not

*

slide-71
SLIDE 71

71

Light Path Expressions

+ =

Paths that interact with wall Paths that do not Edit the Wall Color easily in Post – and get proper reflections and color bounce

*

slide-72
SLIDE 72

72

slide-73
SLIDE 73

73

slide-74
SLIDE 74

74

MDL Complements Light Path Expressions

LPEs can select individual DF components

Light falling onto the ground without first passing through the glass Caustics cast by the glass Specular reflections

  • n the glass

Specular reflections

  • n the ice cube

All remaining interactions

slide-75
SLIDE 75

75

MDL ecosystem

slide-76
SLIDE 76

76

MDL – Past, Present and Future

  • MDL 0.x …
  • MDL 1.0 ● MDL 1.1 ● MDL 1.2
  • MDL 1.3
  • MDL 1.4
  • Public specification
  • Advisory Council
  • Iray 2013
  • Nvidia Iray Plugins
  • Substance Designer
  • Bunkspeed
  • Vray
  • Adobe Dimension
  • Catia V6
  • mental ray (3ds Max, Maya)
  • ESI IC.IDO
  • Daz 3d
  • Public SDK

2011 2012 2013 2014 2015 2016 2017 2018

  • Solidworks

Visualize

slide-77
SLIDE 77

77

MDL Advisory Council

Joint direction of MDL and the MDL eco system Include expertise other companies have gained in the field and with MDL

Companies sharing our vision of MDL

slide-78
SLIDE 78

78

NVIDIA Iray

Shipping integrally within commercial products

Catia V6 and Industrial Designer SketchUp

migenius

NX 11

PLM

DAZ Studio Patchwork 3D Substance Designer & Painter Visualize

SOLIDWORKS

slide-79
SLIDE 79

79

Iray for Maya Iray for Rhino Iray for 3ds Max Iray Server

Iray Plugin Solutions

www.irayplugins.com

slide-80
SLIDE 80

80

MDL in VRAY

slide-81
SLIDE 81

81

MDL Adobe Dimension and Adobe Stock

http://www.adobe.com/products/dimension.html

slide-82
SLIDE 82

82

MDL in Substance Designer

slide-83
SLIDE 83

83

MDL in Substance Designer

slide-84
SLIDE 84

84

MDL in Substance Designer

slide-85
SLIDE 85

85

MDL in Substance Designer

slide-86
SLIDE 86

86

MDL in Substance Designer

slide-87
SLIDE 87

87

MDL in Substance Designer

slide-88
SLIDE 88

88

MDL in Substance Designer

slide-89
SLIDE 89

89

MDL in Substance Designer

slide-90
SLIDE 90

90

Focus on Material Exchange

Freely choose where to author material content

Substance Designer Iray for Rhino

create consume modify

Chaosgroup V-RAY

slide-91
SLIDE 91

91

NVIDIA vMaterials 1.4

~1400 MDL materials verified for accuracy - FREE TO USE

slide-92
SLIDE 92

92

NVIDIA vMaterials 1.5 – Coming Q2 2018

vMaterials 1.4 vMaterials 1.5: new presets ground asphalt

  • ld variant is hidden

More than 200 new material variants

slide-93
SLIDE 93

93

NVIDIA vMaterials 1.4

Harder to control parameters and texture parameters

slide-94
SLIDE 94

94

NVIDIA vMaterials 1.5 – Coming Q2 2018

More flexible and user-centric parameters

slide-95
SLIDE 95

95

Become part of the ecosystem

slide-96
SLIDE 96

96

Become Part of the Ecosystem

Integrate MDL enabled renderer

MDL is included

Write your own compiler

Based on the freely available MDL Specification

License the MDL SDK

Contact us for licensing information

slide-97
SLIDE 97

97

Write Your Own Compiler

MDL Specification can be downloaded @ http://www.nvidia.com/mdl/ MDL conformance test suite Syntactic conformance tests - available at request Semantic conformance tests

slide-98
SLIDE 98

98

MDL SDK 2018.0

MDL 1.4 DB for MDL definitions DAG view on materials

several compilation modes

MDL editing Code generators

PTX, LLVM IR, x86, GLSL (fcts. only)

Distiller and texture baker Samples Documentation and tutorials

Features

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

slide-99
SLIDE 99

99

MDL SDK 2018.0 – What is New

MDL 1.4 support Class compilation support in all modes Link mode Full material compilation with BSDF reference implementation Improved distilling quality Flexible render state binding in backends API to enumerate all dependent resources Access to SDK version at API entry point Auto shutdown SDK helper class for simplified access to annotations New samples for all back-ends Search in MDL Specification finds now names with ‘_’

Features

slide-100
SLIDE 100

100

MDL SDK and OptiX

We will give you all you need…

  • MDL SDK PTX backend produce PTX code suitable to be called by OptiX

available since MDL SDK 2017.1

Iray photoreal OptiX raytracing sample

slide-101
SLIDE 101

101

Full Material Compilation

OptiX and CUDA rendering samples with MDL SDK 2018.0 and OptiX 5.1

slide-102
SLIDE 102

102

MDL in Realtime Rendering

1. Ubershader 2. Compilation: on-demand shader generation 3. Distillation to fixed material model All based on MDL SDK

Three approaches

slide-103
SLIDE 103

103

Compilation: On-demand Shader Generation

Example deployment

Raytracer GLSL Rasterizer

IC.IDO

slide-104
SLIDE 104

104

Distillation to Fixed Material Model

Fixed Material Model MDL Material

Complex BSDF layering Complex procedurals Simple BSDF structure One texture per parameter Examples

Disney-principled BRDF model UE4 model (moving target) normal map, cutout

distill

slide-105
SLIDE 105

105

Distillation to Fixed Material Model

Approximate render result: Some materials will look quite different Fast projection of material instances: Realtime editing Flexible framework to target different fixed models (moving target) not a fixed MDL subset (no “MDL lite”) Fixed Material Model MDL Material

Complex BSDF layering Complex procedurals Simple BSDF structure One texture per parameter Examples

Disney-principled BRDF model UE4 model (moving target) normal map, cutout

distill

slide-106
SLIDE 106

106

Distillation to Fixed Material Model

Results on vMaterials

  • riginal

Fresnel( glossy, diffuse) diffuse-only

slide-107
SLIDE 107

107

MDL Distilling

Example: UE4 target with clearcoat and transparency through alpha GLSL rendering sample using Distilling and baking comes with MDL SDK 2018.1

Released as part of Iray/MDL SDK

MDL UE4

slide-108
SLIDE 108

108

Starting Material MDL Ecosystem What is MDL

MDL Takeaways

Declarative Material Definition Procedural Programming Language MDL Specification MDL Handbook MDL SDK MDL Backend Examples MDL Conformance Test Suite NVIDIA vMaterials MDL Advisory Council

slide-109
SLIDE 109

109

https://developer.nvidia.com/designworks

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

slide-110
SLIDE 110

110

Further Information on MDL

Documents

NVIDIA Material Definition Language -- Technical Introduction Material Definition Language -- Handbook NVIDIA Material Definition Language -- Language Specification

MDL@GTC

www.nvidia.com/mdl raytracing-docs.nvidia.com/mdl/index.html

Monday, March 26, 10:00 AM - 10:50 AM – Room 230C Integrating the NVIDIA Material Definition Language MDL in Your Application Monday, March 26, 10:30 AM – 10:55 AM – Hilton Santa Clara MDL & Substance in Automotive Wednesday, March 28, 2:00 PM – 5:00 PM – Westin Sainte Claire Ballroom Iray Leaders