Skip to content

Commit 53449cb

Browse files
authored
Add Random Float and Random Color nodes (AcademySoftwareFoundation#1330)
Add Random Float and Random Color nodes, to simplify generating randomized signals in a material.
1 parent 2eacf5a commit 53449cb

2 files changed

Lines changed: 183 additions & 0 deletions

File tree

libraries/stdlib/stdlib_defs.mtlx

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1024,6 +1024,52 @@
10241024
<output name="out" type="float" />
10251025
</nodedef>
10261026

1027+
<!--
1028+
Node: <randomfloat>
1029+
Produces a randomized float, based on an 'input' signal and 'seed' value.
1030+
-->
1031+
<nodedef name="ND_randomfloat_float" node="randomfloat" nodegroup="procedural">
1032+
<input name="in" type="float" uiname="Input" value="0.0" doc="Initial randomization seed." />
1033+
<input name="min" type="float" uiname="Minimum" value="0.0" doc="The minimum output value." />
1034+
<input name="max" type="float" uiname="Maximum" value="1.0" doc="The maximum output value." />
1035+
<input name="seed" type="integer" uiname="Seed" value="0" doc="Additional seed." />
1036+
<output name="out" type="float" />
1037+
</nodedef>
1038+
<nodedef name="ND_randomfloat_integer" node="randomfloat" nodegroup="procedural">
1039+
<input name="in" type="integer" uiname="Input" value="0" />
1040+
<input name="min" type="float" uiname="Minimum" value="0.0" />
1041+
<input name="max" type="float" uiname="Maximum" value="1.0" />
1042+
<input name="seed" type="integer" uiname="Seed" value="0" />
1043+
<output name="out" type="float" />
1044+
</nodedef>
1045+
1046+
<!--
1047+
Node: <randomcolor>
1048+
Produces a randomized RGB color, based on an 'input' signal and 'seed' value.
1049+
-->
1050+
<nodedef name="ND_randomcolor_float" node="randomcolor" nodegroup="procedural3d">
1051+
<input name="in" type="float" uiname="Input" uisoftmin="0.0" uisoftmax="10.0" value="0.0" />
1052+
<input name="huelow" type="float" uiname="Hue Low" uisoftmin="0.0" uisoftmax="1.0" value="0" />
1053+
<input name="huehigh" type="float" uiname="Hue High" uisoftmin="0.0" uisoftmax="1.0" value="1" />
1054+
<input name="saturationlow" type="float" uiname="Saturation Low" uisoftmin="0.0" uisoftmax="1.0" value="0.825" />
1055+
<input name="saturationhigh" type="float" uiname="Saturation High" uisoftmin="0.0" uisoftmax="1.0" value="1" />
1056+
<input name="brightnesslow" type="float" uiname="Brightness Low" uisoftmin="0.0" uisoftmax="1.0" value="1" />
1057+
<input name="brightnesshigh" type="float" uiname="Brightness High" uisoftmin="0.0" uisoftmax="1.0" value="1" />
1058+
<input name="seed" type="integer" uiname="Seed" value="0" />
1059+
<output name="out" type="color3" />
1060+
</nodedef>
1061+
<nodedef name="ND_randomcolor_integer" node="randomcolor" nodegroup="procedural3d">
1062+
<input name="in" type="integer" uiname="Input" uisoftmin="0" uisoftmax="10" value="0" />
1063+
<input name="huelow" type="float" uiname="Hue Low" uisoftmin="0.0" uisoftmax="1.0" value="0" />
1064+
<input name="huehigh" type="float" uiname="Hue High" uisoftmin="0.0" uisoftmax="1.0" value="1" />
1065+
<input name="saturationlow" type="float" uiname="Saturation Low" uisoftmin="0.0" uisoftmax="1.0" value="0.825" />
1066+
<input name="saturationhigh" type="float" uiname="Saturation High" uisoftmin="0.0" uisoftmax="1.0" value="1" />
1067+
<input name="brightnesslow" type="float" uiname="Brightness Low" uisoftmin="0.0" uisoftmax="1.0" value="1" />
1068+
<input name="brightnesshigh" type="float" uiname="Brightness High" uisoftmin="0.0" uisoftmax="1.0" value="1" />
1069+
<input name="seed" type="integer" uiname="Seed" value="0" />
1070+
<output name="out" type="color3" />
1071+
</nodedef>
1072+
10271073
<!--
10281074
Node: <checkerboard>
10291075
A 2D checkerboard pattern.

libraries/stdlib/stdlib_ng.mtlx

Lines changed: 137 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1160,6 +1160,143 @@
11601160
<output name="out" type="float" nodename="N_range" />
11611161
</nodegraph>
11621162

1163+
<!--
1164+
Node: <randomfloat>
1165+
Produces a randomized float, based on an 'input' signal and 'seed' value.
1166+
-->
1167+
<nodegraph name="NG_randomfloat_float" nodedef="ND_randomfloat_float">
1168+
<convert name="N_convertSeed1" type="float">
1169+
<input name="in" type="integer" interfacename="seed" />
1170+
</convert>
1171+
<modulo name="N_moduloInput" type="float">
1172+
<input name="in1" type="float" interfacename="in" />
1173+
<input name="in2" type="float" value="4219" />
1174+
</modulo>
1175+
<multiply name="N_scaleInput" type="float">
1176+
<input name="in1" type="float" nodename="N_moduloInput" />
1177+
<input name="in2" type="float" value="3947" />
1178+
</multiply>
1179+
<combine2 name="N_combine2" type="vector2">
1180+
<input name="in1" type="float" nodename="N_scaleInput" />
1181+
<input name="in2" type="float" nodename="N_convertSeed1" />
1182+
</combine2>
1183+
<cellnoise2d name="N_cellnoise1" type="float">
1184+
<input name="texcoord" type="vector2" nodename="N_combine2" />
1185+
</cellnoise2d>
1186+
<range name="N_remapRange" type="float">
1187+
<input name="in" type="float" nodename="N_cellnoise1" />
1188+
<input name="outlow" type="float" interfacename="min" />
1189+
<input name="outhigh" type="float" interfacename="max" />
1190+
<input name="doclamp" type="boolean" value="true" />
1191+
</range>
1192+
<output name="out" type="float" nodename="N_remapRange" />
1193+
</nodegraph>
1194+
<nodegraph name="NG_randomfloat_integer" nodedef="ND_randomfloat_integer">
1195+
<convert name="N_convertInput1" type="float">
1196+
<input name="in" type="integer" interfacename="in" />
1197+
</convert>
1198+
<convert name="N_convertSeed1" type="float">
1199+
<input name="in" type="integer" interfacename="seed" />
1200+
</convert>
1201+
<combine2 name="N_combine2" type="vector2">
1202+
<input name="in1" type="float" nodename="N_convertInput1" />
1203+
<input name="in2" type="float" nodename="N_convertSeed1" />
1204+
</combine2>
1205+
<cellnoise2d name="N_cellnoise1" type="float">
1206+
<input name="texcoord" type="vector2" nodename="N_combine2" />
1207+
</cellnoise2d>
1208+
<range name="N_remapRange" type="float">
1209+
<input name="in" type="float" nodename="N_cellnoise1" />
1210+
<input name="outlow" type="float" interfacename="min" />
1211+
<input name="outhigh" type="float" interfacename="max" />
1212+
<input name="doclamp" type="boolean" value="true" />
1213+
</range>
1214+
<output name="out" type="float" nodename="N_remapRange" />
1215+
</nodegraph>
1216+
1217+
<!--
1218+
Node: <randomcolor>
1219+
Produces a randomized color, based on an input signal and seed value.
1220+
-->
1221+
<nodegraph name="NG_randomcolor_float" nodedef="ND_randomcolor_float">
1222+
<convert name="N_convertSeed1" type="float">
1223+
<input name="in" type="integer" interfacename="seed" />
1224+
</convert>
1225+
<add name="N_offset_hue" type="float">
1226+
<input name="in1" type="float" nodename="N_convertSeed1" />
1227+
<input name="in2" type="float" value="413.3" />
1228+
</add>
1229+
<add name="N_offset_saturation" type="float">
1230+
<input name="in1" type="float" nodename="N_convertSeed1" />
1231+
<input name="in2" type="float" value="1522.4" />
1232+
</add>
1233+
<add name="N_offset_brightness" type="float">
1234+
<input name="in1" type="float" nodename="N_convertSeed1" />
1235+
<input name="in2" type="float" value="1813.8" />
1236+
</add>
1237+
<ceil name="N_seed_hue" type="integer">
1238+
<input name="in" type="float" nodename="N_offset_hue" />
1239+
</ceil>
1240+
<ceil name="N_seed_saturation" type="integer">
1241+
<input name="in" type="float" nodename="N_offset_saturation" />
1242+
</ceil>
1243+
<ceil name="N_seed_brightness" type="integer">
1244+
<input name="in" type="float" nodename="N_offset_brightness" />
1245+
</ceil>
1246+
<randomfloat name="N_rand_hue" type="float">
1247+
<input name="in" type="float" interfacename="in" />
1248+
<input name="seed" type="integer" nodename="N_seed_hue" />
1249+
</randomfloat>
1250+
<randomfloat name="N_rand_saturation" type="float">
1251+
<input name="in" type="float" interfacename="in" />
1252+
<input name="seed" type="integer" nodename="N_seed_saturation" />
1253+
</randomfloat>
1254+
<randomfloat name="N_rand_brightness" type="float">
1255+
<input name="in" type="float" interfacename="in" />
1256+
<input name="seed" type="integer" nodename="N_seed_brightness" />
1257+
</randomfloat>
1258+
<range name="N_range_hue" type="float">
1259+
<input name="in" type="float" nodename="N_rand_hue" />
1260+
<input name="outlow" type="float" interfacename="huelow" />
1261+
<input name="outhigh" type="float" interfacename="huehigh" />
1262+
</range>
1263+
<range name="N_range_saturation" type="float">
1264+
<input name="in" type="float" nodename="N_rand_saturation" />
1265+
<input name="outlow" type="float" interfacename="saturationlow" />
1266+
<input name="outhigh" type="float" interfacename="saturationhigh" />
1267+
</range>
1268+
<range name="N_range_brightness" type="float">
1269+
<input name="in" type="float" nodename="N_rand_brightness" />
1270+
<input name="outlow" type="float" interfacename="brightnesslow" />
1271+
<input name="outhigh" type="float" interfacename="brightnesshigh" />
1272+
</range>
1273+
<combine3 name="N_combine_HSV" type="color3">
1274+
<input name="in1" type="float" nodename="N_range_hue" />
1275+
<input name="in2" type="float" nodename="N_range_saturation" />
1276+
<input name="in3" type="float" nodename="N_range_brightness" />
1277+
</combine3>
1278+
<hsvtorgb name="N_HSV_to_RGB" type="color3">
1279+
<input name="in" type="color3" nodename="N_combine_HSV" />
1280+
</hsvtorgb>
1281+
<output name="out" type="color3" nodename="N_HSV_to_RGB" />
1282+
</nodegraph>
1283+
<nodegraph name="NG_randomcolor_integer" nodedef="ND_randomcolor_integer">
1284+
<convert name="N_convert1" type="float">
1285+
<input name="in" type="integer" interfacename="in" />
1286+
</convert>
1287+
<randomcolor name="N_randomcolor1" type="color3">
1288+
<input name="in" type="float" nodename="N_convert1" />
1289+
<input name="huelow" type="float" interfacename="huelow" />
1290+
<input name="huehigh" type="float" interfacename="huehigh" />
1291+
<input name="saturationlow" type="float" interfacename="saturationlow" />
1292+
<input name="saturationhigh" type="float" interfacename="saturationhigh" />
1293+
<input name="brightnesslow" type="float" interfacename="brightnesslow" />
1294+
<input name="brightnesshigh" type="float" interfacename="brightnesshigh" />
1295+
<input name="seed" type="integer" interfacename="seed" />
1296+
</randomcolor>
1297+
<output name="out" type="color3" nodename="N_randomcolor1" />
1298+
</nodegraph>
1299+
11631300
<!--
11641301
<checkerboard>
11651302
A 2D checkerboard pattern.

0 commit comments

Comments
 (0)