Open sunag opened 2 years ago
There’s 3 other sets of nodes to consider that are already in the standards, and deployed.
I think this has some crossover with the full spec but I haven’t checked yet. I just immediately noticed some missing ones like lights.
These are listed as not core/critical but are supported and there are some useful ones, triplanarProjection for one..
These are apart of the Pixar standard and are actually in the standard package/shaderGen now, although not as clearly documented…
The layering is a bit confusing and I haven’t tried the webViewer on a model that utilizes it (all Pixar USDs are MASSIVE)
I’m not advocating the support or necessity of any nodes at this point, but wanted to make sure the list was complete and accurate..
@DennisSmolek Thank you for the informations!
There's new NPR (non-photorealistic rendering) nodes in MaterialX 1.39, which have often been requested and allow to create effects like fresnel: https://github.com/AcademySoftwareFoundation/MaterialX/blob/main/documents/Specification/MaterialX.NPRSpec.md
The current set includes the following nodes:
viewdirection
facingratio
gooch_shade
Document with the purpose of comparing Three.js
ShaderNode
withMaterialX
.https://materialx.org/assets/MaterialX.v1.38.Spec.pdf
Geometric
Position
positionGeometry
positionLocal
positionWorld
Normal
normalGeometry
normalLocal
normalWorld
Tangent
tangentGeometry
tangentLocal
tangentWorld
Bitangent
bitangentGeometry
bitangentLocal
bitangentWorld
Texture coordinate
uv( index )
Geometry attribute
attribute( 'color', 'vec3' )
attribute( value, type )
Application
frameId
timeLocal()
Math
add( in1, in2 )
sub( in1, in2 )
mul( in1, in2 )
div( in1, in2 )
mod( in1, in2 )
abs( in )
sign( in )
floor( in )
ceil( in )
round( in )
pow( in1, in2 )
sin( in )
cos( in )
tan( in )
asin( in )
acos( in )
atan2( in1, in2 )
sqrt( in )
exp( in )
clamp( in, low = 0, high = 1 )
min( in1, in2 )
max( in1, in2 )
normalize( in )
length( in )
dot( in1, in2 )
cross( in )
transformDirection( in, mat )
normalMap( in, ... )
rotateUV( in, degToRad( amount ) )
Adjustment
remap( in, inlow, inHigh, outLow, outHigh )
smoothstep( in, low, high )
luminance( in, lumacoeffs = lumeCoeffs )
mx_rgbtohsv( rgb )
mx_hsvtorgb( hsv )
Compositing
Premult
Blend
add( b, f )
sub( b, f )
difference( b, f )
burn( b, f )
dodge( b, f )
overlay( b, f )
Merge
Masking
Mix
mix( x, y, a )
Conditional
cond( greaterThan( in1, in2 ), value1, value2 )
cond( greaterThanEqual( in1, in2 ), value1, value2 )
cond( equal( in1, in2 ), value1, value2 )
Channel
vec*( in )
ortype*( in )
node.xyzw
ornode.rgba
vec2( in1, in2 )
vec3( in1, in2, in3 )
vec4( in1, in2, in3, in4 )
Convolution
Procedural
float( value )
,vec2( value )
,vec3( value )
, ...mx_ramplr( valuel, valuer, texcoord )
mx_ramptb( valuet, valueb, texcoord )
mx_splitlr( valuel, valuer, center, texcoord )
mx_splittb( valuet, valueb, texcoord )
mx_noise_float( vec2( texcoord ), amplitude = 1, pivot = 0 )
mx_noise_float( vec3( texcoord ), amplitude = 1, pivot = 0 )
mx_fractal_noise_float( position, octaves = 3, lacunarity = 2, diminish = .5, amplitude = 1 )
mx_cell_noise_float( vec2( texcoord ) )
mx_cell_noise_float( vec3( texcoord ) )
mx_worley_noise_float(.vec2( texcoord ), jitter = 1 )
mx_worley_noise_float(.vec3( texcoord ), jitter = 1 )
Global
Color Management
colorspace()
Supplemental
triplanarTextures( filex, filey, filez )
add( mul( in, amount ), pivot )
saturation( in, amount )
node[ 0 ]
,node[ 1 ]
, .. orelement( node, index )
node.x
,node.y
node.x
,node.y
,node.z
node.x
,node.y
,node.z
,node.w