1#usda 1.0 2( 3 colorManagementSystem = "ocio" 4 customLayerData = { 5 string colorSpace = "acescg" 6 } 7) 8 9def "MaterialX" 10{ 11 def "Materials" 12 { 13 def Material "Msimple" ( 14 prepend variantSets = "vs_simple_srf" 15 ) 16 { 17 color3f inputs:diffColor 18 color3f inputs:otherColor1 19 color3f inputs:otherColor2 20 color3f inputs:otherColor3 21 color3f inputs:specColor 22 float inputs:specRoughness 23 token outputs:mtlx:surface.connect = </MaterialX/Materials/Msimple/shader1.outputs:surface> 24 token outputs:mtlx:volume.connect = </MaterialX/Materials/Msimple/shader2.outputs:volume> 25 26 def Shader "shader1" ( 27 prepend references = </MaterialX/Shaders/shader1> 28 ) 29 { 30 color3f inputs:diffColor.connect = </MaterialX/Materials/Msimple.inputs:diffColor> 31 color3f inputs:otherColor1.connect = </MaterialX/Materials/Msimple.inputs:otherColor1> 32 color3f inputs:otherColor2.connect = </MaterialX/Materials/Msimple.inputs:otherColor2> 33 color3f inputs:otherColor3.connect = </MaterialX/Materials/Msimple.inputs:otherColor3> 34 color3f inputs:specColor.connect = </MaterialX/Materials/Msimple.inputs:specColor> 35 float inputs:specRoughness.connect = </MaterialX/Materials/Msimple.inputs:specRoughness> 36 } 37 38 def Shader "shader2" ( 39 prepend references = </MaterialX/Shaders/shader2> 40 ) 41 { 42 color3f inputs:diffColor.connect = </MaterialX/Materials/Msimple.inputs:diffColor> 43 color3f inputs:specColor.connect = </MaterialX/Materials/Msimple.inputs:specColor> 44 float inputs:specRoughness.connect = </MaterialX/Materials/Msimple.inputs:specRoughness> 45 } 46 variantSet "vs_simple_srf" = { 47 "metal1" { 48 color3f inputs:diffColor = (0.001, 0.001, 0.001) 49 color3f inputs:specColor = (0.671, 0.676, 0.667) 50 float inputs:specRoughness = 0.005 51 52 } 53 "metal2" { 54 color3f inputs:diffColor = (0.049, 0.043, 0.033) 55 color3f inputs:specColor = (0.115, 0.091, 0.064) 56 float inputs:specRoughness = 0.35 57 58 } 59 "plastic1" { 60 color3f inputs:diffColor = (0.134, 0.13, 0.125) 61 color3f inputs:otherColor4 = (0.1, 0.1, 0.1) 62 color3f inputs:otherColor5 = (0.1, 0.1, 0.1) 63 color3f inputs:otherColor6 = (0.1, 0.1, 0.1) ( 64 colorSpace = "lin_rec709" 65 ) 66 color3f inputs:specColor = (0.114, 0.114, 0.114) 67 float inputs:specRoughness = 0.38 68 69 } 70 "plastic2" { 71 color3f inputs:diffColor = (0.17, 0.26, 0.23) 72 float inputs:specRoughness = 0.24 73 74 } 75 } 76 } 77 78 def Material "Msimple2" ( 79 prepend variantSets = "vs_simple_srf" 80 ) 81 { 82 color3f inputs:diffColor 83 color3f inputs:otherColor1 84 color3f inputs:otherColor2 85 color3f inputs:otherColor3 86 color3f inputs:specColor 87 float inputs:specRoughness 88 token outputs:mtlx:surface.connect = </MaterialX/Materials/Msimple2/shader1.outputs:surface> 89 90 def Shader "shader1" ( 91 prepend references = </MaterialX/Shaders/shader1> 92 ) 93 { 94 color3f inputs:diffColor.connect = </MaterialX/Materials/Msimple2.inputs:diffColor> 95 color3f inputs:otherColor1.connect = </MaterialX/Materials/Msimple2.inputs:otherColor1> 96 color3f inputs:otherColor2.connect = </MaterialX/Materials/Msimple2.inputs:otherColor2> 97 color3f inputs:otherColor3.connect = </MaterialX/Materials/Msimple2.inputs:otherColor3> 98 color3f inputs:specColor.connect = </MaterialX/Materials/Msimple2.inputs:specColor> 99 float inputs:specRoughness.connect = </MaterialX/Materials/Msimple2.inputs:specRoughness> 100 } 101 variantSet "vs_simple_srf" = { 102 "plastic2" { 103 color3f inputs:diffColor = (0.17, 0.26, 0.23) 104 float inputs:specRoughness = 0.24 105 106 } 107 } 108 } 109 110 def Material "mheadlight" 111 { 112 token inputs:custom ( 113 renderType = "customtype" 114 ) 115 asset inputs:emissionmap 116 float inputs:gain = 500 ( 117 doc = "This is a bound param" 118 ) 119 token outputs:light.connect = </MaterialX/Materials/mheadlight/nd_headlight1.outputs:light> 120 121 def Shader "nd_headlight1" ( 122 prepend references = </MaterialX/Shaders/nd_headlight1> 123 ) 124 { 125 token inputs:custom ( 126 renderType = "customtype" 127 ) 128 token inputs:custom.connect = </MaterialX/Materials/mheadlight.inputs:custom> 129 asset inputs:emissionmap.connect = </MaterialX/Materials/mheadlight.inputs:emissionmap> 130 float inputs:gain.connect = </MaterialX/Materials/mheadlight.inputs:gain> 131 } 132 } 133 134 def Material "mheadlight1" 135 { 136 token inputs:custom ( 137 renderType = "customtype" 138 ) 139 float inputs:gain = 100 140 float inputs:gain.timeSamples = { 141 11: 110, 142 12: 220, 143 13: 300, 144 14: 480, 145 15: 500, 146 } 147 token outputs:light.connect = </MaterialX/Materials/mheadlight1/nd_headlight0.outputs:light> 148 string primvars:mumble = "shout" 149 150 def Shader "nd_headlight0" ( 151 prepend references = </MaterialX/Shaders/nd_headlight0> 152 ) 153 { 154 token inputs:custom ( 155 renderType = "customtype" 156 ) 157 token inputs:custom.connect = </MaterialX/Materials/mheadlight1.inputs:custom> 158 float inputs:gain.connect = </MaterialX/Materials/mheadlight1.inputs:gain> 159 } 160 } 161 162 def Material "mheadlight2" 163 { 164 token inputs:custom ( 165 renderType = "customtype" 166 ) 167 asset inputs:emissionmap 168 float inputs:gain 169 token outputs:light.connect = </MaterialX/Materials/mheadlight2/nd_headlight1.outputs:light> 170 171 def Shader "nd_headlight1" ( 172 prepend references = </MaterialX/Shaders/nd_headlight1> 173 ) 174 { 175 token inputs:custom ( 176 renderType = "customtype" 177 ) 178 token inputs:custom.connect = </MaterialX/Materials/mheadlight2.inputs:custom> 179 asset inputs:emissionmap.connect = </MaterialX/Materials/mheadlight2.inputs:emissionmap> 180 float inputs:gain.connect = </MaterialX/Materials/mheadlight2.inputs:gain> 181 } 182 } 183 184 def Material "m_vn" 185 { 186 token outputs:mtlx:surface.connect = </MaterialX/Materials/m_vn/nd_vn_2.outputs:surface> 187 188 def Shader "nd_vn_2" ( 189 prepend references = </MaterialX/Shaders/nd_vn_2> 190 ) 191 { 192 } 193 } 194 195 def Material "m_vn_1_0" 196 { 197 token outputs:mtlx:surface.connect = </MaterialX/Materials/m_vn_1_0/nd_vn_1_0.outputs:surface> 198 199 def Shader "nd_vn_1_0" ( 200 prepend references = </MaterialX/Shaders/nd_vn_1_0> 201 ) 202 { 203 } 204 } 205 206 def Material "m_vn_nd_1_0" 207 { 208 token outputs:mtlx:surface.connect = </MaterialX/Materials/m_vn_nd_1_0/nd_vn_1_0.outputs:surface> 209 210 def Shader "nd_vn_1_0" ( 211 prepend references = </MaterialX/Shaders/nd_vn_1_0> 212 ) 213 { 214 } 215 } 216 217 def Material "m_vn_2_0" 218 { 219 token outputs:mtlx:surface.connect = </MaterialX/Materials/m_vn_2_0/nd_vn_2.outputs:surface> 220 221 def Shader "nd_vn_2" ( 222 prepend references = </MaterialX/Shaders/nd_vn_2> 223 ) 224 { 225 } 226 } 227 228 def Material "m_vn_2_1" 229 { 230 token outputs:mtlx:surface.connect = </MaterialX/Materials/m_vn_2_1/nd_vn_2_1.outputs:surface> 231 232 def Shader "nd_vn_2_1" ( 233 prepend references = </MaterialX/Shaders/nd_vn_2_1> 234 ) 235 { 236 } 237 } 238 239 def Material "m_vn_nd_2x" 240 { 241 token outputs:mtlx:surface.connect = </MaterialX/Materials/m_vn_nd_2x/nd_vn_2.outputs:surface> 242 243 def Shader "nd_vn_2" ( 244 prepend references = </MaterialX/Shaders/nd_vn_2> 245 ) 246 { 247 } 248 } 249 } 250 251 def "Shaders" 252 { 253 def Shader "shader1" 254 { 255 uniform token info:id = "shader1" 256 token outputs:surface 257 } 258 259 def Shader "shader2" 260 { 261 uniform token info:id = "shader2" 262 token outputs:volume 263 } 264 265 def Shader "nd_headlight1" 266 { 267 uniform token info:id = "nd_headlight1" 268 token outputs:light 269 } 270 271 def Shader "nd_headlight0" 272 { 273 uniform token info:id = "nd_headlight0" 274 token outputs:light 275 } 276 277 def Shader "nd_vn_2" 278 { 279 uniform token info:id = "nd_vn_2" 280 token outputs:surface 281 } 282 283 def Shader "nd_vn_1_0" 284 { 285 uniform token info:id = "nd_vn_1_0" 286 token outputs:surface 287 } 288 289 def Shader "nd_vn_2_1" 290 { 291 uniform token info:id = "nd_vn_2_1" 292 token outputs:surface 293 } 294 } 295 296 def "Collections" ( 297 prepend apiSchemas = ["CollectionAPI:c_plastic", "CollectionAPI:c_metal", "CollectionAPI:c_lamphouse", "CollectionAPI:c_setgeom", "CollectionAPI:geom_1", "CollectionAPI:geom_2"] 298 ) 299 { 300 prepend rel collection:c_lamphouse:includes = </MaterialX/Collections.collection:c_metal> 301 rel collection:c_metal:includes ( 302 doc = "This is a collection" 303 ) 304 prepend rel collection:c_metal:includes = [ 305 </MaterialX/Collections/X/Y/a/g3>, 306 </MaterialX/Collections/X/Y/a/g4>, 307 ] 308 prepend rel collection:c_plastic:excludes = [ 309 </MaterialX/Collections/X/Y/a/g3>, 310 </MaterialX/Collections/X/Y/a/g5>, 311 ] 312 prepend rel collection:c_plastic:includes = [ 313 </MaterialX/Collections/X/Y/a/g1>, 314 </MaterialX/Collections/X/Y/a/g2>, 315 </MaterialX/Collections/X/Y/a/g5>, 316 ] 317 rel collection:c_setgeom:includes 318 prepend rel collection:geom_1:includes = </MaterialX/Collections/X/Y/a/b/headlight> 319 prepend rel collection:geom_2:includes = [ 320 </MaterialX/Collections/U/V/a/g3>, 321 </MaterialX/Collections/U/V/a/g5>, 322 </MaterialX/Collections/U/V/a/g6>, 323 ] 324 } 325 326 def "Looks" 327 { 328 def "lookA" ( 329 prepend apiSchemas = ["MaterialBindingAPI"] 330 doc = "Look A" 331 prepend references = </MaterialX/Collections> 332 ) 333 { 334 reorder properties = ["material:binding:collection:ma1", "material:binding:collection:ma2", "material:binding:collection:ma3"] 335 rel material:binding:collection:ma1 = [ 336 </MaterialX/Looks/lookA.collection:c_plastic>, 337 </MaterialX/Looks/lookA/Materials/ma1>, 338 ] 339 rel material:binding:collection:ma2 = [ 340 </MaterialX/Looks/lookA.collection:c_metal>, 341 </MaterialX/Looks/lookA/Materials/ma2>, 342 ] 343 rel material:binding:collection:ma3 = [ 344 </MaterialX/Looks/lookA.collection:geom_1>, 345 </MaterialX/Looks/lookA/Materials/ma3>, 346 ] 347 348 def "Materials" 349 { 350 def "ma1" ( 351 doc = "Plastic 1" 352 prepend references = </MaterialX/Materials/Msimple> 353 variants = { 354 string vs_simple_srf = "plastic1" 355 } 356 ) 357 { 358 } 359 360 def "ma2" ( 361 doc = "Metal 1" 362 prepend references = </MaterialX/Materials/Msimple> 363 variants = { 364 string vs_simple_srf = "metal1" 365 } 366 ) 367 { 368 } 369 370 def "ma3" ( 371 prepend references = </MaterialX/Materials/mheadlight> 372 ) 373 { 374 } 375 } 376 } 377 378 def "lookB" ( 379 prepend apiSchemas = ["MaterialBindingAPI"] 380 doc = "Look B" 381 prepend references = </MaterialX/Collections> 382 ) 383 { 384 reorder properties = ["material:binding:collection:ma4", "material:binding:collection:ma5"] 385 rel material:binding:collection:ma4 = [ 386 </MaterialX/Looks/lookB.collection:geom_2>, 387 </MaterialX/Looks/lookB/Materials/ma4>, 388 ] 389 rel material:binding:collection:ma5 = [ 390 </MaterialX/Looks/lookB.collection:c_metal>, 391 </MaterialX/Looks/lookB/Materials/ma5>, 392 ] 393 394 def "Materials" 395 { 396 def "ma4" ( 397 prepend references = </MaterialX/Materials/Msimple> 398 variants = { 399 string vs_simple_srf = "plastic2" 400 } 401 ) 402 { 403 } 404 405 def "ma5" ( 406 prepend references = </MaterialX/Materials/Msimple> 407 variants = { 408 string vs_simple_srf = "metal2" 409 } 410 ) 411 { 412 } 413 } 414 } 415 416 def "lookC" ( 417 prepend apiSchemas = ["MaterialBindingAPI"] 418 doc = "Look C" 419 prepend references = [ 420 </MaterialX/Looks/lookA>, 421 </MaterialX/Collections> 422 ] 423 ) 424 { 425 reorder properties = ["material:binding:collection:ma1_1", "material:binding:collection:ma1", "material:binding:collection:ma2", "material:binding:collection:ma3"] 426 rel material:binding:collection:ma1_1 = [ 427 </MaterialX/Looks/lookC.collection:c_plastic>, 428 </MaterialX/Looks/lookC/Materials/ma1_1>, 429 ] 430 431 over "Materials" 432 { 433 def "ma1_1" ( 434 doc = "Plastic 2" 435 prepend references = </MaterialX/Materials/Msimple2> 436 variants = { 437 string vs_simple_srf = "plastic2" 438 } 439 ) 440 { 441 } 442 } 443 } 444 445 def "lookD" ( 446 prepend apiSchemas = ["MaterialBindingAPI"] 447 prepend references = </MaterialX/Collections> 448 ) 449 { 450 rel material:binding = </MaterialX/Looks/lookD/Materials/ma1> 451 452 def "Materials" 453 { 454 def "ma1" ( 455 prepend references = </MaterialX/Materials/Msimple2> 456 ) 457 { 458 } 459 } 460 } 461 } 462} 463 464def "ModelRoot" ( 465 prepend variantSets = "LookVariant" 466) 467{ 468 variantSet "LookVariant" = { 469 "lookA" ( 470 prepend references = </MaterialX/Looks/lookA> 471 ) { 472 473 } 474 "lookB" ( 475 prepend references = </MaterialX/Looks/lookB> 476 ) { 477 478 } 479 "lookC" ( 480 prepend references = </MaterialX/Looks/lookC> 481 ) { 482 483 } 484 "lookD" ( 485 prepend references = </MaterialX/Looks/lookD> 486 ) { 487 488 } 489 } 490} 491 492