© Square Enix © Goodbye Kansas


Table of Contents

This page provides information on MaterialX (mtlx) support.


Overview


MaterialX is an open-source standard for representing shading networks. MaterialX shading networks can be used across different applications and renderers.

See the MaterialX and V-Ray blog post for more information.



Usage


V-Ray's implementation of MaterialX allows you to render MaterialX nodes encoded in USD with VRayScene-USD. The implementation is a mix of direct translation to V-Ray through a mapping file and custom code. Custom V-Ray plugins share the code and make graphs more efficient. The MaterialX graphs are rendered within Hydra.

Utilize the MaterialX nodes within the standard mtlx workflow in Solaris.


Workflow


Create MaterialX

Mtlx materials are created just like any other material in Solaris – inside a Material Library LOP.

Once the LOP is added, dive inside it and create a USD MaterialX Builder node. Inside the builder node, V-Ray supports most of the mtlx nodes (see the MaterialX Support table below for a full list of the supported nodes).

Then you just need to add an Assign Material LOP and specify a geometry for the mtlx materials. For more information on how to do it, see the Working with Solaris Materials page or watch the video in the Overview section.





Import MaterialX

To use premade mtlx files, use a Sublayer LOP to import them.

In the Sublayer LOP parameters, use the Add button to add as many sublayer files as there are mtlx files you want to import.

Then in the File paths of these sublayers, add the mtlx files.

The steps above only help you import the mtlx files in the scene. To assign the materials to geometry, add an Assign Material LOP and specify a geometry (path) for each mtlx material.




Reference MaterialX

Instead of adding sublayers of mtlx materials, you can reference them with a Reference LOP.

Set the Reference file to the file path of the mtlx file on disk, and select the specific material to load in through the Reference primitive submenu.

Then use an Assign Material LOP to assign the referenced mtlx material to a USD prim.

For more information about alternative workflows for referencing and creating mtlx materials, as well as information about the different types of mtlx nodes, refer to the Solaris documentation


Supported Nodes



Category

MtlX Shader Name

Node Name

USD id

V-Ray Plugin

Support

Adjustment

MtlX Adjust as HSV

mtlxhsvadjust

ND_hsvadjust


(tick)

MtlX Contrast

mtlxcontrast

ND_contrast

TexMayaContrast

(tick)

MtlX Curveadjust

mtlxcurveadjust

ND_curveadjust


(error)

MtlX HSV to RGB

mtlxhsvtorgb

ND_hsvtorgb


(tick)

MtlX Luminance

mtlxluminance

ND_luminance

TexLuminance

(tick)

MtlX Range

mtlxrange

ND_range


(tick)

MtlX Remap

mtlxremap

ND_remap

TexSetRange / TexRemapFloat

(tick)

MtlX RGB to HSV

mtlxrgbtohsv

ND_rgbtohsv


(tick)

MtlX Saturate

mtlxsaturate

ND_saturate


(tick)

MtlX Smoothstep

mtlxsmoothstep

ND_smoothstep


(tick)


Application

MtlX Frame

mtlxframe

ND_frame_float

TexSampler

(tick)

MtlX Time

mtlxtime

ND_time_float

multiple

(tick)


Channel

MtlX Combine2

mtlxcombine2

ND_combine2


(tick)

MtlX Combine3

mtlxcombine3

ND_combine3

TexRgbaCombine

(tick)

MtlX Combine4

mtlxcombine4

ND_combine4

TexRgbaCombine

(tick)

MtlX Convert

mtlxconvert

ND_convert

multiple

(tick)

MtlX Extract

mtlxextract

ND_extract

TexAColorChannel

(tick)

MtlX Separate2

mtlxseparate2

ND_separate2


(tick)

MtlX Separate Color 3

mtlxseparate3c

ND_separate3

TexAColorOp

(tick)

MtlX Separate Vector 3

mtlxseparate3v

ND_separate3

TexAColorOp

(tick)

MtlX Separate Color 4

mtlxseparate4c

ND_separate4

TexAColorOp

(tick)

MtlX Separate Vector 4

mtlxseparate4v

ND_separate4

TexAColorOp

(tick)

MtlX Swizzle

mtlxswizzle

ND_swizzle


(tick)


Compositing

MtlX Burn

mtlxburn

ND_burn

multiple

(tick)

MtlX Difference

mtlxdifference

ND_difference

multiple

(tick)

MtlX Disjoint Over

mtlxdisjointover

ND_disjointover

multiple

(tick)

MtlX Dodge

mtlxdodge

ND_dodge

multiple

(tick)

MtlX In

mtlxin

ND_in

multiple

(tick)

MtlX Inside

mtlxinside

ND_inside

TexMaskMax

(tick)

MtlX Mask

mtlxmask

ND_mask

multiple

(tick)

MtlX Matte

mtlxmatte

ND_matte

multiple

(tick)

MtlX Minus

mtlxminus

ND_minus

multiple

(tick)

MtlX Mix

mtlxmix

ND_mix

TexMix

(tick)

MtlX Out

mtlxout

ND_out

multiple

(tick)

MtlX Outside

mtlxoutside

ND_outside

TexMaskMax

(tick)

MtlX Over

mtlxover

ND_over

multiple

(tick)

MtlX Overlay

mtlxoverlay

ND_overlay

multiple

(tick)

MtlX Plus

mtlxplus

ND_plus

multiple

(tick)

MtlX Premult

mtlxpremult

ND_premult


(error)

MtlX Screen

mtlxscreen

ND_screen

multiple

(tick)

MtlX Un-Premult

mtlxunpremult

ND_unpremult


(tick)


Conditional

MtlX If Equal

mtlxifequal

ND_ifequal

TexCondition2

(tick)

MtlX If Greater

mtlxifgreater

ND_ifgreater

TexCondition2

(tick)

MtlX If Greater or Equal

mtlxifgreatereq

ND_ifgreatereq

TexCondition2

(tick)

MtlX Switch

mtlxswitch

ND_switch

TexMulti

(tick)


Convolution2D

MtlX Blur

mtlxblur



(tick)

MtlX Height to Normal

mtlxheighttonormal

ND_heighttonormal


(tick)


Geometric

MtlX Bitangent

mtlxbitangent

ND_bitangent


(error)

MtlX Geometry Color

mtlxgeomcolor

ND_geomcolor

TexUserColor

(tick)

MtlX Geometry Property Value

mtlxgeompropvalue

ND_geompropvalue

multiple

(tick)

MtlX Normal

mtlxnormal

ND_normal_vector3

TexSampler

(tick)

MtlX Position

mtlxposition

ND_position_vector3

TexSampler

(tick)

MtlX Tangent

mtlxtangent

ND_tangent_vector3


(tick)

MtlX Texcoord

mtlxtexcoord

ND_texcoord_vector3


(tick)


Global

MtlX Ambient Occlusion

mtlxambientocclusion

ND_ambientocclusion_float

TexDirt

(error)


Houdini

MtlX Bias

hmtlxbias

ND_hmtlxbias_float


(error)

MtlX Facing Ratio

hmtlxfacingratio

ND_hmtlxfacingratio_float


(error)

MtlX Gain

hmtlxgain

ND_hmtlxgain_float


(error)

MtlX Hcatmullrom

hmtlxhcatmullrom

ND_hcatmullrom


(error)

MtlX Hinvlinear

hmtlxhinvlinear

ND_hinvlinear_float


(tick)

MtlX Huniformcubic

hmtlxhuniformcubic

ND_huniformcubic


(tick)

MtlX Huniformramp

hmtlxhuniformramp

ND_huniformramp


(tick)


Light

MtlX Directional Light

mtlxdirectional_light



(error)

MtlX Point Light

mtlxpoint_light



(error)

MtlX Spot Light

mtlxspot_light



(error)


Material

MtlX Surface Material

mtlxsurfacematerial



(error)

MtlX Volume Material

mtlxvolumematerial



(error)


Procedural

MtlX Color Cubic Ramp

hmtlxcubicrampc


multiple

(error)

MtlX Color Ramp

hmtlxrampc


multiple

(error)

MtlX Constant

mtlxconstant

ND_constant

multiple

(tick)

MtlX Float Cubic Ramp

hmtlxcubicrampf


multiple

(error)

MtlX Float Ramp

hmtlxrampf


multiple

(error)


Procedural2D

MtlX Cell Noise 2D

mtlxcellnoise2d

ND_cellnoise2d_float

multiple

(error)

MtlX Noise2D

mtlxnoise2d

ND_noise2d

TexNoiseMaya

(tick)

MtlX Ramp4

mtlxramp4

ND_ramp4

TexRamp

(tick)

MtlX Ramplr

mtlxramplr

ND_ramplr

TexRamp

(tick)

MtlX Ramptb

mtlxramptb

ND_ramptb

TexRamp

(tick)

MtlX Splitlr

mtlxsplitlr

ND_splitlr


(tick)

MtlX Splittb

mtlxsplittb

ND_splittb


(tick)

MtlX Worley Noise 2D

mtlxworleynoise2d

ND_worleynoise2d


(tick)


Procedural3D

MtlX Cell Noise 3D

mtlxcellnoise3d

ND_cellnoise3d_float

multiple

(error)

MtlX Fractal3D

mtlxfractal3d

ND_fractal3d


(tick)

MtlX Noise3D

mtlxnoise3d

ND_noise3d


(tick)

MtlX Worley Noise 3D

mtlxworleynoise3d

ND_worleynoise3d


(tick)


Texture2D

MtlX Image

mtlximage

ND_image

multiple

(tick)

MtlX Tiled Image

mtlxtiledimage

ND_tiledimage

multiple

(tick)


Texture3D

MtlX Triplanar Projection

mtlxtriplanarprojection

ND_triplanarprojection


(tick)


Math

MtlX Absval

mtlxabsval

ND_absval

TexFloatOp / TexAColorOp

(tick)

MtlX Acos

mtlxacos

ND_acos

multiple

(tick)

MtlX Add

mtlxadd

ND_add

TexFloatOp / TexAColorOp

(tick)

MtlX Array Append

mtlxarrayappend

ND_arrayappend


(error)

MtlX Asin

mtlxasin

ND_asin_float

multiple

(tick)

MtlX Atan2

mtlxatan2

ND_atan2_float

multiple

(tick)

MtlX Ceil

mtlxceil

ND_ceil_float

multiple

(tick)

MtlX Clamp

mtlxclamp

ND_clamp

TexClamp

(tick)

MtlX Cos

mtlxcos

ND_cos

multiple

(tick)

MtlX Cross Product

mtlxcrossproduct

ND_crossproduct_vector3

TexVectorOp

(tick)

MtlX Determinant

mtlxdeterminant

ND_determinant


(tick)

MtlX Divide

mtlxdivide

ND_divide

multiple

(tick)

MtlX Dot Product

mtlxdotproduct

ND_dotproduct_vector3

TexVectorOp

(tick)

MtlX Exp

mtlxexp

ND_exp

multiple

(tick)

MtlX Floor

mtlxfloor

ND_floor

multiple

(tick)

MtlX Invert

mtlxinvert

ND_invert

TexFloatOp / TexAColorOp

(tick)

MtlX Invert Matrix

mtlxinvertmatrix



(tick)

MtlX Ln

mtlxln

ND_ln

multiple

(tick)

MtlX Magnitude

mtlxmagnitude

ND_magnitude

multiple

(tick)

MtlX Max

mtlxmax

ND_max

TexFloatOp / TexAColorOp

(tick)

MtlX Min

mtlxmin

ND_min

TexFloatOp / TexAColorOp

(tick)

MtlX Modulo

mtlxmodulo

ND_modulo


(tick)

MtlX Multiply

mtlxmultiply

ND_multiply

TexFloatOp / TexAColorOp

(tick)

MtlX Normalize

mtlxnormalize

ND_normalize

TexVectorProduct

(tick)

MtlX Normalmap

mtlxnormalmap

ND_normalmap


(tick)

MtlX Place2D

mtlxplace2d

ND_place2d_vector2


(tick)

MtlX Power

mtlxpower

ND_power


(tick)

MtlX Rotate2D

mtlxrotate2d

ND_rotate2d_vector2


(tick)

MtlX Rotate3D

mtlxrotate3d

ND_rotate3d_vector3


(tick)

MtlX Sign

mtlxsign

ND_sign

multiple

(tick)

MtlX Sin

mtlxsin

ND_sin

multiple

(tick)

MtlX Sqrt

mtlxsqrt

ND_sqrt

multiple

(tick)

MtlX Subtract

mtlxsubtract

ND_subtract


(tick)

MtlX Tan

mtlxtan

ND_tan

multiple

(tick)

MtlX Transform Matrix

mtlxtransformmatrix

ND_transformmatrix


(tick)

MtlX Transform Normal

mtlxtransformnormal

ND_transformnormal_vector3


(error)

MtlX Transform Point

mtlxtransformpoint

ND_transformpoint_vector3


(error)

MtlX Transform Vector

mtlxtransformvector

ND_transformvector_vector3


(error)

MtlX Transpose

mtlxtranspose

ND_transpose


(tick)


Pbr

MtlX Blackbody

mtlxblackbody

ND_blackbody


(error)

The following functions are supported in Solaris:

  • sin
  • cos
  • tan
  • sqrt
  • log
  • floor
  • exp
  • ceil
  • asin
  • acos



Reference