From bbdb1dc1affeea14c89d79f6210a9eeb451ab167 Mon Sep 17 00:00:00 2001
From: Chris Rydalch <crydalch@gmail.com>
Date: Mon, 17 Apr 2023 11:26:43 -0500
Subject: [PATCH 01/14] Adds Random Float and Random Color nodes

Adds Random Float and Random Color nodes, to simplify generating randomized signals in a material.
---
 libraries/stdlib/stdlib_defs.mtlx |  93 +++++++++++++
 libraries/stdlib/stdlib_ng.mtlx   | 210 ++++++++++++++++++++++++++++++
 2 files changed, 303 insertions(+)

diff --git a/libraries/stdlib/stdlib_defs.mtlx b/libraries/stdlib/stdlib_defs.mtlx
index 6922ab3317..9b888a7b6c 100644
--- a/libraries/stdlib/stdlib_defs.mtlx
+++ b/libraries/stdlib/stdlib_defs.mtlx
@@ -1024,6 +1024,99 @@
     <output name="out" type="float" />
   </nodedef>
 
+  <!--
+    Node: <randomfloat>
+    Produces a randomized float, based on an 'input' signal and 'seed' value.
+  -->
+  <nodedef name="ND_randomfloat_float" node="randomfloat" nodegroup="procedural">
+    <input name="in" type="float" uiname="Input" value="0.0" />
+    <input name="seed" type="float" uiname="Seed" value="0.0" />
+    <output name="out" type="float" />
+  </nodedef>
+  <nodedef name="ND_randomfloat_integer" node="randomfloat" nodegroup="procedural">
+    <input name="in" type="integer" uiname="Input" value="0" />
+    <input name="seed" type="float" uiname="Seed" value="0.0" />
+    <output name="out" type="float" />
+  </nodedef>
+  <nodedef name="ND_randomfloat_color3" node="randomfloat" nodegroup="procedural">
+    <input name="in" type="color3" uiname="Input" value="0" />
+    <input name="seed" type="float" uiname="Seed" value="0.0" />
+    <output name="out" type="float" />
+  </nodedef>
+  <nodedef name="ND_randomfloat_vector3" node="randomfloat" nodegroup="procedural">
+    <input name="in" type="vector3" uiname="Input" value="0" />
+    <input name="seed" type="float" uiname="Seed" value="0.0" />
+    <output name="out" type="float" />
+  </nodedef>
+  <nodedef name="ND_randomfloat_vector2" node="randomfloat" nodegroup="procedural">
+    <input name="in" type="vector2" uiname="Input" value="0" />
+    <input name="seed" type="float" uiname="Seed" value="0.0" />
+    <output name="out" type="float" />
+  </nodedef>
+
+  <!--
+    Node: <randomcolor>
+    Produces a randomized color, based on an input signal and seed value. The input 
+    is only used to generate the randomized color, even if the input signature is a 
+    color or vector3. The output is an RGB color.
+  -->
+  <nodedef name="ND_randomcolor_float" node="randomcolor" nodegroup="procedural3d">
+    <input name="in" type="float" uiname="Input" uisoftmin="0.0" uisoftmax="10.0" value="0" />
+    <input name="huelow" type="float" uiname="Hue Low" uisoftmin="0.0" uisoftmax="1.0" value="0" />
+    <input name="huehigh" type="float" uiname="Hue High" uisoftmin="0.0" uisoftmax="1.0" value="1" />
+    <input name="saturationlow" type="float" uiname="Saturation Low" uisoftmin="0.0" uisoftmax="1.0" value="0.825" />
+    <input name="saturationhigh" type="float" uiname="Saturation High" uisoftmin="0.0" uisoftmax="1.0" value="1" />
+    <input name="gammalow" type="float" uiname="Gamma Low" uisoftmin="0.0" uisoftmax="3.0" value="1" />
+    <input name="gammahigh" type="float" uiname="Gamma High" uisoftmin="0.0" uisoftmax="3.0" value="1" />
+    <input name="seed" type="float" uiname="Seed" value="0" />
+    <output name="out" type="color3" />
+  </nodedef>
+  <nodedef name="ND_randomcolor_integer" node="randomcolor" nodegroup="procedural3d">
+    <input name="in" type="integer" uiname="Input" uisoftmin="0" uisoftmax="10" value="0" />
+    <input name="huelow" type="float" uiname="Hue Low" uisoftmin="0.0" uisoftmax="1.0" value="0" />
+    <input name="huehigh" type="float" uiname="Hue High" uisoftmin="0.0" uisoftmax="1.0" value="1" />
+    <input name="saturationlow" type="float" uiname="Saturation Low" uisoftmin="0.0" uisoftmax="1.0" value="0.825" />
+    <input name="saturationhigh" type="float" uiname="Saturation High" uisoftmin="0.0" uisoftmax="1.0" value="1" />
+    <input name="gammalow" type="float" uiname="Gamma Low" uisoftmin="0.0" uisoftmax="3.0" value="1" />
+    <input name="gammahigh" type="float" uiname="Gamma High" uisoftmin="0.0" uisoftmax="3.0" value="1" />
+    <input name="seed" type="float" uiname="Seed" value="0" />
+    <output name="out" type="color3" />
+  </nodedef>
+  <nodedef name="ND_randomcolor_color3" node="randomcolor" nodegroup="procedural3d">
+    <input name="in" type="color3" uiname="Input" uisoftmin="0" uisoftmax="10" value="0" />
+    <input name="huelow" type="float" uiname="Hue Low" uisoftmin="0.0" uisoftmax="1.0" value="0" />
+    <input name="huehigh" type="float" uiname="Hue High" uisoftmin="0.0" uisoftmax="1.0" value="1" />
+    <input name="saturationlow" type="float" uiname="Saturation Low" uisoftmin="0.0" uisoftmax="1.0" value="0.825" />
+    <input name="saturationhigh" type="float" uiname="Saturation High" uisoftmin="0.0" uisoftmax="1.0" value="1" />
+    <input name="gammalow" type="float" uiname="Gamma Low" uisoftmin="0.0" uisoftmax="3.0" value="1" />
+    <input name="gammahigh" type="float" uiname="Gamma High" uisoftmin="0.0" uisoftmax="3.0" value="1" />
+    <input name="seed" type="float" uiname="Seed" value="0" />
+    <output name="out" type="color3" />
+  </nodedef>
+  <nodedef name="ND_randomcolor_vector3" node="randomcolor" nodegroup="procedural3d">
+    <input name="in" type="vector3" uiname="Input" uisoftmin="0" uisoftmax="10" value="0" />
+    <input name="huelow" type="float" uiname="Hue Low" uisoftmin="0.0" uisoftmax="1.0" value="0" />
+    <input name="huehigh" type="float" uiname="Hue High" uisoftmin="0.0" uisoftmax="1.0" value="1" />
+    <input name="saturationlow" type="float" uiname="Saturation Low" uisoftmin="0.0" uisoftmax="1.0" value="0.825" />
+    <input name="saturationhigh" type="float" uiname="Saturation High" uisoftmin="0.0" uisoftmax="1.0" value="1" />
+    <input name="gammalow" type="float" uiname="Gamma Low" uisoftmin="0.0" uisoftmax="3.0" value="1" />
+    <input name="gammahigh" type="float" uiname="Gamma High" uisoftmin="0.0" uisoftmax="3.0" value="1" />
+    <input name="seed" type="float" uiname="Seed" value="0" />
+    <output name="out" type="color3" />
+  </nodedef>
+  <nodedef name="ND_randomcolor_vector2" node="randomcolor" nodegroup="procedural3d">
+    <input name="in" type="vector2" uiname="Input" uisoftmin="0" uisoftmax="10" value="0" />
+    <input name="huelow" type="float" uiname="Hue Low" uisoftmin="0.0" uisoftmax="1.0" value="0" />
+    <input name="huehigh" type="float" uiname="Hue High" uisoftmin="0.0" uisoftmax="1.0" value="1" />
+    <input name="saturationlow" type="float" uiname="Saturation Low" uisoftmin="0.0" uisoftmax="1.0" value="0.825" />
+    <input name="saturationhigh" type="float" uiname="Saturation High" uisoftmin="0.0" uisoftmax="1.0" value="1" />
+    <input name="gammalow" type="float" uiname="Gamma Low" uisoftmin="0.0" uisoftmax="3.0" value="1" />
+    <input name="gammahigh" type="float" uiname="Gamma High" uisoftmin="0.0" uisoftmax="3.0" value="1" />
+    <input name="seed" type="float" uiname="Seed" value="0" />
+    <output name="out" type="color3" />
+  </nodedef>
+
+
   <!-- ======================================================================== -->
   <!-- Geometric nodes                                                          -->
   <!-- ======================================================================== -->
diff --git a/libraries/stdlib/stdlib_ng.mtlx b/libraries/stdlib/stdlib_ng.mtlx
index 8d4046f8ae..39dc4d3c2d 100644
--- a/libraries/stdlib/stdlib_ng.mtlx
+++ b/libraries/stdlib/stdlib_ng.mtlx
@@ -1160,6 +1160,216 @@
     <output name="out" type="float" nodename="N_range" />
   </nodegraph>
 
+  <!--
+    Node: <randomfloat>
+    Produces a randomized float, based on an 'input' signal and 'seed' value.
+  -->
+  <nodegraph name="NG_randomfloat_float" nodedef="ND_randomfloat_float">
+    <cellnoise2d name="N_cellnoise_1" type="float">
+      <input name="texcoord" type="vector2" nodename="N_combine2" />
+    </cellnoise2d>
+    <combine2 name="N_combine2" type="vector2">
+      <input name="in1" type="float" nodename="N_subtract1" />
+      <input name="in2" type="float" nodename="N_offset_seed" />
+    </combine2>
+    <subtract name="N_subtract1" type="float">
+      <input name="in1" type="float" interfacename="in" />
+      <input name="in2" type="float" nodename="N_offset_seed" />
+    </subtract>
+    <multiply name="N_offset_seed" type="float">
+      <input name="in1" type="float" interfacename="seed" value="0" />
+      <input name="in2" type="float" value="43758.5" />
+    </multiply>
+    <output name="out" type="float" nodename="N_cellnoise_1" />
+  </nodegraph>
+  <nodegraph name="NG_randomfloat_integer" nodedef="ND_randomfloat_integer">
+    <convert name="N_convert1" type="float">
+      <input name="in" type="integer" interfacename="in" />
+    </convert>
+    <randomfloat name="N_randomfloat1" type="float">
+      <input name="in" type="float" nodename="N_convert1" />
+      <input name="seed" type="float" interfacename="seed" />
+    </randomfloat>
+    <output name="out" type="float" nodename="N_randomfloat1" />
+  </nodegraph>
+  <nodegraph name="NG_randomfloat_color3" nodedef="ND_randomfloat_color3">
+    <convert name="N_convert1" type="vector3">
+      <input name="in" type="color3" interfacename="in" />
+    </convert>
+    <magnitude name="N_magnitude1" type="float">
+      <input name="in" type="vector3" nodename="N_convert1" />
+    </magnitude>
+    <randomfloat name="N_randomfloat1" type="float">
+      <input name="in" type="float" nodename="N_magnitude1" />
+      <input name="seed" type="float" interfacename="seed" />
+    </randomfloat>
+    <output name="out" type="float" nodename="N_randomfloat1" />
+  </nodegraph>
+  <nodegraph name="NG_randomfloat_vector3" nodedef="ND_randomfloat_vector3">
+    <magnitude name="N_magnitude1" type="float">
+      <input name="in" type="vector3" interfacename="in" />
+    </magnitude>
+    <randomfloat name="N_randomfloat1" type="float">
+      <input name="in" type="float" nodename="N_magnitude1" />
+      <input name="seed" type="float" interfacename="seed" />
+    </randomfloat>
+    <output name="out" type="float" nodename="N_randomfloat1" />
+  </nodegraph>
+  <nodegraph name="NG_randomfloat_vector2" nodedef="ND_randomfloat_vector2">
+    <magnitude name="N_magnitude1" type="float">
+      <input name="in" type="vector2" interfacename="in" />
+    </magnitude>
+    <randomfloat name="N_randomfloat1" type="float">
+      <input name="in" type="float" nodename="N_magnitude1" />
+      <input name="seed" type="float" interfacename="seed" />
+    </randomfloat>
+    <output name="out" type="float" nodename="N_randomfloat1" />
+  </nodegraph>
+
+  <!--
+    Node: <randomcolor>
+    Produces a randomized color, based on an input signal and seed value.
+  -->
+  <nodegraph name="NG_randomcolor_float" nodedef="ND_randomcolor_float">
+    <randomfloat name="N_rand_hue" type="float">
+      <input name="in" type="float" interfacename="in" value="0" />
+      <input name="seed" type="float" nodename="N_seed_hue" value="0" />
+    </randomfloat>
+    <randomfloat name="N_rand_saturation" type="float">
+      <input name="in" type="float" interfacename="in" value="0" />
+      <input name="seed" type="float" nodename="N_seed_saturation" />
+    </randomfloat>
+    <randomfloat name="N_rand_gamma" type="float">
+      <input name="in" type="float" interfacename="in" value="0" />
+      <input name="seed" type="float" nodename="N_seed_gamma" />
+    </randomfloat>
+    <range name="N_range_hue" type="float">
+      <input name="in" type="float" nodename="N_rand_hue" value="0" />
+      <input name="outlow" type="float" interfacename="huelow" value="0" />
+      <input name="outhigh" type="float" interfacename="huehigh" value="1" />
+      <input name="inlow" type="float" value="0" />
+      <input name="inhigh" type="float" value="1" />
+      <input name="gamma" type="float" value="1" />
+      <input name="doclamp" type="boolean" value="false" />
+    </range>
+    <range name="N_range_saturation" type="float">
+      <input name="in" type="float" nodename="N_rand_saturation" value="0" />
+      <input name="outlow" type="float" interfacename="saturationlow" value="0" />
+      <input name="outhigh" type="float" interfacename="saturationhigh" value="1" />
+      <input name="inlow" type="float" value="0" />
+      <input name="inhigh" type="float" value="1" />
+      <input name="gamma" type="float" value="1" />
+      <input name="doclamp" type="boolean" value="false" />
+    </range>
+    <range name="N_range_gamma" type="float">
+      <input name="in" type="float" nodename="N_rand_gamma" />
+      <input name="outlow" type="float" interfacename="gammalow" />
+      <input name="outhigh" type="float" interfacename="gammahigh" />
+      <input name="inlow" type="float" value="0" />
+      <input name="inhigh" type="float" value="1" />
+      <input name="gamma" type="float" value="1" />
+      <input name="doclamp" type="boolean" value="false" />
+    </range>
+    <add name="N_seed_hue" type="float">
+      <input name="in1" type="float" interfacename="seed" />
+      <input name="in2" type="float" value="0" />
+    </add>
+    <add name="N_seed_saturation" type="float">
+      <input name="in1" type="float" interfacename="seed" />
+      <input name="in2" type="float" value="0" />
+    </add>
+    <add name="N_seed_gamma" type="float">
+      <input name="in1" type="float" interfacename="seed" />
+      <input name="in2" type="float" value="0" />
+    </add>
+    <combine3 name="N_combine_HSV" type="color3">
+      <input name="in1" type="float" nodename="N_range_hue" />
+      <input name="in2" type="float" nodename="N_range_saturation" />
+      <input name="in3" type="float" value="1" />
+    </combine3>
+    <range name="N_gamma" type="color3">
+      <input name="in" type="color3" nodename="N_HSV_to_RGB" />
+      <input name="gamma" type="float" nodename="N_range_gamma" />
+      <input name="inlow" type="float" value="0" />
+      <input name="inhigh" type="float" value="1" />
+      <input name="outlow" type="float" value="0" />
+      <input name="outhigh" type="float" value="1" />
+      <input name="doclamp" type="boolean" value="false" />
+    </range>
+    <hsvtorgb name="N_HSV_to_RGB" type="color3">
+      <input name="in" type="color3" nodename="N_combine_HSV" />
+    </hsvtorgb>
+    <output name="out" type="color3" nodename="N_gamma" />
+  </nodegraph>
+  <nodegraph name="NG_randomcolor_integer" nodedef="ND_randomcolor_integer">
+    <convert name="N_convert1" type="float">
+      <input name="in" type="integer" interfacename="in" />
+    </convert>
+    <randomcolor name="N_randomcolor1" type="color3">
+      <input name="in" type="float" nodename="N_convert1" />
+      <input name="huelow" type="float" interfacename="huelow" />
+      <input name="huehigh" type="float" interfacename="huehigh" />
+      <input name="saturationlow" type="float" interfacename="saturationlow" />
+      <input name="saturationhigh" type="float" interfacename="saturationhigh" />
+      <input name="gammalow" type="float" interfacename="gammalow" />
+      <input name="gammahigh" type="float" interfacename="gammahigh" />
+      <input name="seed" type="float" interfacename="seed" />
+    </randomcolor>
+    <output name="out" type="color3" nodename="N_randomcolor1" />
+  </nodegraph>
+  <nodegraph name="NG_randomcolor_color3" nodedef="ND_randomcolor_color3">
+    <convert name="N_convert1" type="vector3">
+      <input name="in" type="color3" interfacename="in" />
+    </convert>
+    <magnitude name="N_magnitude1" type="float">
+      <input name="in" type="vector3" nodename="N_convert1" />
+    </magnitude>
+    <randomcolor name="N_randomcolor1" type="color3">
+      <input name="in" type="float" nodename="N_magnitude1" />
+      <input name="huelow" type="float" interfacename="huelow" />
+      <input name="huehigh" type="float" interfacename="huehigh" />
+      <input name="saturationlow" type="float" interfacename="saturationlow" />
+      <input name="saturationhigh" type="float" interfacename="saturationhigh" />
+      <input name="gammalow" type="float" interfacename="gammalow" />
+      <input name="gammahigh" type="float" interfacename="gammahigh" />
+      <input name="seed" type="float" interfacename="seed" />
+    </randomcolor>
+    <output name="out" type="color3" nodename="N_randomcolor1" />
+  </nodegraph>
+  <nodegraph name="NG_randomcolor_vector3" nodedef="ND_randomcolor_vector3">
+    <magnitude name="N_magnitude1" type="float">
+      <input name="in" type="vector3" interfacename="in" />
+    </magnitude>
+    <randomcolor name="N_randomcolor1" type="color3">
+      <input name="in" type="float" nodename="N_magnitude1" />
+      <input name="huelow" type="float" interfacename="huelow" />
+      <input name="huehigh" type="float" interfacename="huehigh" />
+      <input name="saturationlow" type="float" interfacename="saturationlow" />
+      <input name="saturationhigh" type="float" interfacename="saturationhigh" />
+      <input name="gammalow" type="float" interfacename="gammalow" />
+      <input name="gammahigh" type="float" interfacename="gammahigh" />
+      <input name="seed" type="float" interfacename="seed" />
+    </randomcolor>
+    <output name="out" type="color3" nodename="N_randomcolor1" />
+  </nodegraph>
+  <nodegraph name="NG_randomcolor_vector2" nodedef="ND_randomcolor_vector2">
+    <magnitude name="N_magnitude1" type="float">
+      <input name="in" type="vector2" interfacename="in" />
+    </magnitude>
+    <randomcolor name="N_randomcolor1" type="color3">
+      <input name="in" type="float" nodename="N_magnitude1" />
+      <input name="huelow" type="float" interfacename="huelow" />
+      <input name="huehigh" type="float" interfacename="huehigh" />
+      <input name="saturationlow" type="float" interfacename="saturationlow" />
+      <input name="saturationhigh" type="float" interfacename="saturationhigh" />
+      <input name="gammalow" type="float" interfacename="gammalow" />
+      <input name="gammahigh" type="float" interfacename="gammahigh" />
+      <input name="seed" type="float" interfacename="seed" />
+    </randomcolor>
+    <output name="out" type="color3" nodename="N_randomcolor1" />
+  </nodegraph>
+
+
   <!-- ======================================================================== -->
   <!-- Geometric nodes                                                          -->
   <!-- ======================================================================== -->

From e051d13cfc6e12a93bb9f24270c47b88a4cd0ed4 Mon Sep 17 00:00:00 2001
From: Chris Rydalch <crydalch@gmail.com>
Date: Mon, 17 Apr 2023 18:51:38 -0500
Subject: [PATCH 02/14] Fixed the default values to match the input type
 signatures.

---
 libraries/stdlib/stdlib_defs.mtlx | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/libraries/stdlib/stdlib_defs.mtlx b/libraries/stdlib/stdlib_defs.mtlx
index 9b888a7b6c..f110ea22d2 100644
--- a/libraries/stdlib/stdlib_defs.mtlx
+++ b/libraries/stdlib/stdlib_defs.mtlx
@@ -1039,17 +1039,17 @@
     <output name="out" type="float" />
   </nodedef>
   <nodedef name="ND_randomfloat_color3" node="randomfloat" nodegroup="procedural">
-    <input name="in" type="color3" uiname="Input" value="0" />
+    <input name="in" type="color3" uiname="Input" value="0.0, 0.0, 0.0" />
     <input name="seed" type="float" uiname="Seed" value="0.0" />
     <output name="out" type="float" />
   </nodedef>
   <nodedef name="ND_randomfloat_vector3" node="randomfloat" nodegroup="procedural">
-    <input name="in" type="vector3" uiname="Input" value="0" />
+    <input name="in" type="vector3" uiname="Input" value="0.0, 0.0, 0.0" />
     <input name="seed" type="float" uiname="Seed" value="0.0" />
     <output name="out" type="float" />
   </nodedef>
   <nodedef name="ND_randomfloat_vector2" node="randomfloat" nodegroup="procedural">
-    <input name="in" type="vector2" uiname="Input" value="0" />
+    <input name="in" type="vector2" uiname="Input" value="0.0, 0.0" />
     <input name="seed" type="float" uiname="Seed" value="0.0" />
     <output name="out" type="float" />
   </nodedef>
@@ -1061,7 +1061,7 @@
     color or vector3. The output is an RGB color.
   -->
   <nodedef name="ND_randomcolor_float" node="randomcolor" nodegroup="procedural3d">
-    <input name="in" type="float" uiname="Input" uisoftmin="0.0" uisoftmax="10.0" value="0" />
+    <input name="in" type="float" uiname="Input" uisoftmin="0.0" uisoftmax="10.0" value="0.0" />
     <input name="huelow" type="float" uiname="Hue Low" uisoftmin="0.0" uisoftmax="1.0" value="0" />
     <input name="huehigh" type="float" uiname="Hue High" uisoftmin="0.0" uisoftmax="1.0" value="1" />
     <input name="saturationlow" type="float" uiname="Saturation Low" uisoftmin="0.0" uisoftmax="1.0" value="0.825" />
@@ -1083,7 +1083,7 @@
     <output name="out" type="color3" />
   </nodedef>
   <nodedef name="ND_randomcolor_color3" node="randomcolor" nodegroup="procedural3d">
-    <input name="in" type="color3" uiname="Input" uisoftmin="0" uisoftmax="10" value="0" />
+    <input name="in" type="color3" uiname="Input" uisoftmin="0" uisoftmax="10" value="0.0, 0.0, 0.0" />
     <input name="huelow" type="float" uiname="Hue Low" uisoftmin="0.0" uisoftmax="1.0" value="0" />
     <input name="huehigh" type="float" uiname="Hue High" uisoftmin="0.0" uisoftmax="1.0" value="1" />
     <input name="saturationlow" type="float" uiname="Saturation Low" uisoftmin="0.0" uisoftmax="1.0" value="0.825" />
@@ -1094,7 +1094,7 @@
     <output name="out" type="color3" />
   </nodedef>
   <nodedef name="ND_randomcolor_vector3" node="randomcolor" nodegroup="procedural3d">
-    <input name="in" type="vector3" uiname="Input" uisoftmin="0" uisoftmax="10" value="0" />
+    <input name="in" type="vector3" uiname="Input" uisoftmin="0" uisoftmax="10" value="0.0, 0.0, 0.0" />
     <input name="huelow" type="float" uiname="Hue Low" uisoftmin="0.0" uisoftmax="1.0" value="0" />
     <input name="huehigh" type="float" uiname="Hue High" uisoftmin="0.0" uisoftmax="1.0" value="1" />
     <input name="saturationlow" type="float" uiname="Saturation Low" uisoftmin="0.0" uisoftmax="1.0" value="0.825" />
@@ -1105,7 +1105,7 @@
     <output name="out" type="color3" />
   </nodedef>
   <nodedef name="ND_randomcolor_vector2" node="randomcolor" nodegroup="procedural3d">
-    <input name="in" type="vector2" uiname="Input" uisoftmin="0" uisoftmax="10" value="0" />
+    <input name="in" type="vector2" uiname="Input" uisoftmin="0" uisoftmax="10" value="0.0, 0.0" />
     <input name="huelow" type="float" uiname="Hue Low" uisoftmin="0.0" uisoftmax="1.0" value="0" />
     <input name="huehigh" type="float" uiname="Hue High" uisoftmin="0.0" uisoftmax="1.0" value="1" />
     <input name="saturationlow" type="float" uiname="Saturation Low" uisoftmin="0.0" uisoftmax="1.0" value="0.825" />

From e57d49c0d6ec482053292d0498e6353dce8aebc6 Mon Sep 17 00:00:00 2001
From: Chris Rydalch <crydalch@gmail.com>
Date: Fri, 12 May 2023 14:01:49 -0500
Subject: [PATCH 03/14] Added color4 signature to randomcolor

---
 libraries/stdlib/stdlib_defs.mtlx |  67 ++++++++++++-
 libraries/stdlib/stdlib_ng.mtlx   | 157 +++++++++++++++++++++++++++++-
 2 files changed, 214 insertions(+), 10 deletions(-)

diff --git a/libraries/stdlib/stdlib_defs.mtlx b/libraries/stdlib/stdlib_defs.mtlx
index f110ea22d2..5e48c73fe7 100644
--- a/libraries/stdlib/stdlib_defs.mtlx
+++ b/libraries/stdlib/stdlib_defs.mtlx
@@ -1060,7 +1060,7 @@
     is only used to generate the randomized color, even if the input signature is a 
     color or vector3. The output is an RGB color.
   -->
-  <nodedef name="ND_randomcolor_float" node="randomcolor" nodegroup="procedural3d">
+  <nodedef name="ND_randomcolor_float_color3" node="randomcolor" nodegroup="procedural3d">
     <input name="in" type="float" uiname="Input" uisoftmin="0.0" uisoftmax="10.0" value="0.0" />
     <input name="huelow" type="float" uiname="Hue Low" uisoftmin="0.0" uisoftmax="1.0" value="0" />
     <input name="huehigh" type="float" uiname="Hue High" uisoftmin="0.0" uisoftmax="1.0" value="1" />
@@ -1071,7 +1071,7 @@
     <input name="seed" type="float" uiname="Seed" value="0" />
     <output name="out" type="color3" />
   </nodedef>
-  <nodedef name="ND_randomcolor_integer" node="randomcolor" nodegroup="procedural3d">
+  <nodedef name="ND_randomcolor_integer_color3" node="randomcolor" nodegroup="procedural3d">
     <input name="in" type="integer" uiname="Input" uisoftmin="0" uisoftmax="10" value="0" />
     <input name="huelow" type="float" uiname="Hue Low" uisoftmin="0.0" uisoftmax="1.0" value="0" />
     <input name="huehigh" type="float" uiname="Hue High" uisoftmin="0.0" uisoftmax="1.0" value="1" />
@@ -1082,7 +1082,7 @@
     <input name="seed" type="float" uiname="Seed" value="0" />
     <output name="out" type="color3" />
   </nodedef>
-  <nodedef name="ND_randomcolor_color3" node="randomcolor" nodegroup="procedural3d">
+  <nodedef name="ND_randomcolor_color3_color3" node="randomcolor" nodegroup="procedural3d">
     <input name="in" type="color3" uiname="Input" uisoftmin="0" uisoftmax="10" value="0.0, 0.0, 0.0" />
     <input name="huelow" type="float" uiname="Hue Low" uisoftmin="0.0" uisoftmax="1.0" value="0" />
     <input name="huehigh" type="float" uiname="Hue High" uisoftmin="0.0" uisoftmax="1.0" value="1" />
@@ -1093,7 +1093,7 @@
     <input name="seed" type="float" uiname="Seed" value="0" />
     <output name="out" type="color3" />
   </nodedef>
-  <nodedef name="ND_randomcolor_vector3" node="randomcolor" nodegroup="procedural3d">
+  <nodedef name="ND_randomcolor_vector3_color3" node="randomcolor" nodegroup="procedural3d">
     <input name="in" type="vector3" uiname="Input" uisoftmin="0" uisoftmax="10" value="0.0, 0.0, 0.0" />
     <input name="huelow" type="float" uiname="Hue Low" uisoftmin="0.0" uisoftmax="1.0" value="0" />
     <input name="huehigh" type="float" uiname="Hue High" uisoftmin="0.0" uisoftmax="1.0" value="1" />
@@ -1104,7 +1104,64 @@
     <input name="seed" type="float" uiname="Seed" value="0" />
     <output name="out" type="color3" />
   </nodedef>
-  <nodedef name="ND_randomcolor_vector2" node="randomcolor" nodegroup="procedural3d">
+  <nodedef name="ND_randomcolor_vector2_color3" node="randomcolor" nodegroup="procedural3d">
+    <input name="in" type="vector2" uiname="Input" uisoftmin="0" uisoftmax="10" value="0.0, 0.0" />
+    <input name="huelow" type="float" uiname="Hue Low" uisoftmin="0.0" uisoftmax="1.0" value="0" />
+    <input name="huehigh" type="float" uiname="Hue High" uisoftmin="0.0" uisoftmax="1.0" value="1" />
+    <input name="saturationlow" type="float" uiname="Saturation Low" uisoftmin="0.0" uisoftmax="1.0" value="0.825" />
+    <input name="saturationhigh" type="float" uiname="Saturation High" uisoftmin="0.0" uisoftmax="1.0" value="1" />
+    <input name="gammalow" type="float" uiname="Gamma Low" uisoftmin="0.0" uisoftmax="3.0" value="1" />
+    <input name="gammahigh" type="float" uiname="Gamma High" uisoftmin="0.0" uisoftmax="3.0" value="1" />
+    <input name="seed" type="float" uiname="Seed" value="0" />
+    <output name="out" type="color3" />
+  </nodedef>
+
+
+  <nodedef name="ND_randomcolor_float_color4" node="randomcolor" nodegroup="procedural3d">
+    <input name="in" type="float" uiname="Input" uisoftmin="0.0" uisoftmax="10.0" value="0.0" />
+    <input name="huelow" type="float" uiname="Hue Low" uisoftmin="0.0" uisoftmax="1.0" value="0" />
+    <input name="huehigh" type="float" uiname="Hue High" uisoftmin="0.0" uisoftmax="1.0" value="1" />
+    <input name="saturationlow" type="float" uiname="Saturation Low" uisoftmin="0.0" uisoftmax="1.0" value="0.825" />
+    <input name="saturationhigh" type="float" uiname="Saturation High" uisoftmin="0.0" uisoftmax="1.0" value="1" />
+    <input name="gammalow" type="float" uiname="Gamma Low" uisoftmin="0.0" uisoftmax="3.0" value="1" />
+    <input name="gammahigh" type="float" uiname="Gamma High" uisoftmin="0.0" uisoftmax="3.0" value="1" />
+    <input name="seed" type="float" uiname="Seed" value="0" />
+    <output name="out" type="color3" />
+  </nodedef>
+  <nodedef name="ND_randomcolor_integer_color4" node="randomcolor" nodegroup="procedural3d">
+    <input name="in" type="integer" uiname="Input" uisoftmin="0" uisoftmax="10" value="0" />
+    <input name="huelow" type="float" uiname="Hue Low" uisoftmin="0.0" uisoftmax="1.0" value="0" />
+    <input name="huehigh" type="float" uiname="Hue High" uisoftmin="0.0" uisoftmax="1.0" value="1" />
+    <input name="saturationlow" type="float" uiname="Saturation Low" uisoftmin="0.0" uisoftmax="1.0" value="0.825" />
+    <input name="saturationhigh" type="float" uiname="Saturation High" uisoftmin="0.0" uisoftmax="1.0" value="1" />
+    <input name="gammalow" type="float" uiname="Gamma Low" uisoftmin="0.0" uisoftmax="3.0" value="1" />
+    <input name="gammahigh" type="float" uiname="Gamma High" uisoftmin="0.0" uisoftmax="3.0" value="1" />
+    <input name="seed" type="float" uiname="Seed" value="0" />
+    <output name="out" type="color3" />
+  </nodedef>
+  <nodedef name="ND_randomcolor_color3_color4" node="randomcolor" nodegroup="procedural3d">
+    <input name="in" type="color3" uiname="Input" uisoftmin="0" uisoftmax="10" value="0.0, 0.0, 0.0" />
+    <input name="huelow" type="float" uiname="Hue Low" uisoftmin="0.0" uisoftmax="1.0" value="0" />
+    <input name="huehigh" type="float" uiname="Hue High" uisoftmin="0.0" uisoftmax="1.0" value="1" />
+    <input name="saturationlow" type="float" uiname="Saturation Low" uisoftmin="0.0" uisoftmax="1.0" value="0.825" />
+    <input name="saturationhigh" type="float" uiname="Saturation High" uisoftmin="0.0" uisoftmax="1.0" value="1" />
+    <input name="gammalow" type="float" uiname="Gamma Low" uisoftmin="0.0" uisoftmax="3.0" value="1" />
+    <input name="gammahigh" type="float" uiname="Gamma High" uisoftmin="0.0" uisoftmax="3.0" value="1" />
+    <input name="seed" type="float" uiname="Seed" value="0" />
+    <output name="out" type="color3" />
+  </nodedef>
+  <nodedef name="ND_randomcolor_vector3_color4" node="randomcolor" nodegroup="procedural3d">
+    <input name="in" type="vector3" uiname="Input" uisoftmin="0" uisoftmax="10" value="0.0, 0.0, 0.0" />
+    <input name="huelow" type="float" uiname="Hue Low" uisoftmin="0.0" uisoftmax="1.0" value="0" />
+    <input name="huehigh" type="float" uiname="Hue High" uisoftmin="0.0" uisoftmax="1.0" value="1" />
+    <input name="saturationlow" type="float" uiname="Saturation Low" uisoftmin="0.0" uisoftmax="1.0" value="0.825" />
+    <input name="saturationhigh" type="float" uiname="Saturation High" uisoftmin="0.0" uisoftmax="1.0" value="1" />
+    <input name="gammalow" type="float" uiname="Gamma Low" uisoftmin="0.0" uisoftmax="3.0" value="1" />
+    <input name="gammahigh" type="float" uiname="Gamma High" uisoftmin="0.0" uisoftmax="3.0" value="1" />
+    <input name="seed" type="float" uiname="Seed" value="0" />
+    <output name="out" type="color3" />
+  </nodedef>
+  <nodedef name="ND_randomcolor_vector2_color4" node="randomcolor" nodegroup="procedural3d">
     <input name="in" type="vector2" uiname="Input" uisoftmin="0" uisoftmax="10" value="0.0, 0.0" />
     <input name="huelow" type="float" uiname="Hue Low" uisoftmin="0.0" uisoftmax="1.0" value="0" />
     <input name="huehigh" type="float" uiname="Hue High" uisoftmin="0.0" uisoftmax="1.0" value="1" />
diff --git a/libraries/stdlib/stdlib_ng.mtlx b/libraries/stdlib/stdlib_ng.mtlx
index 39dc4d3c2d..03cd34da94 100644
--- a/libraries/stdlib/stdlib_ng.mtlx
+++ b/libraries/stdlib/stdlib_ng.mtlx
@@ -1230,7 +1230,7 @@
     Node: <randomcolor>
     Produces a randomized color, based on an input signal and seed value.
   -->
-  <nodegraph name="NG_randomcolor_float" nodedef="ND_randomcolor_float">
+  <nodegraph name="NG_randomcolor_float_color3" nodedef="ND_randomcolor_float">
     <randomfloat name="N_rand_hue" type="float">
       <input name="in" type="float" interfacename="in" value="0" />
       <input name="seed" type="float" nodename="N_seed_hue" value="0" />
@@ -1301,7 +1301,7 @@
     </hsvtorgb>
     <output name="out" type="color3" nodename="N_gamma" />
   </nodegraph>
-  <nodegraph name="NG_randomcolor_integer" nodedef="ND_randomcolor_integer">
+  <nodegraph name="NG_randomcolor_integer_color3" nodedef="ND_randomcolor_integer">
     <convert name="N_convert1" type="float">
       <input name="in" type="integer" interfacename="in" />
     </convert>
@@ -1317,7 +1317,7 @@
     </randomcolor>
     <output name="out" type="color3" nodename="N_randomcolor1" />
   </nodegraph>
-  <nodegraph name="NG_randomcolor_color3" nodedef="ND_randomcolor_color3">
+  <nodegraph name="NG_randomcolor_color3_color3" nodedef="ND_randomcolor_color3">
     <convert name="N_convert1" type="vector3">
       <input name="in" type="color3" interfacename="in" />
     </convert>
@@ -1336,7 +1336,7 @@
     </randomcolor>
     <output name="out" type="color3" nodename="N_randomcolor1" />
   </nodegraph>
-  <nodegraph name="NG_randomcolor_vector3" nodedef="ND_randomcolor_vector3">
+  <nodegraph name="NG_randomcolor_vector3_color3" nodedef="ND_randomcolor_vector3">
     <magnitude name="N_magnitude1" type="float">
       <input name="in" type="vector3" interfacename="in" />
     </magnitude>
@@ -1352,7 +1352,7 @@
     </randomcolor>
     <output name="out" type="color3" nodename="N_randomcolor1" />
   </nodegraph>
-  <nodegraph name="NG_randomcolor_vector2" nodedef="ND_randomcolor_vector2">
+  <nodegraph name="NG_randomcolor_vector2_color3" nodedef="ND_randomcolor_vector2">
     <magnitude name="N_magnitude1" type="float">
       <input name="in" type="vector2" interfacename="in" />
     </magnitude>
@@ -1369,6 +1369,153 @@
     <output name="out" type="color3" nodename="N_randomcolor1" />
   </nodegraph>
 
+<nodegraph name="NG_randomcolor_float_color4" nodedef="ND_randomcolor_float_color4">
+    <randomcolor name="N_randomcolor1" type="color3">
+      <input name="in" type="float" interfacename="in" />
+      <input name="huelow" type="float" interfacename="huelow" />
+      <input name="huehigh" type="float" interfacename="huehigh" />
+      <input name="saturationlow" type="float" interfacename="saturationlow" />
+      <input name="saturationhigh" type="float" interfacename="saturationhigh" />
+      <input name="gammalow" type="float" interfacename="gammalow" />
+      <input name="gammahigh" type="float" interfacename="gammahigh" />
+      <input name="seed" type="float" interfacename="seed" />
+    </randomcolor>
+    <randomfloat name="N_randomfloat1" type="float">
+      <input name="in" type="float" interfacename="in" />
+      <input name="seed" type="float" interfacename="seed" />
+    </randomfloat>
+    <separate3 name="N_splitColor" type="multioutput">
+      <input name="in" type="color3" nodename="N_randomfloat1" />
+    </separate3>
+    <combine3 name="N_combine_color" type="color4">
+      <input name="in1" type="float" nodename="N_splitColor" output="outr" />
+      <input name="in2" type="float" nodename="N_splitColor" output="outg" />
+      <input name="in3" type="float" nodename="N_splitColor" output="outb" />
+      <input name="in4" type="float" nodename="N_randomfloat1" />
+    </combine3>
+    <output name="out" type="color4" nodename="N_combine_color" />
+</nodegraph>
+<nodegraph name="NG_randomcolor_integer_color4" nodedef="ND_randomcolor_integer_color4">
+    <convert name="N_convert1" type="float">
+      <input name="in" type="integer" interfacename="in" />
+    </convert>
+    <randomcolor name="N_randomcolor1" type="color3">
+      <input name="in" type="float" nodename="N_convert1" />
+      <input name="huelow" type="float" interfacename="huelow" />
+      <input name="huehigh" type="float" interfacename="huehigh" />
+      <input name="saturationlow" type="float" interfacename="saturationlow" />
+      <input name="saturationhigh" type="float" interfacename="saturationhigh" />
+      <input name="gammalow" type="float" interfacename="gammalow" />
+      <input name="gammahigh" type="float" interfacename="gammahigh" />
+      <input name="seed" type="float" interfacename="seed" />
+    </randomcolor>
+    <randomfloat name="N_randomfloat1" type="float">
+      <input name="in" type="float" interfacename="in" />
+      <input name="seed" type="float" interfacename="seed" />
+    </randomfloat>
+    <separate3 name="N_splitColor" type="multioutput">
+      <input name="in" type="color3" nodename="N_randomfloat1" />
+    </separate3>
+    <combine3 name="N_combine_color" type="color4">
+      <input name="in1" type="float" nodename="N_splitColor" output="outr" />
+      <input name="in2" type="float" nodename="N_splitColor" output="outg" />
+      <input name="in3" type="float" nodename="N_splitColor" output="outb" />
+      <input name="in4" type="float" nodename="N_randomfloat1" />
+    </combine3>
+    <output name="out" type="color4" nodename="N_combine_color" />
+  </nodegraph>
+  <nodegraph name="NG_randomcolor_color3_color4" nodedef="ND_randomcolor_color3_color4">
+    <convert name="N_convert1" type="vector3">
+      <input name="in" type="color3" interfacename="in" />
+    </convert>
+    <magnitude name="N_magnitude1" type="float">
+      <input name="in" type="vector3" nodename="N_convert1" />
+    </magnitude>
+    <randomcolor name="N_randomcolor1" type="color3">
+      <input name="in" type="float" nodename="N_magnitude1" />
+      <input name="huelow" type="float" interfacename="huelow" />
+      <input name="huehigh" type="float" interfacename="huehigh" />
+      <input name="saturationlow" type="float" interfacename="saturationlow" />
+      <input name="saturationhigh" type="float" interfacename="saturationhigh" />
+      <input name="gammalow" type="float" interfacename="gammalow" />
+      <input name="gammahigh" type="float" interfacename="gammahigh" />
+      <input name="seed" type="float" interfacename="seed" />
+    </randomcolor>
+    <randomfloat name="N_randomfloat1" type="float">
+      <input name="in" type="float" interfacename="in" />
+      <input name="seed" type="float" interfacename="seed" />
+    </randomfloat>
+    <separate3 name="N_splitColor" type="multioutput">
+      <input name="in" type="color3" nodename="N_randomfloat1" />
+    </separate3>
+    <combine3 name="N_combine_color" type="color4">
+      <input name="in1" type="float" nodename="N_splitColor" output="outr" />
+      <input name="in2" type="float" nodename="N_splitColor" output="outg" />
+      <input name="in3" type="float" nodename="N_splitColor" output="outb" />
+      <input name="in4" type="float" nodename="N_randomfloat1" />
+    </combine3>
+    <output name="out" type="color4" nodename="N_combine_color" />
+  </nodegraph>
+  <nodegraph name="NG_randomcolor_vector3_color4" nodedef="ND_randomcolor_vector3_color4">
+    <magnitude name="N_magnitude1" type="float">
+      <input name="in" type="vector3" interfacename="in" />
+    </magnitude>
+    <randomcolor name="N_randomcolor1" type="color3">
+      <input name="in" type="float" nodename="N_magnitude1" />
+      <input name="huelow" type="float" interfacename="huelow" />
+      <input name="huehigh" type="float" interfacename="huehigh" />
+      <input name="saturationlow" type="float" interfacename="saturationlow" />
+      <input name="saturationhigh" type="float" interfacename="saturationhigh" />
+      <input name="gammalow" type="float" interfacename="gammalow" />
+      <input name="gammahigh" type="float" interfacename="gammahigh" />
+      <input name="seed" type="float" interfacename="seed" />
+    </randomcolor>
+    <randomfloat name="N_randomfloat1" type="float">
+      <input name="in" type="float" interfacename="in" />
+      <input name="seed" type="float" interfacename="seed" />
+    </randomfloat>
+    <separate3 name="N_splitColor" type="multioutput">
+      <input name="in" type="color3" nodename="N_randomfloat1" />
+    </separate3>
+    <combine3 name="N_combine_color" type="color4">
+      <input name="in1" type="float" nodename="N_splitColor" output="outr" />
+      <input name="in2" type="float" nodename="N_splitColor" output="outg" />
+      <input name="in3" type="float" nodename="N_splitColor" output="outb" />
+      <input name="in4" type="float" nodename="N_randomfloat1" />
+    </combine3>
+    <output name="out" type="color4" nodename="N_combine_color" />
+  </nodegraph>
+  <nodegraph name="NG_randomcolor_vector2_color4" nodedef="ND_randomcolor_vector2_color4">
+    <magnitude name="N_magnitude1" type="float">
+      <input name="in" type="vector2" interfacename="in" />
+    </magnitude>
+    <randomcolor name="N_randomcolor1" type="color3">
+      <input name="in" type="float" nodename="N_magnitude1" />
+      <input name="huelow" type="float" interfacename="huelow" />
+      <input name="huehigh" type="float" interfacename="huehigh" />
+      <input name="saturationlow" type="float" interfacename="saturationlow" />
+      <input name="saturationhigh" type="float" interfacename="saturationhigh" />
+      <input name="gammalow" type="float" interfacename="gammalow" />
+      <input name="gammahigh" type="float" interfacename="gammahigh" />
+      <input name="seed" type="float" interfacename="seed" />
+    </randomcolor>
+    <randomfloat name="N_randomfloat1" type="float">
+      <input name="in" type="float" interfacename="in" />
+      <input name="seed" type="float" interfacename="seed" />
+    </randomfloat>
+    <separate3 name="N_splitColor" type="multioutput">
+      <input name="in" type="color3" nodename="N_randomfloat1" />
+    </separate3>
+    <combine3 name="N_combine_color" type="color4">
+      <input name="in1" type="float" nodename="N_splitColor" output="outr" />
+      <input name="in2" type="float" nodename="N_splitColor" output="outg" />
+      <input name="in3" type="float" nodename="N_splitColor" output="outb" />
+      <input name="in4" type="float" nodename="N_randomfloat1" />
+    </combine3>
+    <output name="out" type="color4" nodename="N_combine_color" />
+  </nodegraph>
+
+
 
   <!-- ======================================================================== -->
   <!-- Geometric nodes                                                          -->

From 3a1d0aac8911f87a0593f5427e6321d18247fb8a Mon Sep 17 00:00:00 2001
From: Chris Rydalch <crydalch@gmail.com>
Date: Fri, 12 May 2023 17:30:38 -0500
Subject: [PATCH 04/14] Add randomvector, min/max inputs to randomfloat, and
 fixed randomcolor.

---
 libraries/stdlib/stdlib_defs.mtlx | 145 ++++++++-
 libraries/stdlib/stdlib_ng.mtlx   | 479 +++++++++++++++++++++++++++---
 2 files changed, 572 insertions(+), 52 deletions(-)

diff --git a/libraries/stdlib/stdlib_defs.mtlx b/libraries/stdlib/stdlib_defs.mtlx
index 5e48c73fe7..638bd36c9f 100644
--- a/libraries/stdlib/stdlib_defs.mtlx
+++ b/libraries/stdlib/stdlib_defs.mtlx
@@ -1029,31 +1029,170 @@
     Produces a randomized float, based on an 'input' signal and 'seed' value.
   -->
   <nodedef name="ND_randomfloat_float" node="randomfloat" nodegroup="procedural">
-    <input name="in" type="float" uiname="Input" value="0.0" />
-    <input name="seed" type="float" uiname="Seed" value="0.0" />
+    <input name="in" type="float" uiname="Input" value="0.0" doc="Initial randomization seed." />
+    <input name="min" type="float" uiname="Minimum" value="0.0" doc="The minimum output value." />
+    <input name="max" type="float" uiname="Maximum" value="1.0" doc="The maximum output value." />
+    <input name="seed" type="float" uiname="Seed" value="0.0" doc="Additional seed offset." />
     <output name="out" type="float" />
   </nodedef>
   <nodedef name="ND_randomfloat_integer" node="randomfloat" nodegroup="procedural">
     <input name="in" type="integer" uiname="Input" value="0" />
+    <input name="min" type="float" uiname="Minimum" value="0.0" />
+    <input name="max" type="float" uiname="Maximum" value="1.0" />
     <input name="seed" type="float" uiname="Seed" value="0.0" />
     <output name="out" type="float" />
   </nodedef>
   <nodedef name="ND_randomfloat_color3" node="randomfloat" nodegroup="procedural">
     <input name="in" type="color3" uiname="Input" value="0.0, 0.0, 0.0" />
+    <input name="min" type="float" uiname="Minimum" value="0.0" />
+    <input name="max" type="float" uiname="Maximum" value="1.0" />
     <input name="seed" type="float" uiname="Seed" value="0.0" />
     <output name="out" type="float" />
   </nodedef>
   <nodedef name="ND_randomfloat_vector3" node="randomfloat" nodegroup="procedural">
     <input name="in" type="vector3" uiname="Input" value="0.0, 0.0, 0.0" />
+    <input name="min" type="float" uiname="Minimum" value="0.0" />
+    <input name="max" type="float" uiname="Maximum" value="1.0" />
     <input name="seed" type="float" uiname="Seed" value="0.0" />
     <output name="out" type="float" />
   </nodedef>
   <nodedef name="ND_randomfloat_vector2" node="randomfloat" nodegroup="procedural">
     <input name="in" type="vector2" uiname="Input" value="0.0, 0.0" />
+    <input name="min" type="float" uiname="Minimum" value="0.0" />
+    <input name="max" type="float" uiname="Maximum" value="1.0" />
     <input name="seed" type="float" uiname="Seed" value="0.0" />
     <output name="out" type="float" />
   </nodedef>
 
+  <!--
+    Node: <randomvector>
+    Produces a randomized vector2, vector3, or vector4, based on an 'input' signal and 'seed' value.
+  --> 
+  <nodedef name="ND_randomvector_float_vector2" node="randomvector" nodegroup="procedural">
+    <input name="in" type="float" uiname="Input" value="0.0" doc="Initial randomization seed." />
+    <input name="min" type="vector2" uiname="Minimum" value="0.0, 0.0" doc="The minimum output value." />
+    <input name="max" type="vector2" uiname="Maximum" value="1.0, 1.0" doc="The maximum output value." />
+    <input name="seed" type="float" uiname="Seed" value="0.0" doc="Additional seed offset." />
+    <input name="normalize" type="boolean" uiname="Normalize" value="false" doc="Normalize the output vector." />
+    <output name="out" type="vector2" />
+  </nodedef>
+  <nodedef name="ND_randomvector_integer_vector2" node="randomvector" nodegroup="procedural">
+    <input name="in" type="integer" uiname="Input" value="0" doc="Initial randomization seed." />
+    <input name="min" type="vector2" uiname="Minimum" value="0.0, 0.0" doc="The minimum output value." />
+    <input name="max" type="vector2" uiname="Maximum" value="1.0, 1.0" doc="The maximum output value." />
+    <input name="seed" type="float" uiname="Seed" value="0.0" doc="Additional seed offset." />
+    <input name="normalize" type="boolean" uiname="Normalize" value="false" doc="Normalize the output vector." />
+    <output name="out" type="vector2" />
+  </nodedef>
+  <nodedef name="ND_randomvector_vector2_vector2" node="randomvector" nodegroup="procedural">
+    <input name="in" type="vector2" uiname="Input" value="0.0, 0.0" doc="Initial randomization seed." />
+    <input name="min" type="vector2" uiname="Minimum" value="0.0, 0.0" doc="The minimum output value." />
+    <input name="max" type="vector2" uiname="Maximum" value="1.0, 1.0" doc="The maximum output value." />
+    <input name="seed" type="float" uiname="Seed" value="0.0" doc="Additional seed offset." />
+    <input name="normalize" type="boolean" uiname="Normalize" value="false" doc="Normalize the output vector." />
+    <output name="out" type="vector2" />
+  </nodedef>
+  <nodedef name="ND_randomvector_vector3_vector2" node="randomvector" nodegroup="procedural">
+    <input name="in" type="vector3" uiname="Input" value="0.0, 0.0, 0.0" doc="Initial randomization seed." />
+    <input name="min" type="vector2" uiname="Minimum" value="0.0, 0.0" doc="The minimum output value." />
+    <input name="max" type="vector2" uiname="Maximum" value="1.0, 1.0" doc="The maximum output value." />
+    <input name="seed" type="float" uiname="Seed" value="0.0" doc="Additional seed offset." />
+    <input name="normalize" type="boolean" uiname="Normalize" value="false" doc="Normalize the output vector." />
+    <output name="out" type="vector2" />
+  </nodedef>
+  <nodedef name="ND_randomvector_vector4_vector2" node="randomvector" nodegroup="procedural">
+    <input name="in" type="vector4" uiname="Input" value="0.0, 0.0, 0.0, 0.0" doc="Initial randomization seed." />
+    <input name="min" type="vector2" uiname="Minimum" value="0.0, 0.0" doc="The minimum output value." />
+    <input name="max" type="vector2" uiname="Maximum" value="1.0, 1.0" doc="The maximum output value." />
+    <input name="seed" type="float" uiname="Seed" value="0.0" doc="Additional seed offset." />
+    <input name="normalize" type="boolean" uiname="Normalize" value="false" doc="Normalize the output vector." />
+    <output name="out" type="vector2" />
+  </nodedef>
+
+
+  <nodedef name="ND_randomvector_float_vector3" node="randomvector" nodegroup="procedural">
+    <input name="in" type="float" uiname="Input" value="0.0" doc="Initial randomization seed." />
+    <input name="min" type="vector3" uiname="Minimum" value="0.0, 0.0, 0.0" doc="The minimum output value." />
+    <input name="max" type="vector3" uiname="Maximum" value="1.0, 1.0, 1.0" doc="The maximum output value." />
+    <input name="seed" type="float" uiname="Seed" value="0.0" doc="Additional seed offset." />
+    <input name="normalize" type="boolean" uiname="Normalize" value="false" doc="Normalize the output vector." />
+    <output name="out" type="vector3" />
+  </nodedef>
+  <nodedef name="ND_randomvector_integer_vector3" node="randomvector" nodegroup="procedural">
+    <input name="in" type="integer" uiname="Input" value="0" doc="Initial randomization seed." />
+    <input name="min" type="vector3" uiname="Minimum" value="0.0, 0.0, 0.0" doc="The minimum output value." />
+    <input name="max" type="vector3" uiname="Maximum" value="1.0, 1.0, 1.0" doc="The maximum output value." />
+    <input name="seed" type="float" uiname="Seed" value="0.0" doc="Additional seed offset." />
+    <input name="normalize" type="boolean" uiname="Normalize" value="false" doc="Normalize the output vector." />
+    <output name="out" type="vector3" />
+  </nodedef>
+  <nodedef name="ND_randomvector_vector2_vector3" node="randomvector" nodegroup="procedural">
+    <input name="in" type="vector2" uiname="Input" value="0.0, 0.0" doc="Initial randomization seed." />
+    <input name="min" type="vector3" uiname="Minimum" value="0.0, 0.0, 0.0" doc="The minimum output value." />
+    <input name="max" type="vector3" uiname="Maximum" value="1.0, 1.0, 1.0" doc="The maximum output value." />
+    <input name="seed" type="float" uiname="Seed" value="0.0" doc="Additional seed offset." />
+    <input name="normalize" type="boolean" uiname="Normalize" value="false" doc="Normalize the output vector." />
+    <output name="out" type="vector3" />
+  </nodedef>
+  <nodedef name="ND_randomvector_vector3_vector3" node="randomvector" nodegroup="procedural">
+    <input name="in" type="vector3" uiname="Input" value="0.0, 0.0, 0.0" doc="Initial randomization seed." />
+    <input name="min" type="vector3" uiname="Minimum" value="0.0, 0.0, 0.0" doc="The minimum output value." />
+    <input name="max" type="vector3" uiname="Maximum" value="1.0, 1.0, 1.0" doc="The maximum output value." />
+    <input name="seed" type="float" uiname="Seed" value="0.0" doc="Additional seed offset." />
+    <input name="normalize" type="boolean" uiname="Normalize" value="false" doc="Normalize the output vector." />
+    <output name="out" type="vector3" />
+  </nodedef>
+  <nodedef name="ND_randomvector_vector4_vector3" node="randomvector" nodegroup="procedural">
+    <input name="in" type="vector4" uiname="Minimum" value="0.0, 0.0, 0.0, 0.0" doc="The minimum output value." />
+    <input name="min" type="vector3" uiname="Minimum" value="0.0, 0.0, 0.0" doc="The minimum output value." />
+    <input name="max" type="vector3" uiname="Maximum" value="1.0, 1.0, 1.0" doc="The maximum output value." />
+    <input name="seed" type="float" uiname="Seed" value="0.0" doc="Additional seed offset." />
+    <input name="normalize" type="boolean" uiname="Normalize" value="false" doc="Normalize the output vector." />
+    <output name="out" type="vector3" />
+  </nodedef>
+
+  <nodedef name="ND_randomvector_float_vector4" node="randomvector" nodegroup="procedural">
+    <input name="in" type="float" uiname="Input" value="0.0" doc="Initial randomization seed." />
+    <input name="min" type="vector4" uiname="Minimum" value="0.0, 0.0, 0.0, 0.0" doc="The minimum output value." />
+    <input name="max" type="vector4" uiname="Maximum" value="1.0, 1.0, 1.0, 1.0" doc="The maximum output value." />
+    <input name="seed" type="float" uiname="Seed" value="0.0" doc="Additional seed offset." />
+    <input name="normalize" type="boolean" uiname="Normalize" value="false" doc="Normalize the output vector." />
+    <output name="out" type="vector4" />
+  </nodedef>
+  <nodedef name="ND_randomvector_integer_vector4" node="randomvector" nodegroup="procedural">
+    <input name="in" type="integer" uiname="Input" value="0" doc="Initial randomization seed." />
+    <input name="min" type="vector4" uiname="Minimum" value="0.0, 0.0, 0.0, 0.0" doc="The minimum output value." />
+    <input name="max" type="vector4" uiname="Maximum" value="1.0, 1.0, 1.0, 1.0" doc="The maximum output value." />
+    <input name="seed" type="float" uiname="Seed" value="0.0" doc="Additional seed offset." />
+    <input name="normalize" type="boolean" uiname="Normalize" value="false" doc="Normalize the output vector." />
+    <output name="out" type="vector4" />
+  </nodedef>
+  <nodedef name="ND_randomvector_vector2_vector4" node="randomvector" nodegroup="procedural">
+    <input name="in" type="vector2" uiname="Input" value="0.0, 0.0" doc="Initial randomization seed." />
+    <input name="min" type="vector4" uiname="Minimum" value="0.0, 0.0, 0.0, 0.0" doc="The minimum output value." />
+    <input name="max" type="vector4" uiname="Maximum" value="1.0, 1.0, 1.0, 1.0" doc="The maximum output value." />
+    <input name="seed" type="float" uiname="Seed" value="0.0" doc="Additional seed offset." />
+    <input name="normalize" type="boolean" uiname="Normalize" value="false" doc="Normalize the output vector." />
+    <output name="out" type="vector4" />
+  </nodedef>
+  <nodedef name="ND_randomvector_vector3_vector4" node="randomvector" nodegroup="procedural">
+    <input name="in" type="vector3" uiname="Input" value="0.0, 0.0, 0.0" doc="Initial randomization seed." />
+    <input name="min" type="vector4" uiname="Minimum" value="0.0, 0.0, 0.0, 0.0" doc="The minimum output value." />
+    <input name="max" type="vector4" uiname="Maximum" value="1.0, 1.0, 1.0, 1.0" doc="The maximum output value." />
+    <input name="seed" type="float" uiname="Seed" value="0.0" doc="Additional seed offset." />
+    <input name="normalize" type="boolean" uiname="Normalize" value="false" doc="Normalize the output vector." />
+    <output name="out" type="vector4" />
+  </nodedef>
+  <nodedef name="ND_randomvector_vector4_vector4" node="randomvector" nodegroup="procedural">
+    <input name="in" type="vector4" uiname="Input" value="0.0, 0.0, 0.0, 0.0" doc="Initial randomization seed." />
+    <input name="min" type="vector4" uiname="Minimum" value="0.0, 0.0, 0.0, 0.0" doc="The minimum output value." />
+    <input name="max" type="vector4" uiname="Maximum" value="1.0, 1.0, 1.0, 1.0" doc="The maximum output value." />
+    <input name="seed" type="float" uiname="Seed" value="0.0" doc="Additional seed offset." />
+    <input name="normalize" type="boolean" uiname="Normalize" value="false" doc="Normalize the output vector." />
+    <output name="out" type="vector4" />
+  </nodedef>
+
+
   <!--
     Node: <randomcolor>
     Produces a randomized color, based on an input signal and seed value. The input 
@@ -1115,8 +1254,6 @@
     <input name="seed" type="float" uiname="Seed" value="0" />
     <output name="out" type="color3" />
   </nodedef>
-
-
   <nodedef name="ND_randomcolor_float_color4" node="randomcolor" nodegroup="procedural3d">
     <input name="in" type="float" uiname="Input" uisoftmin="0.0" uisoftmax="10.0" value="0.0" />
     <input name="huelow" type="float" uiname="Hue Low" uisoftmin="0.0" uisoftmax="1.0" value="0" />
diff --git a/libraries/stdlib/stdlib_ng.mtlx b/libraries/stdlib/stdlib_ng.mtlx
index 03cd34da94..bd7c515931 100644
--- a/libraries/stdlib/stdlib_ng.mtlx
+++ b/libraries/stdlib/stdlib_ng.mtlx
@@ -1180,6 +1180,14 @@
       <input name="in1" type="float" interfacename="seed" value="0" />
       <input name="in2" type="float" value="43758.5" />
     </multiply>
+    <range name="N_remapRange" type="float">
+      <input name="in" type="float" nodename="N_cellnoise_1" />
+      <input name="inlow" type="float" value="0" />
+      <input name="inhigh" type="float" value="1" />
+      <input name="outlow" type="float" interfacename="min" />
+      <input name="outhigh" type="float" interfacename="max" />
+      <input name="doclamp" type="boolean" value="true" />
+    </range>
     <output name="out" type="float" nodename="N_cellnoise_1" />
   </nodegraph>
   <nodegraph name="NG_randomfloat_integer" nodedef="ND_randomfloat_integer">
@@ -1226,36 +1234,412 @@
     <output name="out" type="float" nodename="N_randomfloat1" />
   </nodegraph>
 
+
+  <!--
+    Node: <randomvector>
+    Produces a randomized vector2, vector3, or vector4, based on an 'input' signal and 'seed' value.
+  -->
+  <nodegraph name="NG_randomvector_vector4_vector4" nodedef="ND_randomvector_vector4_vector4">
+    <range name="N_range" type="vector4">
+      <input name="in" type="vector4" nodename="N_makeVector" />
+      <input name="outlow" type="vector4" interfacename="min" />
+      <input name="outhigh" type="vector4" interfacename="max" />
+      <input name="doclamp" type="boolean" value="true" />
+    </range>
+    <combine4 name="N_makeVector" type="vector4">
+      <input name="in1" type="float" nodename="N_randX" />
+      <input name="in2" type="float" nodename="N_randY" />
+      <input name="in3" type="float" nodename="N_randZ" />
+      <input name="in4" type="float" nodename="N_randW" />
+    </combine4>
+    <randomfloat name="N_randX" type="float">
+      <input name="in" type="float" nodename="N_addSeed" />
+      <input name="seed" type="float" value="1.3712" />
+    </randomfloat>
+    <add name="N_addSeed" type="float">
+      <input name="in1" type="float" nodename="N_inputMagnitude" />
+      <input name="in2" type="float" interfacename="seed" />
+    </add>
+    <magnitude name="N_inputMagnitude" type="float">
+      <input name="in" type="vector4" interfacename="in" />
+    </magnitude>
+    <randomfloat name="N_randY" type="float">
+      <input name="in" type="float" nodename="N_addSeed" />
+      <input name="seed" type="float" value="29.544" />
+    </randomfloat>
+    <randomfloat name="N_randZ" type="float">
+      <input name="in" type="float" nodename="N_addSeed" />
+      <input name="seed" type="float" value="78.046" />
+    </randomfloat>
+    <randomfloat name="N_randW" type="float">
+      <input name="in" type="float" nodename="N_addSeed" />
+      <input name="seed" type="float" value="524.97" />
+    </randomfloat>
+    <normalize name="N_normalize" type="vector4">
+      <input name="in" type="vector4" nodename="N_range" />
+    </normalize>
+    <convert name="N_convertNormalizeParm" type="float">
+      <input name="in" type="boolean" interfacename="normalize" />
+    </convert>
+    <switch name="N_normalizeOutput" type="vector4">
+      <input name="in1" type="vector4" nodename="N_range" />
+      <input name="in2" type="vector4" nodename="N_normalize" />
+      <input name="which" type="float" nodename="N_convertNormalizeParm" />
+    </switch>
+    <output name="out" type="vector4" nodename="N_normalizeOutput" />
+  </nodegraph>
+  <nodegraph name="NG_randomvector_vector3_vector4" nodedef="ND_randomvector_vector3_vector4">
+    <convert name="N_convert1" type="vector4">
+      <input name="in" type="vector3" interfacename="in" />
+    </convert>
+    <randomvector name="N_randomvector1" type="vector4">
+      <input name="in" type="vector4" nodename="N_convert1" />
+      <input name="min" type="vector4" interfacename="min" />
+      <input name="max" type="vector4" interfacename="max" />
+      <input name="seed" type="float" interfacename="seed" />
+      <input name="normalize" type="boolean" interfacename="normalize" />
+    </randomvector>
+    <output name="out" type="vector4" nodename="N_randomvector1" />
+  </nodegraph>
+  <nodegraph name="NG_randomvector_vector2_vector4" nodedef="ND_randomvector_vector2_vector4">
+    <swizzle name="N_convert1" type="vector4">
+      <input name="in" type="vector2" interfacename="in" />
+      <input name="channels" type="string" value="xyxy" />
+    </swizzle>
+    <randomvector name="N_randomvector1" type="vector4">
+      <input name="in" type="vector4" nodename="N_convert1" />
+      <input name="min" type="vector4" interfacename="min" />
+      <input name="max" type="vector4" interfacename="max" />
+      <input name="seed" type="float" interfacename="seed" />
+      <input name="normalize" type="boolean" interfacename="normalize" />
+    </randomvector>
+    <output name="out" type="vector4" nodename="N_randomvector1" />
+  </nodegraph>
+  <nodegraph name="NG_randomvector_float_vector4" nodedef="ND_randomvector_float_vector4">
+    <convert name="N_convert1" type="vector4">
+      <input name="in" type="float" interfacename="in" />
+    </convert>
+    <randomvector name="N_randomvector1" type="vector4">
+      <input name="in" type="vector4" nodename="N_convert1" />
+      <input name="min" type="vector4" interfacename="min" />
+      <input name="max" type="vector4" interfacename="max" />
+      <input name="seed" type="float" interfacename="seed" />
+      <input name="normalize" type="boolean" interfacename="normalize" />
+    </randomvector>
+    <output name="out" type="vector4" nodename="N_randomvector1" />
+  </nodegraph>
+  <nodegraph name="NG_randomvector_integer_vector4" nodedef="ND_randomvector_integer_vector4">
+    <convert name="N_convert1" type="float">
+      <input name="in" type="integer" interfacename="in" />
+    </convert>
+    <convert name="N_convert2" type="vector4">
+      <input name="in" type="float" nodename="N_convert1" />
+    </convert>
+    <randomvector name="N_randomvector1" type="vector4">
+      <input name="in" type="vector4" nodename="N_convert2" />
+      <input name="min" type="vector4" interfacename="min" />
+      <input name="max" type="vector4" interfacename="max" />
+      <input name="seed" type="float" interfacename="seed" />
+      <input name="normalize" type="boolean" interfacename="normalize" />
+    </randomvector>
+    <output name="out" type="vector4" nodename="N_randomvector1" />
+  </nodegraph>
+
+
+
+
+  <nodegraph name="NG_randomvector_vector4_vector3" nodedef="ND_randomvector_vector4_vector3">
+    <swizzle name="N_swizzeMin" type="vector4">
+      <input name="in" type="vector3" interfacename="min" />
+      <input name="channels" type="string" value="xyzx" />
+    </swizzle>
+    <swizzle name="N_swizzeMax" type="vector4">
+      <input name="in" type="vector3" interfacename="max" />
+      <input name="channels" type="string" value="xyzx" />
+    </swizzle>
+    <randomvector name="N_randomvector1" type="vector4">
+      <input name="in" type="vector4" interfacename="in" />
+      <input name="min" type="vector4" nodename="N_swizzeMin" />
+      <input name="max" type="vector4" nodename="N_swizzeMax" />
+      <input name="seed" type="float" interfacename="seed" />
+      <input name="normalize" type="boolean" interfacename="normalize" />
+    </randomvector>
+    <convert name="N_convert1" type="vector3">
+      <input name="in" type="vector4" nodename="N_randomvector1" />
+    </convert>
+    <output name="out" type="vector3" nodename="N_convert1" />
+  </nodegraph>
+  <nodegraph name="NG_randomvector_vector3_vector3" nodedef="ND_randomvector_vector3_vector3">
+    <swizzle name="N_swizzeMin" type="vector4">
+      <input name="in" type="vector3" interfacename="min" />
+      <input name="channels" type="string" value="xyzx" />
+    </swizzle>
+    <swizzle name="N_swizzeMax" type="vector4">
+      <input name="in" type="vector3" interfacename="max" />
+      <input name="channels" type="string" value="xyzx" />
+    </swizzle>
+    <convert name="N_convert1" type="vector4">
+      <input name="in" type="vector3" interfacename="in" />
+    </convert>
+    <randomvector name="N_randomvector1" type="vector4">
+      <input name="in" type="vector4" nodename="N_convert1" />
+      <input name="min" type="vector4" nodename="N_swizzeMin" />
+      <input name="max" type="vector4" nodename="N_swizzeMax" />
+      <input name="seed" type="float" interfacename="seed" />
+      <input name="normalize" type="boolean" interfacename="normalize" />
+    </randomvector>
+    <convert name="N_convert2" type="vector3">
+      <input name="in" type="vector4" nodename="N_randomvector1" />
+    </convert>
+    <output name="out" type="vector3" nodename="N_convert2" />
+  </nodegraph>
+  <nodegraph name="NG_randomvector_vector2_vector3" nodedef="ND_randomvector_vector2_vector3">
+    <swizzle name="N_swizzeMin" type="vector4">
+      <input name="in" type="vector3" interfacename="min" />
+      <input name="channels" type="string" value="xyzx" />
+    </swizzle>
+    <swizzle name="N_swizzeMax" type="vector4">
+      <input name="in" type="vector3" interfacename="max" />
+      <input name="channels" type="string" value="xyzx" />
+    </swizzle>
+    <swizzle name="N_convert1" type="vector4">
+      <input name="in" type="vector2" interfacename="in" />
+      <input name="channels" type="string" value="xyxy" />
+    </swizzle>
+    <randomvector name="N_randomvector1" type="vector4">
+      <input name="in" type="vector4" nodename="N_convert1" />
+      <input name="min" type="vector4" nodename="N_swizzeMin" />
+      <input name="max" type="vector4" nodename="N_swizzeMax" />
+      <input name="seed" type="float" interfacename="seed" />
+      <input name="normalize" type="boolean" interfacename="normalize" />
+    </randomvector>
+    <convert name="N_convert2" type="vector3">
+      <input name="in" type="vector4" nodename="N_randomvector1" />
+    </convert>
+    <output name="out" type="vector3" nodename="N_convert2" />
+  </nodegraph>
+  <nodegraph name="NG_randomvector_float_vector3" nodedef="ND_randomvector_float_vector3">
+    <swizzle name="N_swizzeMin" type="vector4">
+      <input name="in" type="vector3" interfacename="min" />
+      <input name="channels" type="string" value="xyzx" />
+    </swizzle>
+    <swizzle name="N_swizzeMax" type="vector4">
+      <input name="in" type="vector3" interfacename="max" />
+      <input name="channels" type="string" value="xyzx" />
+    </swizzle>
+    <convert name="N_convert1" type="vector4">
+      <input name="in" type="float" interfacename="in" />
+    </convert>
+    <randomvector name="N_randomvector1" type="vector4">
+      <input name="in" type="vector4" nodename="N_convert1" />
+      <input name="min" type="vector4" nodename="N_swizzeMin" />
+      <input name="max" type="vector4" nodename="N_swizzeMax" />
+      <input name="seed" type="float" interfacename="seed" />
+      <input name="normalize" type="boolean" interfacename="normalize" />
+    </randomvector>
+    <convert name="N_convert2" type="vector3">
+      <input name="in" type="vector4" nodename="N_randomvector1" />
+    </convert>
+    <output name="out" type="vector3" nodename="N_convert2" />
+  </nodegraph>
+  <nodegraph name="NG_randomvector_integer_vector3" nodedef="ND_randomvector_integer_vector3">
+    <swizzle name="N_swizzeMin" type="vector4">
+      <input name="in" type="vector3" interfacename="min" />
+      <input name="channels" type="string" value="xyzx" />
+    </swizzle>
+    <swizzle name="N_swizzeMax" type="vector4">
+      <input name="in" type="vector3" interfacename="max" />
+      <input name="channels" type="string" value="xyzx" />
+    </swizzle>
+    <convert name="N_convert1" type="float">
+      <input name="in" type="integer" interfacename="in" />
+    </convert>
+    <convert name="N_convert2" type="vector4">
+      <input name="in" type="float" nodename="N_convert1" />
+    </convert>
+    <randomvector name="N_randomvector1" type="vector4">
+      <input name="in" type="vector4" nodename="N_convert2" />
+      <input name="min" type="vector4" nodename="N_swizzeMin" />
+      <input name="max" type="vector4" nodename="N_swizzeMax" />
+      <input name="seed" type="float" interfacename="seed" />
+      <input name="normalize" type="boolean" interfacename="normalize" />
+    </randomvector>
+    <convert name="N_convert3" type="vector3">
+      <input name="in" type="vector4" nodename="N_randomvector1" />
+    </convert>
+    <output name="out" type="vector3" nodename="N_convert3" />
+  </nodegraph>
+
+
+
+  <nodegraph name="NG_randomvector_vector4_vector2" nodedef="ND_randomvector_vector4_vector2">
+    <swizzle name="N_swizzeMin" type="vector4">
+      <input name="in" type="vector2" interfacename="min" />
+      <input name="channels" type="string" value="xyxy" />
+    </swizzle>
+    <swizzle name="N_swizzeMax" type="vector4">
+      <input name="in" type="vector2" interfacename="max" />
+      <input name="channels" type="string" value="xyxy" />
+    </swizzle>
+    <randomvector name="N_randomvector1" type="vector4">
+      <input name="in" type="vector4" interfacename="in" />
+      <input name="min" type="vector4" nodename="N_swizzeMin" />
+      <input name="max" type="vector4" nodename="N_swizzeMax" />
+      <input name="seed" type="float" interfacename="seed" />
+      <input name="normalize" type="boolean" interfacename="normalize" />
+    </randomvector>
+    <convert name="N_convert1" type="vector3">
+      <input name="in" type="vector4" nodename="N_randomvector1" />
+    </convert>
+    <convert name="N_convert5" type="vector2">
+      <input name="in" type="vector3" nodename="N_convert1" />
+    </convert>
+    <output name="out" type="vector2" nodename="N_convert5" />
+  </nodegraph>
+  <nodegraph name="NG_randomvector_vector3_vector2" nodedef="ND_randomvector_vector3_vector2">
+    <swizzle name="N_swizzeMin" type="vector4">
+      <input name="in" type="vector2" interfacename="min" />
+      <input name="channels" type="string" value="xyxy" />
+    </swizzle>
+    <swizzle name="N_swizzeMax" type="vector4">
+      <input name="in" type="vector2" interfacename="max" />
+      <input name="channels" type="string" value="xyxy" />
+    </swizzle>
+    <convert name="N_convert1" type="vector4">
+      <input name="in" type="vector3" interfacename="in" />
+    </convert>
+    <randomvector name="N_randomvector1" type="vector4">
+      <input name="in" type="vector4" nodename="N_convert1" />
+      <input name="min" type="vector4" nodename="N_swizzeMin" />
+      <input name="max" type="vector4" nodename="N_swizzeMax" />
+      <input name="seed" type="float" interfacename="seed" />
+      <input name="normalize" type="boolean" interfacename="normalize" />
+    </randomvector>
+    <convert name="N_convert2" type="vector3">
+      <input name="in" type="vector4" nodename="N_randomvector1" />
+    </convert>
+    <convert name="N_convert5" type="vector2">
+      <input name="in" type="vector3" nodename="N_convert2" />
+    </convert>
+    <output name="out" type="vector2" nodename="N_convert5" />
+  </nodegraph>
+  <nodegraph name="NG_randomvector_vector2_vector2" nodedef="ND_randomvector_vector2_vector2">
+    <swizzle name="N_swizzeMin" type="vector4">
+      <input name="in" type="vector2" interfacename="min" />
+      <input name="channels" type="string" value="xyxy" />
+    </swizzle>
+    <swizzle name="N_swizzeMax" type="vector4">
+      <input name="in" type="vector2" interfacename="max" />
+      <input name="channels" type="string" value="xyxy" />
+    </swizzle>
+    <swizzle name="N_convert1" type="vector4">
+      <input name="in" type="vector2" interfacename="in" />
+      <input name="channels" type="string" value="xyxy" />
+    </swizzle>
+    <randomvector name="N_randomvector1" type="vector4">
+      <input name="in" type="vector4" nodename="N_convert1" />
+      <input name="min" type="vector4" nodename="N_swizzeMin" />
+      <input name="max" type="vector4" nodename="N_swizzeMax" />
+      <input name="seed" type="float" interfacename="seed" />
+      <input name="normalize" type="boolean" interfacename="normalize" />
+    </randomvector>
+    <convert name="N_convert2" type="vector3">
+      <input name="in" type="vector4" nodename="N_randomvector1" />
+    </convert>
+    <convert name="N_convert5" type="vector2">
+      <input name="in" type="vector3" nodename="N_convert2" />
+    </convert>
+    <output name="out" type="vector2" nodename="N_convert5" />
+  </nodegraph>
+  <nodegraph name="NG_randomvector_float_vector2" nodedef="ND_randomvector_float_vector2">
+    <swizzle name="N_swizzeMin" type="vector4">
+      <input name="in" type="vector2" interfacename="min" />
+      <input name="channels" type="string" value="xyxy" />
+    </swizzle>
+    <swizzle name="N_swizzeMax" type="vector4">
+      <input name="in" type="vector2" interfacename="max" />
+      <input name="channels" type="string" value="xyxy" />
+    </swizzle>
+    <convert name="N_convert1" type="vector4">
+      <input name="in" type="float" interfacename="in" />
+    </convert>
+    <randomvector name="N_randomvector1" type="vector4">
+      <input name="in" type="vector4" nodename="N_convert1" />
+      <input name="min" type="vector4" nodename="N_swizzeMin" />
+      <input name="max" type="vector4" nodename="N_swizzeMax" />
+      <input name="seed" type="float" interfacename="seed" />
+      <input name="normalize" type="boolean" interfacename="normalize" />
+    </randomvector>
+    <convert name="N_convert2" type="vector3">
+      <input name="in" type="vector4" nodename="N_randomvector1" />
+    </convert>
+    <convert name="N_convert5" type="vector2">
+      <input name="in" type="vector3" nodename="N_convert2" />
+    </convert>
+    <output name="out" type="vector2" nodename="N_convert5" />
+  </nodegraph>
+  <nodegraph name="NG_randomvector_integer_vector2" nodedef="ND_randomvector_integer_vector2">
+    <swizzle name="N_swizzeMin" type="vector4">
+      <input name="in" type="vector2" interfacename="min" />
+      <input name="channels" type="string" value="xyxy" />
+    </swizzle>
+    <swizzle name="N_swizzeMax" type="vector4">
+      <input name="in" type="vector2" interfacename="max" />
+      <input name="channels" type="string" value="xyxy" />
+    </swizzle>
+    <convert name="N_convert1" type="float">  
+      <input name="in" type="integer" interfacename="in" />
+    </convert>
+    <convert name="N_convert2" type="vector4">
+      <input name="in" type="float" nodename="N_convert1" />
+    </convert>
+    <randomvector name="N_randomvector1" type="vector4">
+      <input name="in" type="vector4" nodename="N_convert2" />
+      <input name="min" type="vector4" nodename="N_swizzeMin" />
+      <input name="max" type="vector4" nodename="N_swizzeMax" />
+      <input name="seed" type="float" interfacename="seed" />
+      <input name="normalize" type="boolean" interfacename="normalize" />
+    </randomvector>
+    <convert name="N_convert3" type="vector3">
+      <input name="in" type="vector4" nodename="N_randomvector1" />
+    </convert>
+    <convert name="N_convert5" type="vector2">
+      <input name="in" type="vector3" nodename="N_convert3" />
+    </convert>
+    <output name="out" type="vector2" nodename="N_convert5" />
+  </nodegraph>
+
+
   <!--
     Node: <randomcolor>
     Produces a randomized color, based on an input signal and seed value.
   -->
-  <nodegraph name="NG_randomcolor_float_color3" nodedef="ND_randomcolor_float">
+  <nodegraph name="NG_randomcolor_float_color3" nodedef="ND_randomcolor_float_color3">
     <randomfloat name="N_rand_hue" type="float">
-      <input name="in" type="float" interfacename="in" value="0" />
-      <input name="seed" type="float" nodename="N_seed_hue" value="0" />
+      <input name="in" type="float" interfacename="in" />
+      <input name="seed" type="float" nodename="N_seed_hue" />
     </randomfloat>
     <randomfloat name="N_rand_saturation" type="float">
-      <input name="in" type="float" interfacename="in" value="0" />
+      <input name="in" type="float" interfacename="in" />
       <input name="seed" type="float" nodename="N_seed_saturation" />
     </randomfloat>
     <randomfloat name="N_rand_gamma" type="float">
-      <input name="in" type="float" interfacename="in" value="0" />
+      <input name="in" type="float" interfacename="in" />
       <input name="seed" type="float" nodename="N_seed_gamma" />
     </randomfloat>
     <range name="N_range_hue" type="float">
-      <input name="in" type="float" nodename="N_rand_hue" value="0" />
-      <input name="outlow" type="float" interfacename="huelow" value="0" />
-      <input name="outhigh" type="float" interfacename="huehigh" value="1" />
+      <input name="in" type="float" nodename="N_rand_hue" />
+      <input name="outlow" type="float" interfacename="huelow" />
+      <input name="outhigh" type="float" interfacename="huehigh" />
       <input name="inlow" type="float" value="0" />
       <input name="inhigh" type="float" value="1" />
       <input name="gamma" type="float" value="1" />
       <input name="doclamp" type="boolean" value="false" />
     </range>
     <range name="N_range_saturation" type="float">
-      <input name="in" type="float" nodename="N_rand_saturation" value="0" />
-      <input name="outlow" type="float" interfacename="saturationlow" value="0" />
-      <input name="outhigh" type="float" interfacename="saturationhigh" value="1" />
+      <input name="in" type="float" nodename="N_rand_saturation" />
+      <input name="outlow" type="float" interfacename="saturationlow" />
+      <input name="outhigh" type="float" interfacename="saturationhigh" />
       <input name="inlow" type="float" value="0" />
       <input name="inhigh" type="float" value="1" />
       <input name="gamma" type="float" value="1" />
@@ -1301,7 +1685,7 @@
     </hsvtorgb>
     <output name="out" type="color3" nodename="N_gamma" />
   </nodegraph>
-  <nodegraph name="NG_randomcolor_integer_color3" nodedef="ND_randomcolor_integer">
+  <nodegraph name="NG_randomcolor_integer_color3" nodedef="ND_randomcolor_integer_color3">
     <convert name="N_convert1" type="float">
       <input name="in" type="integer" interfacename="in" />
     </convert>
@@ -1317,7 +1701,7 @@
     </randomcolor>
     <output name="out" type="color3" nodename="N_randomcolor1" />
   </nodegraph>
-  <nodegraph name="NG_randomcolor_color3_color3" nodedef="ND_randomcolor_color3">
+  <nodegraph name="NG_randomcolor_color3_color3" nodedef="ND_randomcolor_color3_color3">
     <convert name="N_convert1" type="vector3">
       <input name="in" type="color3" interfacename="in" />
     </convert>
@@ -1336,7 +1720,7 @@
     </randomcolor>
     <output name="out" type="color3" nodename="N_randomcolor1" />
   </nodegraph>
-  <nodegraph name="NG_randomcolor_vector3_color3" nodedef="ND_randomcolor_vector3">
+  <nodegraph name="NG_randomcolor_vector3_color3" nodedef="ND_randomcolor_vector3_color3">
     <magnitude name="N_magnitude1" type="float">
       <input name="in" type="vector3" interfacename="in" />
     </magnitude>
@@ -1352,7 +1736,7 @@
     </randomcolor>
     <output name="out" type="color3" nodename="N_randomcolor1" />
   </nodegraph>
-  <nodegraph name="NG_randomcolor_vector2_color3" nodedef="ND_randomcolor_vector2">
+  <nodegraph name="NG_randomcolor_vector2_color3" nodedef="ND_randomcolor_vector2_color3">
     <magnitude name="N_magnitude1" type="float">
       <input name="in" type="vector2" interfacename="in" />
     </magnitude>
@@ -1368,8 +1752,7 @@
     </randomcolor>
     <output name="out" type="color3" nodename="N_randomcolor1" />
   </nodegraph>
-
-<nodegraph name="NG_randomcolor_float_color4" nodedef="ND_randomcolor_float_color4">
+  <nodegraph name="NG_randomcolor_float_color4" nodedef="ND_randomcolor_float_color4">
     <randomcolor name="N_randomcolor1" type="color3">
       <input name="in" type="float" interfacename="in" />
       <input name="huelow" type="float" interfacename="huelow" />
@@ -1380,22 +1763,22 @@
       <input name="gammahigh" type="float" interfacename="gammahigh" />
       <input name="seed" type="float" interfacename="seed" />
     </randomcolor>
-    <randomfloat name="N_randomfloat1" type="float">
+    <randomfloat name="N_randomfloat2" type="float">
       <input name="in" type="float" interfacename="in" />
       <input name="seed" type="float" interfacename="seed" />
     </randomfloat>
     <separate3 name="N_splitColor" type="multioutput">
-      <input name="in" type="color3" nodename="N_randomfloat1" />
+      <input name="in" type="color3" nodename="N_randomcolor1" />
     </separate3>
-    <combine3 name="N_combine_color" type="color4">
+    <combine4 name="N_combine_color" type="color4">
       <input name="in1" type="float" nodename="N_splitColor" output="outr" />
       <input name="in2" type="float" nodename="N_splitColor" output="outg" />
       <input name="in3" type="float" nodename="N_splitColor" output="outb" />
-      <input name="in4" type="float" nodename="N_randomfloat1" />
-    </combine3>
+      <input name="in4" type="float" nodename="N_randomfloat2" />
+    </combine4>
     <output name="out" type="color4" nodename="N_combine_color" />
-</nodegraph>
-<nodegraph name="NG_randomcolor_integer_color4" nodedef="ND_randomcolor_integer_color4">
+  </nodegraph>
+  <nodegraph name="NG_randomcolor_integer_color4" nodedef="ND_randomcolor_integer_color4">
     <convert name="N_convert1" type="float">
       <input name="in" type="integer" interfacename="in" />
     </convert>
@@ -1409,19 +1792,19 @@
       <input name="gammahigh" type="float" interfacename="gammahigh" />
       <input name="seed" type="float" interfacename="seed" />
     </randomcolor>
-    <randomfloat name="N_randomfloat1" type="float">
-      <input name="in" type="float" interfacename="in" />
+    <randomfloat name="N_randomfloat2" type="float">
+      <input name="in" type="float" nodename="N_convert1" />
       <input name="seed" type="float" interfacename="seed" />
     </randomfloat>
     <separate3 name="N_splitColor" type="multioutput">
-      <input name="in" type="color3" nodename="N_randomfloat1" />
+      <input name="in" type="color3" nodename="N_randomcolor1" />
     </separate3>
-    <combine3 name="N_combine_color" type="color4">
+    <combine4 name="N_combine_color" type="color4">
       <input name="in1" type="float" nodename="N_splitColor" output="outr" />
       <input name="in2" type="float" nodename="N_splitColor" output="outg" />
       <input name="in3" type="float" nodename="N_splitColor" output="outb" />
-      <input name="in4" type="float" nodename="N_randomfloat1" />
-    </combine3>
+      <input name="in4" type="float" nodename="N_randomfloat2" />
+    </combine4>
     <output name="out" type="color4" nodename="N_combine_color" />
   </nodegraph>
   <nodegraph name="NG_randomcolor_color3_color4" nodedef="ND_randomcolor_color3_color4">
@@ -1441,19 +1824,19 @@
       <input name="gammahigh" type="float" interfacename="gammahigh" />
       <input name="seed" type="float" interfacename="seed" />
     </randomcolor>
-    <randomfloat name="N_randomfloat1" type="float">
-      <input name="in" type="float" interfacename="in" />
+    <randomfloat name="N_randomfloat2" type="float">
+      <input name="in" type="float" nodename="N_magnitude1" />
       <input name="seed" type="float" interfacename="seed" />
     </randomfloat>
     <separate3 name="N_splitColor" type="multioutput">
-      <input name="in" type="color3" nodename="N_randomfloat1" />
+      <input name="in" type="color3" nodename="N_randomcolor1" />
     </separate3>
-    <combine3 name="N_combine_color" type="color4">
+    <combine4 name="N_combine_color" type="color4">
       <input name="in1" type="float" nodename="N_splitColor" output="outr" />
       <input name="in2" type="float" nodename="N_splitColor" output="outg" />
       <input name="in3" type="float" nodename="N_splitColor" output="outb" />
-      <input name="in4" type="float" nodename="N_randomfloat1" />
-    </combine3>
+      <input name="in4" type="float" nodename="N_randomfloat2" />
+    </combine4>
     <output name="out" type="color4" nodename="N_combine_color" />
   </nodegraph>
   <nodegraph name="NG_randomcolor_vector3_color4" nodedef="ND_randomcolor_vector3_color4">
@@ -1470,19 +1853,19 @@
       <input name="gammahigh" type="float" interfacename="gammahigh" />
       <input name="seed" type="float" interfacename="seed" />
     </randomcolor>
-    <randomfloat name="N_randomfloat1" type="float">
-      <input name="in" type="float" interfacename="in" />
+    <randomfloat name="N_randomfloat2" type="float">
+      <input name="in" type="vector3" interfacename="in" />
       <input name="seed" type="float" interfacename="seed" />
     </randomfloat>
     <separate3 name="N_splitColor" type="multioutput">
-      <input name="in" type="color3" nodename="N_randomfloat1" />
+      <input name="in" type="color3" nodename="N_randomcolor1" />
     </separate3>
-    <combine3 name="N_combine_color" type="color4">
+    <combine4 name="N_combine_color" type="color4">
       <input name="in1" type="float" nodename="N_splitColor" output="outr" />
       <input name="in2" type="float" nodename="N_splitColor" output="outg" />
       <input name="in3" type="float" nodename="N_splitColor" output="outb" />
-      <input name="in4" type="float" nodename="N_randomfloat1" />
-    </combine3>
+      <input name="in4" type="float" nodename="N_randomfloat2" />
+    </combine4>
     <output name="out" type="color4" nodename="N_combine_color" />
   </nodegraph>
   <nodegraph name="NG_randomcolor_vector2_color4" nodedef="ND_randomcolor_vector2_color4">
@@ -1499,19 +1882,19 @@
       <input name="gammahigh" type="float" interfacename="gammahigh" />
       <input name="seed" type="float" interfacename="seed" />
     </randomcolor>
-    <randomfloat name="N_randomfloat1" type="float">
-      <input name="in" type="float" interfacename="in" />
+    <randomfloat name="N_randomfloat2" type="float">
+      <input name="in" type="vector2" interfacename="in" />
       <input name="seed" type="float" interfacename="seed" />
     </randomfloat>
     <separate3 name="N_splitColor" type="multioutput">
-      <input name="in" type="color3" nodename="N_randomfloat1" />
+      <input name="in" type="color3" nodename="N_randomcolor1" />
     </separate3>
-    <combine3 name="N_combine_color" type="color4">
+    <combine4 name="N_combine_color" type="color4">
       <input name="in1" type="float" nodename="N_splitColor" output="outr" />
       <input name="in2" type="float" nodename="N_splitColor" output="outg" />
       <input name="in3" type="float" nodename="N_splitColor" output="outb" />
-      <input name="in4" type="float" nodename="N_randomfloat1" />
-    </combine3>
+      <input name="in4" type="float" nodename="N_randomfloat2" />
+    </combine4>
     <output name="out" type="color4" nodename="N_combine_color" />
   </nodegraph>
 

From 53ed58b2c4fcfe062392edb6a1d57055a7ce0e51 Mon Sep 17 00:00:00 2001
From: Chris Rydalch <crydalch@gmail.com>
Date: Mon, 22 May 2023 14:12:00 -0500
Subject: [PATCH 05/14] Fixed color4 signatures with color3 output types.

---
 libraries/stdlib/stdlib_defs.mtlx | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/libraries/stdlib/stdlib_defs.mtlx b/libraries/stdlib/stdlib_defs.mtlx
index f4d14f6411..aebad8778e 100644
--- a/libraries/stdlib/stdlib_defs.mtlx
+++ b/libraries/stdlib/stdlib_defs.mtlx
@@ -1261,7 +1261,7 @@
     <input name="gammalow" type="float" uiname="Gamma Low" uisoftmin="0.0" uisoftmax="3.0" value="1" />
     <input name="gammahigh" type="float" uiname="Gamma High" uisoftmin="0.0" uisoftmax="3.0" value="1" />
     <input name="seed" type="float" uiname="Seed" value="0" />
-    <output name="out" type="color3" />
+    <output name="out" type="color4" />
   </nodedef>
   <nodedef name="ND_randomcolor_integer_color4" node="randomcolor" nodegroup="procedural3d">
     <input name="in" type="integer" uiname="Input" uisoftmin="0" uisoftmax="10" value="0" />
@@ -1272,7 +1272,7 @@
     <input name="gammalow" type="float" uiname="Gamma Low" uisoftmin="0.0" uisoftmax="3.0" value="1" />
     <input name="gammahigh" type="float" uiname="Gamma High" uisoftmin="0.0" uisoftmax="3.0" value="1" />
     <input name="seed" type="float" uiname="Seed" value="0" />
-    <output name="out" type="color3" />
+    <output name="out" type="color4" />
   </nodedef>
   <nodedef name="ND_randomcolor_color3_color4" node="randomcolor" nodegroup="procedural3d">
     <input name="in" type="color3" uiname="Input" uisoftmin="0" uisoftmax="10" value="0.0, 0.0, 0.0" />
@@ -1283,7 +1283,7 @@
     <input name="gammalow" type="float" uiname="Gamma Low" uisoftmin="0.0" uisoftmax="3.0" value="1" />
     <input name="gammahigh" type="float" uiname="Gamma High" uisoftmin="0.0" uisoftmax="3.0" value="1" />
     <input name="seed" type="float" uiname="Seed" value="0" />
-    <output name="out" type="color3" />
+    <output name="out" type="color4" />
   </nodedef>
   <nodedef name="ND_randomcolor_vector3_color4" node="randomcolor" nodegroup="procedural3d">
     <input name="in" type="vector3" uiname="Input" uisoftmin="0" uisoftmax="10" value="0.0, 0.0, 0.0" />
@@ -1294,7 +1294,7 @@
     <input name="gammalow" type="float" uiname="Gamma Low" uisoftmin="0.0" uisoftmax="3.0" value="1" />
     <input name="gammahigh" type="float" uiname="Gamma High" uisoftmin="0.0" uisoftmax="3.0" value="1" />
     <input name="seed" type="float" uiname="Seed" value="0" />
-    <output name="out" type="color3" />
+    <output name="out" type="color4" />
   </nodedef>
   <nodedef name="ND_randomcolor_vector2_color4" node="randomcolor" nodegroup="procedural3d">
     <input name="in" type="vector2" uiname="Input" uisoftmin="0" uisoftmax="10" value="0.0, 0.0" />
@@ -1305,7 +1305,7 @@
     <input name="gammalow" type="float" uiname="Gamma Low" uisoftmin="0.0" uisoftmax="3.0" value="1" />
     <input name="gammahigh" type="float" uiname="Gamma High" uisoftmin="0.0" uisoftmax="3.0" value="1" />
     <input name="seed" type="float" uiname="Seed" value="0" />
-    <output name="out" type="color3" />
+    <output name="out" type="color4" />
   </nodedef>
 
   <!--

From 21e7ae07c8a1835e22a00367cf2799d08036f8a4 Mon Sep 17 00:00:00 2001
From: Chris Rydalch <crydalch@gmail.com>
Date: Wed, 24 May 2023 11:49:47 -0500
Subject: [PATCH 06/14] Simplify the number of input signatures for the
 randomization nodes.

---
 libraries/stdlib/stdlib_defs.mtlx | 181 +---------
 libraries/stdlib/stdlib_ng.mtlx   | 571 +++++-------------------------
 2 files changed, 86 insertions(+), 666 deletions(-)

diff --git a/libraries/stdlib/stdlib_defs.mtlx b/libraries/stdlib/stdlib_defs.mtlx
index aebad8778e..7d40b0c460 100644
--- a/libraries/stdlib/stdlib_defs.mtlx
+++ b/libraries/stdlib/stdlib_defs.mtlx
@@ -1042,32 +1042,12 @@
     <input name="seed" type="float" uiname="Seed" value="0.0" />
     <output name="out" type="float" />
   </nodedef>
-  <nodedef name="ND_randomfloat_color3" node="randomfloat" nodegroup="procedural">
-    <input name="in" type="color3" uiname="Input" value="0.0, 0.0, 0.0" />
-    <input name="min" type="float" uiname="Minimum" value="0.0" />
-    <input name="max" type="float" uiname="Maximum" value="1.0" />
-    <input name="seed" type="float" uiname="Seed" value="0.0" />
-    <output name="out" type="float" />
-  </nodedef>
-  <nodedef name="ND_randomfloat_vector3" node="randomfloat" nodegroup="procedural">
-    <input name="in" type="vector3" uiname="Input" value="0.0, 0.0, 0.0" />
-    <input name="min" type="float" uiname="Minimum" value="0.0" />
-    <input name="max" type="float" uiname="Maximum" value="1.0" />
-    <input name="seed" type="float" uiname="Seed" value="0.0" />
-    <output name="out" type="float" />
-  </nodedef>
-  <nodedef name="ND_randomfloat_vector2" node="randomfloat" nodegroup="procedural">
-    <input name="in" type="vector2" uiname="Input" value="0.0, 0.0" />
-    <input name="min" type="float" uiname="Minimum" value="0.0" />
-    <input name="max" type="float" uiname="Maximum" value="1.0" />
-    <input name="seed" type="float" uiname="Seed" value="0.0" />
-    <output name="out" type="float" />
-  </nodedef>
 
   <!--
     Node: <randomvector>
     Produces a randomized vector2, vector3, or vector4, based on an 'input' signal and 'seed' value.
   --> 
+
   <nodedef name="ND_randomvector_float_vector2" node="randomvector" nodegroup="procedural">
     <input name="in" type="float" uiname="Input" value="0.0" doc="Initial randomization seed." />
     <input name="min" type="vector2" uiname="Minimum" value="0.0, 0.0" doc="The minimum output value." />
@@ -1084,31 +1064,6 @@
     <input name="normalize" type="boolean" uiname="Normalize" value="false" doc="Normalize the output vector." />
     <output name="out" type="vector2" />
   </nodedef>
-  <nodedef name="ND_randomvector_vector2_vector2" node="randomvector" nodegroup="procedural">
-    <input name="in" type="vector2" uiname="Input" value="0.0, 0.0" doc="Initial randomization seed." />
-    <input name="min" type="vector2" uiname="Minimum" value="0.0, 0.0" doc="The minimum output value." />
-    <input name="max" type="vector2" uiname="Maximum" value="1.0, 1.0" doc="The maximum output value." />
-    <input name="seed" type="float" uiname="Seed" value="0.0" doc="Additional seed offset." />
-    <input name="normalize" type="boolean" uiname="Normalize" value="false" doc="Normalize the output vector." />
-    <output name="out" type="vector2" />
-  </nodedef>
-  <nodedef name="ND_randomvector_vector3_vector2" node="randomvector" nodegroup="procedural">
-    <input name="in" type="vector3" uiname="Input" value="0.0, 0.0, 0.0" doc="Initial randomization seed." />
-    <input name="min" type="vector2" uiname="Minimum" value="0.0, 0.0" doc="The minimum output value." />
-    <input name="max" type="vector2" uiname="Maximum" value="1.0, 1.0" doc="The maximum output value." />
-    <input name="seed" type="float" uiname="Seed" value="0.0" doc="Additional seed offset." />
-    <input name="normalize" type="boolean" uiname="Normalize" value="false" doc="Normalize the output vector." />
-    <output name="out" type="vector2" />
-  </nodedef>
-  <nodedef name="ND_randomvector_vector4_vector2" node="randomvector" nodegroup="procedural">
-    <input name="in" type="vector4" uiname="Input" value="0.0, 0.0, 0.0, 0.0" doc="Initial randomization seed." />
-    <input name="min" type="vector2" uiname="Minimum" value="0.0, 0.0" doc="The minimum output value." />
-    <input name="max" type="vector2" uiname="Maximum" value="1.0, 1.0" doc="The maximum output value." />
-    <input name="seed" type="float" uiname="Seed" value="0.0" doc="Additional seed offset." />
-    <input name="normalize" type="boolean" uiname="Normalize" value="false" doc="Normalize the output vector." />
-    <output name="out" type="vector2" />
-  </nodedef>
-
   <nodedef name="ND_randomvector_float_vector3" node="randomvector" nodegroup="procedural">
     <input name="in" type="float" uiname="Input" value="0.0" doc="Initial randomization seed." />
     <input name="min" type="vector3" uiname="Minimum" value="0.0, 0.0, 0.0" doc="The minimum output value." />
@@ -1125,31 +1080,6 @@
     <input name="normalize" type="boolean" uiname="Normalize" value="false" doc="Normalize the output vector." />
     <output name="out" type="vector3" />
   </nodedef>
-  <nodedef name="ND_randomvector_vector2_vector3" node="randomvector" nodegroup="procedural">
-    <input name="in" type="vector2" uiname="Input" value="0.0, 0.0" doc="Initial randomization seed." />
-    <input name="min" type="vector3" uiname="Minimum" value="0.0, 0.0, 0.0" doc="The minimum output value." />
-    <input name="max" type="vector3" uiname="Maximum" value="1.0, 1.0, 1.0" doc="The maximum output value." />
-    <input name="seed" type="float" uiname="Seed" value="0.0" doc="Additional seed offset." />
-    <input name="normalize" type="boolean" uiname="Normalize" value="false" doc="Normalize the output vector." />
-    <output name="out" type="vector3" />
-  </nodedef>
-  <nodedef name="ND_randomvector_vector3_vector3" node="randomvector" nodegroup="procedural">
-    <input name="in" type="vector3" uiname="Input" value="0.0, 0.0, 0.0" doc="Initial randomization seed." />
-    <input name="min" type="vector3" uiname="Minimum" value="0.0, 0.0, 0.0" doc="The minimum output value." />
-    <input name="max" type="vector3" uiname="Maximum" value="1.0, 1.0, 1.0" doc="The maximum output value." />
-    <input name="seed" type="float" uiname="Seed" value="0.0" doc="Additional seed offset." />
-    <input name="normalize" type="boolean" uiname="Normalize" value="false" doc="Normalize the output vector." />
-    <output name="out" type="vector3" />
-  </nodedef>
-  <nodedef name="ND_randomvector_vector4_vector3" node="randomvector" nodegroup="procedural">
-    <input name="in" type="vector4" uiname="Minimum" value="0.0, 0.0, 0.0, 0.0" doc="The minimum output value." />
-    <input name="min" type="vector3" uiname="Minimum" value="0.0, 0.0, 0.0" doc="The minimum output value." />
-    <input name="max" type="vector3" uiname="Maximum" value="1.0, 1.0, 1.0" doc="The maximum output value." />
-    <input name="seed" type="float" uiname="Seed" value="0.0" doc="Additional seed offset." />
-    <input name="normalize" type="boolean" uiname="Normalize" value="false" doc="Normalize the output vector." />
-    <output name="out" type="vector3" />
-  </nodedef>
-
   <nodedef name="ND_randomvector_float_vector4" node="randomvector" nodegroup="procedural">
     <input name="in" type="float" uiname="Input" value="0.0" doc="Initial randomization seed." />
     <input name="min" type="vector4" uiname="Minimum" value="0.0, 0.0, 0.0, 0.0" doc="The minimum output value." />
@@ -1166,22 +1096,6 @@
     <input name="normalize" type="boolean" uiname="Normalize" value="false" doc="Normalize the output vector." />
     <output name="out" type="vector4" />
   </nodedef>
-  <nodedef name="ND_randomvector_vector2_vector4" node="randomvector" nodegroup="procedural">
-    <input name="in" type="vector2" uiname="Input" value="0.0, 0.0" doc="Initial randomization seed." />
-    <input name="min" type="vector4" uiname="Minimum" value="0.0, 0.0, 0.0, 0.0" doc="The minimum output value." />
-    <input name="max" type="vector4" uiname="Maximum" value="1.0, 1.0, 1.0, 1.0" doc="The maximum output value." />
-    <input name="seed" type="float" uiname="Seed" value="0.0" doc="Additional seed offset." />
-    <input name="normalize" type="boolean" uiname="Normalize" value="false" doc="Normalize the output vector." />
-    <output name="out" type="vector4" />
-  </nodedef>
-  <nodedef name="ND_randomvector_vector3_vector4" node="randomvector" nodegroup="procedural">
-    <input name="in" type="vector3" uiname="Input" value="0.0, 0.0, 0.0" doc="Initial randomization seed." />
-    <input name="min" type="vector4" uiname="Minimum" value="0.0, 0.0, 0.0, 0.0" doc="The minimum output value." />
-    <input name="max" type="vector4" uiname="Maximum" value="1.0, 1.0, 1.0, 1.0" doc="The maximum output value." />
-    <input name="seed" type="float" uiname="Seed" value="0.0" doc="Additional seed offset." />
-    <input name="normalize" type="boolean" uiname="Normalize" value="false" doc="Normalize the output vector." />
-    <output name="out" type="vector4" />
-  </nodedef>
   <nodedef name="ND_randomvector_vector4_vector4" node="randomvector" nodegroup="procedural">
     <input name="in" type="vector4" uiname="Input" value="0.0, 0.0, 0.0, 0.0" doc="Initial randomization seed." />
     <input name="min" type="vector4" uiname="Minimum" value="0.0, 0.0, 0.0, 0.0" doc="The minimum output value." />
@@ -1191,11 +1105,10 @@
     <output name="out" type="vector4" />
   </nodedef>
 
+
   <!--
     Node: <randomcolor>
-    Produces a randomized color, based on an input signal and seed value. The input 
-    is only used to generate the randomized color, even if the input signature is a 
-    color or vector3. The output is an RGB color.
+    Produces a randomized RGB color, based on an 'input' signal and 'seed' value.
   -->
   <nodedef name="ND_randomcolor_float_color3" node="randomcolor" nodegroup="procedural3d">
     <input name="in" type="float" uiname="Input" uisoftmin="0.0" uisoftmax="10.0" value="0.0" />
@@ -1219,94 +1132,6 @@
     <input name="seed" type="float" uiname="Seed" value="0" />
     <output name="out" type="color3" />
   </nodedef>
-  <nodedef name="ND_randomcolor_color3_color3" node="randomcolor" nodegroup="procedural3d">
-    <input name="in" type="color3" uiname="Input" uisoftmin="0" uisoftmax="10" value="0.0, 0.0, 0.0" />
-    <input name="huelow" type="float" uiname="Hue Low" uisoftmin="0.0" uisoftmax="1.0" value="0" />
-    <input name="huehigh" type="float" uiname="Hue High" uisoftmin="0.0" uisoftmax="1.0" value="1" />
-    <input name="saturationlow" type="float" uiname="Saturation Low" uisoftmin="0.0" uisoftmax="1.0" value="0.825" />
-    <input name="saturationhigh" type="float" uiname="Saturation High" uisoftmin="0.0" uisoftmax="1.0" value="1" />
-    <input name="gammalow" type="float" uiname="Gamma Low" uisoftmin="0.0" uisoftmax="3.0" value="1" />
-    <input name="gammahigh" type="float" uiname="Gamma High" uisoftmin="0.0" uisoftmax="3.0" value="1" />
-    <input name="seed" type="float" uiname="Seed" value="0" />
-    <output name="out" type="color3" />
-  </nodedef>
-  <nodedef name="ND_randomcolor_vector3_color3" node="randomcolor" nodegroup="procedural3d">
-    <input name="in" type="vector3" uiname="Input" uisoftmin="0" uisoftmax="10" value="0.0, 0.0, 0.0" />
-    <input name="huelow" type="float" uiname="Hue Low" uisoftmin="0.0" uisoftmax="1.0" value="0" />
-    <input name="huehigh" type="float" uiname="Hue High" uisoftmin="0.0" uisoftmax="1.0" value="1" />
-    <input name="saturationlow" type="float" uiname="Saturation Low" uisoftmin="0.0" uisoftmax="1.0" value="0.825" />
-    <input name="saturationhigh" type="float" uiname="Saturation High" uisoftmin="0.0" uisoftmax="1.0" value="1" />
-    <input name="gammalow" type="float" uiname="Gamma Low" uisoftmin="0.0" uisoftmax="3.0" value="1" />
-    <input name="gammahigh" type="float" uiname="Gamma High" uisoftmin="0.0" uisoftmax="3.0" value="1" />
-    <input name="seed" type="float" uiname="Seed" value="0" />
-    <output name="out" type="color3" />
-  </nodedef>
-  <nodedef name="ND_randomcolor_vector2_color3" node="randomcolor" nodegroup="procedural3d">
-    <input name="in" type="vector2" uiname="Input" uisoftmin="0" uisoftmax="10" value="0.0, 0.0" />
-    <input name="huelow" type="float" uiname="Hue Low" uisoftmin="0.0" uisoftmax="1.0" value="0" />
-    <input name="huehigh" type="float" uiname="Hue High" uisoftmin="0.0" uisoftmax="1.0" value="1" />
-    <input name="saturationlow" type="float" uiname="Saturation Low" uisoftmin="0.0" uisoftmax="1.0" value="0.825" />
-    <input name="saturationhigh" type="float" uiname="Saturation High" uisoftmin="0.0" uisoftmax="1.0" value="1" />
-    <input name="gammalow" type="float" uiname="Gamma Low" uisoftmin="0.0" uisoftmax="3.0" value="1" />
-    <input name="gammahigh" type="float" uiname="Gamma High" uisoftmin="0.0" uisoftmax="3.0" value="1" />
-    <input name="seed" type="float" uiname="Seed" value="0" />
-    <output name="out" type="color3" />
-  </nodedef>
-  <nodedef name="ND_randomcolor_float_color4" node="randomcolor" nodegroup="procedural3d">
-    <input name="in" type="float" uiname="Input" uisoftmin="0.0" uisoftmax="10.0" value="0.0" />
-    <input name="huelow" type="float" uiname="Hue Low" uisoftmin="0.0" uisoftmax="1.0" value="0" />
-    <input name="huehigh" type="float" uiname="Hue High" uisoftmin="0.0" uisoftmax="1.0" value="1" />
-    <input name="saturationlow" type="float" uiname="Saturation Low" uisoftmin="0.0" uisoftmax="1.0" value="0.825" />
-    <input name="saturationhigh" type="float" uiname="Saturation High" uisoftmin="0.0" uisoftmax="1.0" value="1" />
-    <input name="gammalow" type="float" uiname="Gamma Low" uisoftmin="0.0" uisoftmax="3.0" value="1" />
-    <input name="gammahigh" type="float" uiname="Gamma High" uisoftmin="0.0" uisoftmax="3.0" value="1" />
-    <input name="seed" type="float" uiname="Seed" value="0" />
-    <output name="out" type="color4" />
-  </nodedef>
-  <nodedef name="ND_randomcolor_integer_color4" node="randomcolor" nodegroup="procedural3d">
-    <input name="in" type="integer" uiname="Input" uisoftmin="0" uisoftmax="10" value="0" />
-    <input name="huelow" type="float" uiname="Hue Low" uisoftmin="0.0" uisoftmax="1.0" value="0" />
-    <input name="huehigh" type="float" uiname="Hue High" uisoftmin="0.0" uisoftmax="1.0" value="1" />
-    <input name="saturationlow" type="float" uiname="Saturation Low" uisoftmin="0.0" uisoftmax="1.0" value="0.825" />
-    <input name="saturationhigh" type="float" uiname="Saturation High" uisoftmin="0.0" uisoftmax="1.0" value="1" />
-    <input name="gammalow" type="float" uiname="Gamma Low" uisoftmin="0.0" uisoftmax="3.0" value="1" />
-    <input name="gammahigh" type="float" uiname="Gamma High" uisoftmin="0.0" uisoftmax="3.0" value="1" />
-    <input name="seed" type="float" uiname="Seed" value="0" />
-    <output name="out" type="color4" />
-  </nodedef>
-  <nodedef name="ND_randomcolor_color3_color4" node="randomcolor" nodegroup="procedural3d">
-    <input name="in" type="color3" uiname="Input" uisoftmin="0" uisoftmax="10" value="0.0, 0.0, 0.0" />
-    <input name="huelow" type="float" uiname="Hue Low" uisoftmin="0.0" uisoftmax="1.0" value="0" />
-    <input name="huehigh" type="float" uiname="Hue High" uisoftmin="0.0" uisoftmax="1.0" value="1" />
-    <input name="saturationlow" type="float" uiname="Saturation Low" uisoftmin="0.0" uisoftmax="1.0" value="0.825" />
-    <input name="saturationhigh" type="float" uiname="Saturation High" uisoftmin="0.0" uisoftmax="1.0" value="1" />
-    <input name="gammalow" type="float" uiname="Gamma Low" uisoftmin="0.0" uisoftmax="3.0" value="1" />
-    <input name="gammahigh" type="float" uiname="Gamma High" uisoftmin="0.0" uisoftmax="3.0" value="1" />
-    <input name="seed" type="float" uiname="Seed" value="0" />
-    <output name="out" type="color4" />
-  </nodedef>
-  <nodedef name="ND_randomcolor_vector3_color4" node="randomcolor" nodegroup="procedural3d">
-    <input name="in" type="vector3" uiname="Input" uisoftmin="0" uisoftmax="10" value="0.0, 0.0, 0.0" />
-    <input name="huelow" type="float" uiname="Hue Low" uisoftmin="0.0" uisoftmax="1.0" value="0" />
-    <input name="huehigh" type="float" uiname="Hue High" uisoftmin="0.0" uisoftmax="1.0" value="1" />
-    <input name="saturationlow" type="float" uiname="Saturation Low" uisoftmin="0.0" uisoftmax="1.0" value="0.825" />
-    <input name="saturationhigh" type="float" uiname="Saturation High" uisoftmin="0.0" uisoftmax="1.0" value="1" />
-    <input name="gammalow" type="float" uiname="Gamma Low" uisoftmin="0.0" uisoftmax="3.0" value="1" />
-    <input name="gammahigh" type="float" uiname="Gamma High" uisoftmin="0.0" uisoftmax="3.0" value="1" />
-    <input name="seed" type="float" uiname="Seed" value="0" />
-    <output name="out" type="color4" />
-  </nodedef>
-  <nodedef name="ND_randomcolor_vector2_color4" node="randomcolor" nodegroup="procedural3d">
-    <input name="in" type="vector2" uiname="Input" uisoftmin="0" uisoftmax="10" value="0.0, 0.0" />
-    <input name="huelow" type="float" uiname="Hue Low" uisoftmin="0.0" uisoftmax="1.0" value="0" />
-    <input name="huehigh" type="float" uiname="Hue High" uisoftmin="0.0" uisoftmax="1.0" value="1" />
-    <input name="saturationlow" type="float" uiname="Saturation Low" uisoftmin="0.0" uisoftmax="1.0" value="0.825" />
-    <input name="saturationhigh" type="float" uiname="Saturation High" uisoftmin="0.0" uisoftmax="1.0" value="1" />
-    <input name="gammalow" type="float" uiname="Gamma Low" uisoftmin="0.0" uisoftmax="3.0" value="1" />
-    <input name="gammahigh" type="float" uiname="Gamma High" uisoftmin="0.0" uisoftmax="3.0" value="1" />
-    <input name="seed" type="float" uiname="Seed" value="0" />
-    <output name="out" type="color4" />
-  </nodedef>
 
   <!--
     Node: <checkerboard>
diff --git a/libraries/stdlib/stdlib_ng.mtlx b/libraries/stdlib/stdlib_ng.mtlx
index c9b20ae3a6..1a845294e7 100644
--- a/libraries/stdlib/stdlib_ng.mtlx
+++ b/libraries/stdlib/stdlib_ng.mtlx
@@ -1200,181 +1200,22 @@
     </randomfloat>
     <output name="out" type="float" nodename="N_randomfloat1" />
   </nodegraph>
-  <nodegraph name="NG_randomfloat_color3" nodedef="ND_randomfloat_color3">
-    <convert name="N_convert1" type="vector3">
-      <input name="in" type="color3" interfacename="in" />
-    </convert>
-    <magnitude name="N_magnitude1" type="float">
-      <input name="in" type="vector3" nodename="N_convert1" />
-    </magnitude>
-    <randomfloat name="N_randomfloat1" type="float">
-      <input name="in" type="float" nodename="N_magnitude1" />
-      <input name="seed" type="float" interfacename="seed" />
-    </randomfloat>
-    <output name="out" type="float" nodename="N_randomfloat1" />
-  </nodegraph>
-  <nodegraph name="NG_randomfloat_vector3" nodedef="ND_randomfloat_vector3">
-    <magnitude name="N_magnitude1" type="float">
-      <input name="in" type="vector3" interfacename="in" />
-    </magnitude>
-    <randomfloat name="N_randomfloat1" type="float">
-      <input name="in" type="float" nodename="N_magnitude1" />
-      <input name="seed" type="float" interfacename="seed" />
-    </randomfloat>
-    <output name="out" type="float" nodename="N_randomfloat1" />
-  </nodegraph>
-  <nodegraph name="NG_randomfloat_vector2" nodedef="ND_randomfloat_vector2">
-    <magnitude name="N_magnitude1" type="float">
-      <input name="in" type="vector2" interfacename="in" />
-    </magnitude>
-    <randomfloat name="N_randomfloat1" type="float">
-      <input name="in" type="float" nodename="N_magnitude1" />
-      <input name="seed" type="float" interfacename="seed" />
-    </randomfloat>
-    <output name="out" type="float" nodename="N_randomfloat1" />
-  </nodegraph>
 
   <!--
     Node: <randomvector>
     Produces a randomized vector2, vector3, or vector4, based on an 'input' signal and 'seed' value.
   -->
-  <nodegraph name="NG_randomvector_vector4_vector4" nodedef="ND_randomvector_vector4_vector4">
-    <range name="N_range" type="vector4">
-      <input name="in" type="vector4" nodename="N_makeVector" />
-      <input name="outlow" type="vector4" interfacename="min" />
-      <input name="outhigh" type="vector4" interfacename="max" />
-      <input name="doclamp" type="boolean" value="true" />
-    </range>
-    <combine4 name="N_makeVector" type="vector4">
-      <input name="in1" type="float" nodename="N_randX" />
-      <input name="in2" type="float" nodename="N_randY" />
-      <input name="in3" type="float" nodename="N_randZ" />
-      <input name="in4" type="float" nodename="N_randW" />
-    </combine4>
-    <randomfloat name="N_randX" type="float">
-      <input name="in" type="float" nodename="N_addSeed" />
-      <input name="seed" type="float" value="1.3712" />
-    </randomfloat>
-    <add name="N_addSeed" type="float">
-      <input name="in1" type="float" nodename="N_inputMagnitude" />
-      <input name="in2" type="float" interfacename="seed" />
-    </add>
-    <magnitude name="N_inputMagnitude" type="float">
-      <input name="in" type="vector4" interfacename="in" />
-    </magnitude>
-    <randomfloat name="N_randY" type="float">
-      <input name="in" type="float" nodename="N_addSeed" />
-      <input name="seed" type="float" value="29.544" />
-    </randomfloat>
-    <randomfloat name="N_randZ" type="float">
-      <input name="in" type="float" nodename="N_addSeed" />
-      <input name="seed" type="float" value="78.046" />
-    </randomfloat>
-    <randomfloat name="N_randW" type="float">
-      <input name="in" type="float" nodename="N_addSeed" />
-      <input name="seed" type="float" value="524.97" />
-    </randomfloat>
-    <normalize name="N_normalize" type="vector4">
-      <input name="in" type="vector4" nodename="N_range" />
-    </normalize>
-    <convert name="N_convertNormalizeParm" type="float">
-      <input name="in" type="boolean" interfacename="normalize" />
-    </convert>
-    <switch name="N_normalizeOutput" type="vector4">
-      <input name="in1" type="vector4" nodename="N_range" />
-      <input name="in2" type="vector4" nodename="N_normalize" />
-      <input name="which" type="float" nodename="N_convertNormalizeParm" />
-    </switch>
-    <output name="out" type="vector4" nodename="N_normalizeOutput" />
-  </nodegraph>
-  <nodegraph name="NG_randomvector_vector3_vector4" nodedef="ND_randomvector_vector3_vector4">
-    <convert name="N_convert1" type="vector4">
-      <input name="in" type="vector3" interfacename="in" />
-    </convert>
-    <randomvector name="N_randomvector1" type="vector4">
-      <input name="in" type="vector4" nodename="N_convert1" />
-      <input name="min" type="vector4" interfacename="min" />
-      <input name="max" type="vector4" interfacename="max" />
-      <input name="seed" type="float" interfacename="seed" />
-      <input name="normalize" type="boolean" interfacename="normalize" />
-    </randomvector>
-    <output name="out" type="vector4" nodename="N_randomvector1" />
-  </nodegraph>
-  <nodegraph name="NG_randomvector_vector2_vector4" nodedef="ND_randomvector_vector2_vector4">
-    <swizzle name="N_convert1" type="vector4">
-      <input name="in" type="vector2" interfacename="in" />
-      <input name="channels" type="string" value="xyxy" />
-    </swizzle>
-    <randomvector name="N_randomvector1" type="vector4">
-      <input name="in" type="vector4" nodename="N_convert1" />
-      <input name="min" type="vector4" interfacename="min" />
-      <input name="max" type="vector4" interfacename="max" />
-      <input name="seed" type="float" interfacename="seed" />
-      <input name="normalize" type="boolean" interfacename="normalize" />
-    </randomvector>
-    <output name="out" type="vector4" nodename="N_randomvector1" />
-  </nodegraph>
-  <nodegraph name="NG_randomvector_float_vector4" nodedef="ND_randomvector_float_vector4">
-    <convert name="N_convert1" type="vector4">
-      <input name="in" type="float" interfacename="in" />
-    </convert>
-    <randomvector name="N_randomvector1" type="vector4">
-      <input name="in" type="vector4" nodename="N_convert1" />
-      <input name="min" type="vector4" interfacename="min" />
-      <input name="max" type="vector4" interfacename="max" />
-      <input name="seed" type="float" interfacename="seed" />
-      <input name="normalize" type="boolean" interfacename="normalize" />
-    </randomvector>
-    <output name="out" type="vector4" nodename="N_randomvector1" />
-  </nodegraph>
-  <nodegraph name="NG_randomvector_integer_vector4" nodedef="ND_randomvector_integer_vector4">
-    <convert name="N_convert1" type="float">
-      <input name="in" type="integer" interfacename="in" />
-    </convert>
-    <convert name="N_convert2" type="vector4">
-      <input name="in" type="float" nodename="N_convert1" />
-    </convert>
-    <randomvector name="N_randomvector1" type="vector4">
-      <input name="in" type="vector4" nodename="N_convert2" />
-      <input name="min" type="vector4" interfacename="min" />
-      <input name="max" type="vector4" interfacename="max" />
-      <input name="seed" type="float" interfacename="seed" />
-      <input name="normalize" type="boolean" interfacename="normalize" />
-    </randomvector>
-    <output name="out" type="vector4" nodename="N_randomvector1" />
-  </nodegraph>
-  <nodegraph name="NG_randomvector_vector4_vector3" nodedef="ND_randomvector_vector4_vector3">
-    <swizzle name="N_swizzeMin" type="vector4">
-      <input name="in" type="vector3" interfacename="min" />
-      <input name="channels" type="string" value="xyzx" />
-    </swizzle>
-    <swizzle name="N_swizzeMax" type="vector4">
-      <input name="in" type="vector3" interfacename="max" />
-      <input name="channels" type="string" value="xyzx" />
-    </swizzle>
-    <randomvector name="N_randomvector1" type="vector4">
-      <input name="in" type="vector4" interfacename="in" />
-      <input name="min" type="vector4" nodename="N_swizzeMin" />
-      <input name="max" type="vector4" nodename="N_swizzeMax" />
-      <input name="seed" type="float" interfacename="seed" />
-      <input name="normalize" type="boolean" interfacename="normalize" />
-    </randomvector>
-    <convert name="N_convert1" type="vector3">
-      <input name="in" type="vector4" nodename="N_randomvector1" />
-    </convert>
-    <output name="out" type="vector3" nodename="N_convert1" />
-  </nodegraph>
-  <nodegraph name="NG_randomvector_vector3_vector3" nodedef="ND_randomvector_vector3_vector3">
+  <nodegraph name="NG_randomvector_float_vector2" nodedef="ND_randomvector_float_vector2">
     <swizzle name="N_swizzeMin" type="vector4">
-      <input name="in" type="vector3" interfacename="min" />
-      <input name="channels" type="string" value="xyzx" />
+      <input name="in" type="vector2" interfacename="min" />
+      <input name="channels" type="string" value="xyxy" />
     </swizzle>
     <swizzle name="N_swizzeMax" type="vector4">
-      <input name="in" type="vector3" interfacename="max" />
-      <input name="channels" type="string" value="xyzx" />
+      <input name="in" type="vector2" interfacename="max" />
+      <input name="channels" type="string" value="xyxy" />
     </swizzle>
     <convert name="N_convert1" type="vector4">
-      <input name="in" type="vector3" interfacename="in" />
+      <input name="in" type="float" interfacename="in" />
     </convert>
     <randomvector name="N_randomvector1" type="vector4">
       <input name="in" type="vector4" nodename="N_convert1" />
@@ -1386,32 +1227,40 @@
     <convert name="N_convert2" type="vector3">
       <input name="in" type="vector4" nodename="N_randomvector1" />
     </convert>
-    <output name="out" type="vector3" nodename="N_convert2" />
+    <convert name="N_convert5" type="vector2">
+      <input name="in" type="vector3" nodename="N_convert2" />
+    </convert>
+    <output name="out" type="vector2" nodename="N_convert5" />
   </nodegraph>
-  <nodegraph name="NG_randomvector_vector2_vector3" nodedef="ND_randomvector_vector2_vector3">
+  <nodegraph name="NG_randomvector_integer_vector2" nodedef="ND_randomvector_integer_vector2">
     <swizzle name="N_swizzeMin" type="vector4">
-      <input name="in" type="vector3" interfacename="min" />
-      <input name="channels" type="string" value="xyzx" />
+      <input name="in" type="vector2" interfacename="min" />
+      <input name="channels" type="string" value="xyxy" />
     </swizzle>
     <swizzle name="N_swizzeMax" type="vector4">
-      <input name="in" type="vector3" interfacename="max" />
-      <input name="channels" type="string" value="xyzx" />
-    </swizzle>
-    <swizzle name="N_convert1" type="vector4">
-      <input name="in" type="vector2" interfacename="in" />
+      <input name="in" type="vector2" interfacename="max" />
       <input name="channels" type="string" value="xyxy" />
     </swizzle>
+    <convert name="N_convert1" type="float">  
+      <input name="in" type="integer" interfacename="in" />
+    </convert>
+    <convert name="N_convert2" type="vector4">
+      <input name="in" type="float" nodename="N_convert1" />
+    </convert>
     <randomvector name="N_randomvector1" type="vector4">
-      <input name="in" type="vector4" nodename="N_convert1" />
+      <input name="in" type="vector4" nodename="N_convert2" />
       <input name="min" type="vector4" nodename="N_swizzeMin" />
       <input name="max" type="vector4" nodename="N_swizzeMax" />
       <input name="seed" type="float" interfacename="seed" />
       <input name="normalize" type="boolean" interfacename="normalize" />
     </randomvector>
-    <convert name="N_convert2" type="vector3">
+    <convert name="N_convert3" type="vector3">
       <input name="in" type="vector4" nodename="N_randomvector1" />
     </convert>
-    <output name="out" type="vector3" nodename="N_convert2" />
+    <convert name="N_convert5" type="vector2">
+      <input name="in" type="vector3" nodename="N_convert3" />
+    </convert>
+    <output name="out" type="vector2" nodename="N_convert5" />
   </nodegraph>
   <nodegraph name="NG_randomvector_float_vector3" nodedef="ND_randomvector_float_vector3">
     <swizzle name="N_swizzeMin" type="vector4">
@@ -1464,122 +1313,21 @@
     </convert>
     <output name="out" type="vector3" nodename="N_convert3" />
   </nodegraph>
-  <nodegraph name="NG_randomvector_vector4_vector2" nodedef="ND_randomvector_vector4_vector2">
-    <swizzle name="N_swizzeMin" type="vector4">
-      <input name="in" type="vector2" interfacename="min" />
-      <input name="channels" type="string" value="xyxy" />
-    </swizzle>
-    <swizzle name="N_swizzeMax" type="vector4">
-      <input name="in" type="vector2" interfacename="max" />
-      <input name="channels" type="string" value="xyxy" />
-    </swizzle>
-    <randomvector name="N_randomvector1" type="vector4">
-      <input name="in" type="vector4" interfacename="in" />
-      <input name="min" type="vector4" nodename="N_swizzeMin" />
-      <input name="max" type="vector4" nodename="N_swizzeMax" />
-      <input name="seed" type="float" interfacename="seed" />
-      <input name="normalize" type="boolean" interfacename="normalize" />
-    </randomvector>
-    <convert name="N_convert1" type="vector3">
-      <input name="in" type="vector4" nodename="N_randomvector1" />
-    </convert>
-    <convert name="N_convert5" type="vector2">
-      <input name="in" type="vector3" nodename="N_convert1" />
-    </convert>
-    <output name="out" type="vector2" nodename="N_convert5" />
-  </nodegraph>
-  <nodegraph name="NG_randomvector_vector3_vector2" nodedef="ND_randomvector_vector3_vector2">
-    <swizzle name="N_swizzeMin" type="vector4">
-      <input name="in" type="vector2" interfacename="min" />
-      <input name="channels" type="string" value="xyxy" />
-    </swizzle>
-    <swizzle name="N_swizzeMax" type="vector4">
-      <input name="in" type="vector2" interfacename="max" />
-      <input name="channels" type="string" value="xyxy" />
-    </swizzle>
-    <convert name="N_convert1" type="vector4">
-      <input name="in" type="vector3" interfacename="in" />
-    </convert>
-    <randomvector name="N_randomvector1" type="vector4">
-      <input name="in" type="vector4" nodename="N_convert1" />
-      <input name="min" type="vector4" nodename="N_swizzeMin" />
-      <input name="max" type="vector4" nodename="N_swizzeMax" />
-      <input name="seed" type="float" interfacename="seed" />
-      <input name="normalize" type="boolean" interfacename="normalize" />
-    </randomvector>
-    <convert name="N_convert2" type="vector3">
-      <input name="in" type="vector4" nodename="N_randomvector1" />
-    </convert>
-    <convert name="N_convert5" type="vector2">
-      <input name="in" type="vector3" nodename="N_convert2" />
-    </convert>
-    <output name="out" type="vector2" nodename="N_convert5" />
-  </nodegraph>
-  <nodegraph name="NG_randomvector_vector2_vector2" nodedef="ND_randomvector_vector2_vector2">
-    <swizzle name="N_swizzeMin" type="vector4">
-      <input name="in" type="vector2" interfacename="min" />
-      <input name="channels" type="string" value="xyxy" />
-    </swizzle>
-    <swizzle name="N_swizzeMax" type="vector4">
-      <input name="in" type="vector2" interfacename="max" />
-      <input name="channels" type="string" value="xyxy" />
-    </swizzle>
-    <swizzle name="N_convert1" type="vector4">
-      <input name="in" type="vector2" interfacename="in" />
-      <input name="channels" type="string" value="xyxy" />
-    </swizzle>
-    <randomvector name="N_randomvector1" type="vector4">
-      <input name="in" type="vector4" nodename="N_convert1" />
-      <input name="min" type="vector4" nodename="N_swizzeMin" />
-      <input name="max" type="vector4" nodename="N_swizzeMax" />
-      <input name="seed" type="float" interfacename="seed" />
-      <input name="normalize" type="boolean" interfacename="normalize" />
-    </randomvector>
-    <convert name="N_convert2" type="vector3">
-      <input name="in" type="vector4" nodename="N_randomvector1" />
-    </convert>
-    <convert name="N_convert5" type="vector2">
-      <input name="in" type="vector3" nodename="N_convert2" />
-    </convert>
-    <output name="out" type="vector2" nodename="N_convert5" />
-  </nodegraph>
-  <nodegraph name="NG_randomvector_float_vector2" nodedef="ND_randomvector_float_vector2">
-    <swizzle name="N_swizzeMin" type="vector4">
-      <input name="in" type="vector2" interfacename="min" />
-      <input name="channels" type="string" value="xyxy" />
-    </swizzle>
-    <swizzle name="N_swizzeMax" type="vector4">
-      <input name="in" type="vector2" interfacename="max" />
-      <input name="channels" type="string" value="xyxy" />
-    </swizzle>
+  <nodegraph name="NG_randomvector_float_vector4" nodedef="ND_randomvector_float_vector4">
     <convert name="N_convert1" type="vector4">
       <input name="in" type="float" interfacename="in" />
     </convert>
     <randomvector name="N_randomvector1" type="vector4">
       <input name="in" type="vector4" nodename="N_convert1" />
-      <input name="min" type="vector4" nodename="N_swizzeMin" />
-      <input name="max" type="vector4" nodename="N_swizzeMax" />
+      <input name="min" type="vector4" interfacename="min" />
+      <input name="max" type="vector4" interfacename="max" />
       <input name="seed" type="float" interfacename="seed" />
       <input name="normalize" type="boolean" interfacename="normalize" />
     </randomvector>
-    <convert name="N_convert2" type="vector3">
-      <input name="in" type="vector4" nodename="N_randomvector1" />
-    </convert>
-    <convert name="N_convert5" type="vector2">
-      <input name="in" type="vector3" nodename="N_convert2" />
-    </convert>
-    <output name="out" type="vector2" nodename="N_convert5" />
+    <output name="out" type="vector4" nodename="N_randomvector1" />
   </nodegraph>
-  <nodegraph name="NG_randomvector_integer_vector2" nodedef="ND_randomvector_integer_vector2">
-    <swizzle name="N_swizzeMin" type="vector4">
-      <input name="in" type="vector2" interfacename="min" />
-      <input name="channels" type="string" value="xyxy" />
-    </swizzle>
-    <swizzle name="N_swizzeMax" type="vector4">
-      <input name="in" type="vector2" interfacename="max" />
-      <input name="channels" type="string" value="xyxy" />
-    </swizzle>
-    <convert name="N_convert1" type="float">  
+  <nodegraph name="NG_randomvector_integer_vector4" nodedef="ND_randomvector_integer_vector4">
+    <convert name="N_convert1" type="float">
       <input name="in" type="integer" interfacename="in" />
     </convert>
     <convert name="N_convert2" type="vector4">
@@ -1587,18 +1335,61 @@
     </convert>
     <randomvector name="N_randomvector1" type="vector4">
       <input name="in" type="vector4" nodename="N_convert2" />
-      <input name="min" type="vector4" nodename="N_swizzeMin" />
-      <input name="max" type="vector4" nodename="N_swizzeMax" />
+      <input name="min" type="vector4" interfacename="min" />
+      <input name="max" type="vector4" interfacename="max" />
       <input name="seed" type="float" interfacename="seed" />
       <input name="normalize" type="boolean" interfacename="normalize" />
     </randomvector>
-    <convert name="N_convert3" type="vector3">
-      <input name="in" type="vector4" nodename="N_randomvector1" />
-    </convert>
-    <convert name="N_convert5" type="vector2">
-      <input name="in" type="vector3" nodename="N_convert3" />
+    <output name="out" type="vector4" nodename="N_randomvector1" />
+  </nodegraph>
+  <nodegraph name="NG_randomvector_vector4_vector4" nodedef="ND_randomvector_vector4_vector4">
+    <range name="N_range" type="vector4">
+      <input name="in" type="vector4" nodename="N_makeVector" />
+      <input name="outlow" type="vector4" interfacename="min" />
+      <input name="outhigh" type="vector4" interfacename="max" />
+      <input name="doclamp" type="boolean" value="true" />
+    </range>
+    <combine4 name="N_makeVector" type="vector4">
+      <input name="in1" type="float" nodename="N_randX" />
+      <input name="in2" type="float" nodename="N_randY" />
+      <input name="in3" type="float" nodename="N_randZ" />
+      <input name="in4" type="float" nodename="N_randW" />
+    </combine4>
+    <randomfloat name="N_randX" type="float">
+      <input name="in" type="float" nodename="N_addSeed" />
+      <input name="seed" type="float" value="1.3712" />
+    </randomfloat>
+    <add name="N_addSeed" type="float">
+      <input name="in1" type="float" nodename="N_inputMagnitude" />
+      <input name="in2" type="float" interfacename="seed" />
+    </add>
+    <magnitude name="N_inputMagnitude" type="float">
+      <input name="in" type="vector4" interfacename="in" />
+    </magnitude>
+    <randomfloat name="N_randY" type="float">
+      <input name="in" type="float" nodename="N_addSeed" />
+      <input name="seed" type="float" value="29.544" />
+    </randomfloat>
+    <randomfloat name="N_randZ" type="float">
+      <input name="in" type="float" nodename="N_addSeed" />
+      <input name="seed" type="float" value="78.046" />
+    </randomfloat>
+    <randomfloat name="N_randW" type="float">
+      <input name="in" type="float" nodename="N_addSeed" />
+      <input name="seed" type="float" value="524.97" />
+    </randomfloat>
+    <normalize name="N_normalize" type="vector4">
+      <input name="in" type="vector4" nodename="N_range" />
+    </normalize>
+    <convert name="N_convertNormalizeParm" type="float">
+      <input name="in" type="boolean" interfacename="normalize" />
     </convert>
-    <output name="out" type="vector2" nodename="N_convert5" />
+    <switch name="N_normalizeOutput" type="vector4">
+      <input name="in1" type="vector4" nodename="N_range" />
+      <input name="in2" type="vector4" nodename="N_normalize" />
+      <input name="which" type="float" nodename="N_convertNormalizeParm" />
+    </switch>
+    <output name="out" type="vector4" nodename="N_normalizeOutput" />
   </nodegraph>
 
   <!--
@@ -1692,202 +1483,6 @@
     </randomcolor>
     <output name="out" type="color3" nodename="N_randomcolor1" />
   </nodegraph>
-  <nodegraph name="NG_randomcolor_color3_color3" nodedef="ND_randomcolor_color3_color3">
-    <convert name="N_convert1" type="vector3">
-      <input name="in" type="color3" interfacename="in" />
-    </convert>
-    <magnitude name="N_magnitude1" type="float">
-      <input name="in" type="vector3" nodename="N_convert1" />
-    </magnitude>
-    <randomcolor name="N_randomcolor1" type="color3">
-      <input name="in" type="float" nodename="N_magnitude1" />
-      <input name="huelow" type="float" interfacename="huelow" />
-      <input name="huehigh" type="float" interfacename="huehigh" />
-      <input name="saturationlow" type="float" interfacename="saturationlow" />
-      <input name="saturationhigh" type="float" interfacename="saturationhigh" />
-      <input name="gammalow" type="float" interfacename="gammalow" />
-      <input name="gammahigh" type="float" interfacename="gammahigh" />
-      <input name="seed" type="float" interfacename="seed" />
-    </randomcolor>
-    <output name="out" type="color3" nodename="N_randomcolor1" />
-  </nodegraph>
-  <nodegraph name="NG_randomcolor_vector3_color3" nodedef="ND_randomcolor_vector3_color3">
-    <magnitude name="N_magnitude1" type="float">
-      <input name="in" type="vector3" interfacename="in" />
-    </magnitude>
-    <randomcolor name="N_randomcolor1" type="color3">
-      <input name="in" type="float" nodename="N_magnitude1" />
-      <input name="huelow" type="float" interfacename="huelow" />
-      <input name="huehigh" type="float" interfacename="huehigh" />
-      <input name="saturationlow" type="float" interfacename="saturationlow" />
-      <input name="saturationhigh" type="float" interfacename="saturationhigh" />
-      <input name="gammalow" type="float" interfacename="gammalow" />
-      <input name="gammahigh" type="float" interfacename="gammahigh" />
-      <input name="seed" type="float" interfacename="seed" />
-    </randomcolor>
-    <output name="out" type="color3" nodename="N_randomcolor1" />
-  </nodegraph>
-  <nodegraph name="NG_randomcolor_vector2_color3" nodedef="ND_randomcolor_vector2_color3">
-    <magnitude name="N_magnitude1" type="float">
-      <input name="in" type="vector2" interfacename="in" />
-    </magnitude>
-    <randomcolor name="N_randomcolor1" type="color3">
-      <input name="in" type="float" nodename="N_magnitude1" />
-      <input name="huelow" type="float" interfacename="huelow" />
-      <input name="huehigh" type="float" interfacename="huehigh" />
-      <input name="saturationlow" type="float" interfacename="saturationlow" />
-      <input name="saturationhigh" type="float" interfacename="saturationhigh" />
-      <input name="gammalow" type="float" interfacename="gammalow" />
-      <input name="gammahigh" type="float" interfacename="gammahigh" />
-      <input name="seed" type="float" interfacename="seed" />
-    </randomcolor>
-    <output name="out" type="color3" nodename="N_randomcolor1" />
-  </nodegraph>
-  <nodegraph name="NG_randomcolor_float_color4" nodedef="ND_randomcolor_float_color4">
-    <randomcolor name="N_randomcolor1" type="color3">
-      <input name="in" type="float" interfacename="in" />
-      <input name="huelow" type="float" interfacename="huelow" />
-      <input name="huehigh" type="float" interfacename="huehigh" />
-      <input name="saturationlow" type="float" interfacename="saturationlow" />
-      <input name="saturationhigh" type="float" interfacename="saturationhigh" />
-      <input name="gammalow" type="float" interfacename="gammalow" />
-      <input name="gammahigh" type="float" interfacename="gammahigh" />
-      <input name="seed" type="float" interfacename="seed" />
-    </randomcolor>
-    <randomfloat name="N_randomfloat2" type="float">
-      <input name="in" type="float" interfacename="in" />
-      <input name="seed" type="float" interfacename="seed" />
-    </randomfloat>
-    <separate3 name="N_splitColor" type="multioutput">
-      <input name="in" type="color3" nodename="N_randomcolor1" />
-    </separate3>
-    <combine4 name="N_combine_color" type="color4">
-      <input name="in1" type="float" nodename="N_splitColor" output="outr" />
-      <input name="in2" type="float" nodename="N_splitColor" output="outg" />
-      <input name="in3" type="float" nodename="N_splitColor" output="outb" />
-      <input name="in4" type="float" nodename="N_randomfloat2" />
-    </combine4>
-    <output name="out" type="color4" nodename="N_combine_color" />
-  </nodegraph>
-  <nodegraph name="NG_randomcolor_integer_color4" nodedef="ND_randomcolor_integer_color4">
-    <convert name="N_convert1" type="float">
-      <input name="in" type="integer" interfacename="in" />
-    </convert>
-    <randomcolor name="N_randomcolor1" type="color3">
-      <input name="in" type="float" nodename="N_convert1" />
-      <input name="huelow" type="float" interfacename="huelow" />
-      <input name="huehigh" type="float" interfacename="huehigh" />
-      <input name="saturationlow" type="float" interfacename="saturationlow" />
-      <input name="saturationhigh" type="float" interfacename="saturationhigh" />
-      <input name="gammalow" type="float" interfacename="gammalow" />
-      <input name="gammahigh" type="float" interfacename="gammahigh" />
-      <input name="seed" type="float" interfacename="seed" />
-    </randomcolor>
-    <randomfloat name="N_randomfloat2" type="float">
-      <input name="in" type="float" nodename="N_convert1" />
-      <input name="seed" type="float" interfacename="seed" />
-    </randomfloat>
-    <separate3 name="N_splitColor" type="multioutput">
-      <input name="in" type="color3" nodename="N_randomcolor1" />
-    </separate3>
-    <combine4 name="N_combine_color" type="color4">
-      <input name="in1" type="float" nodename="N_splitColor" output="outr" />
-      <input name="in2" type="float" nodename="N_splitColor" output="outg" />
-      <input name="in3" type="float" nodename="N_splitColor" output="outb" />
-      <input name="in4" type="float" nodename="N_randomfloat2" />
-    </combine4>
-    <output name="out" type="color4" nodename="N_combine_color" />
-  </nodegraph>
-  <nodegraph name="NG_randomcolor_color3_color4" nodedef="ND_randomcolor_color3_color4">
-    <convert name="N_convert1" type="vector3">
-      <input name="in" type="color3" interfacename="in" />
-    </convert>
-    <magnitude name="N_magnitude1" type="float">
-      <input name="in" type="vector3" nodename="N_convert1" />
-    </magnitude>
-    <randomcolor name="N_randomcolor1" type="color3">
-      <input name="in" type="float" nodename="N_magnitude1" />
-      <input name="huelow" type="float" interfacename="huelow" />
-      <input name="huehigh" type="float" interfacename="huehigh" />
-      <input name="saturationlow" type="float" interfacename="saturationlow" />
-      <input name="saturationhigh" type="float" interfacename="saturationhigh" />
-      <input name="gammalow" type="float" interfacename="gammalow" />
-      <input name="gammahigh" type="float" interfacename="gammahigh" />
-      <input name="seed" type="float" interfacename="seed" />
-    </randomcolor>
-    <randomfloat name="N_randomfloat2" type="float">
-      <input name="in" type="float" nodename="N_magnitude1" />
-      <input name="seed" type="float" interfacename="seed" />
-    </randomfloat>
-    <separate3 name="N_splitColor" type="multioutput">
-      <input name="in" type="color3" nodename="N_randomcolor1" />
-    </separate3>
-    <combine4 name="N_combine_color" type="color4">
-      <input name="in1" type="float" nodename="N_splitColor" output="outr" />
-      <input name="in2" type="float" nodename="N_splitColor" output="outg" />
-      <input name="in3" type="float" nodename="N_splitColor" output="outb" />
-      <input name="in4" type="float" nodename="N_randomfloat2" />
-    </combine4>
-    <output name="out" type="color4" nodename="N_combine_color" />
-  </nodegraph>
-  <nodegraph name="NG_randomcolor_vector3_color4" nodedef="ND_randomcolor_vector3_color4">
-    <magnitude name="N_magnitude1" type="float">
-      <input name="in" type="vector3" interfacename="in" />
-    </magnitude>
-    <randomcolor name="N_randomcolor1" type="color3">
-      <input name="in" type="float" nodename="N_magnitude1" />
-      <input name="huelow" type="float" interfacename="huelow" />
-      <input name="huehigh" type="float" interfacename="huehigh" />
-      <input name="saturationlow" type="float" interfacename="saturationlow" />
-      <input name="saturationhigh" type="float" interfacename="saturationhigh" />
-      <input name="gammalow" type="float" interfacename="gammalow" />
-      <input name="gammahigh" type="float" interfacename="gammahigh" />
-      <input name="seed" type="float" interfacename="seed" />
-    </randomcolor>
-    <randomfloat name="N_randomfloat2" type="float">
-      <input name="in" type="vector3" interfacename="in" />
-      <input name="seed" type="float" interfacename="seed" />
-    </randomfloat>
-    <separate3 name="N_splitColor" type="multioutput">
-      <input name="in" type="color3" nodename="N_randomcolor1" />
-    </separate3>
-    <combine4 name="N_combine_color" type="color4">
-      <input name="in1" type="float" nodename="N_splitColor" output="outr" />
-      <input name="in2" type="float" nodename="N_splitColor" output="outg" />
-      <input name="in3" type="float" nodename="N_splitColor" output="outb" />
-      <input name="in4" type="float" nodename="N_randomfloat2" />
-    </combine4>
-    <output name="out" type="color4" nodename="N_combine_color" />
-  </nodegraph>
-  <nodegraph name="NG_randomcolor_vector2_color4" nodedef="ND_randomcolor_vector2_color4">
-    <magnitude name="N_magnitude1" type="float">
-      <input name="in" type="vector2" interfacename="in" />
-    </magnitude>
-    <randomcolor name="N_randomcolor1" type="color3">
-      <input name="in" type="float" nodename="N_magnitude1" />
-      <input name="huelow" type="float" interfacename="huelow" />
-      <input name="huehigh" type="float" interfacename="huehigh" />
-      <input name="saturationlow" type="float" interfacename="saturationlow" />
-      <input name="saturationhigh" type="float" interfacename="saturationhigh" />
-      <input name="gammalow" type="float" interfacename="gammalow" />
-      <input name="gammahigh" type="float" interfacename="gammahigh" />
-      <input name="seed" type="float" interfacename="seed" />
-    </randomcolor>
-    <randomfloat name="N_randomfloat2" type="float">
-      <input name="in" type="vector2" interfacename="in" />
-      <input name="seed" type="float" interfacename="seed" />
-    </randomfloat>
-    <separate3 name="N_splitColor" type="multioutput">
-      <input name="in" type="color3" nodename="N_randomcolor1" />
-    </separate3>
-    <combine4 name="N_combine_color" type="color4">
-      <input name="in1" type="float" nodename="N_splitColor" output="outr" />
-      <input name="in2" type="float" nodename="N_splitColor" output="outg" />
-      <input name="in3" type="float" nodename="N_splitColor" output="outb" />
-      <input name="in4" type="float" nodename="N_randomfloat2" />
-    </combine4>
-    <output name="out" type="color4" nodename="N_combine_color" />
-  </nodegraph>
 
   <!--
     <checkerboard>

From a9fa8f3d1e2ea61b0337822d4a3ddb20768737c7 Mon Sep 17 00:00:00 2001
From: Jonathan Stone <jstone@lucasfilm.com>
Date: Wed, 24 May 2023 16:02:11 -0700
Subject: [PATCH 07/14] Minor newline fixes

---
 libraries/stdlib/stdlib_defs.mtlx | 2 --
 1 file changed, 2 deletions(-)

diff --git a/libraries/stdlib/stdlib_defs.mtlx b/libraries/stdlib/stdlib_defs.mtlx
index 7d40b0c460..2010ab7e43 100644
--- a/libraries/stdlib/stdlib_defs.mtlx
+++ b/libraries/stdlib/stdlib_defs.mtlx
@@ -1047,7 +1047,6 @@
     Node: <randomvector>
     Produces a randomized vector2, vector3, or vector4, based on an 'input' signal and 'seed' value.
   --> 
-
   <nodedef name="ND_randomvector_float_vector2" node="randomvector" nodegroup="procedural">
     <input name="in" type="float" uiname="Input" value="0.0" doc="Initial randomization seed." />
     <input name="min" type="vector2" uiname="Minimum" value="0.0, 0.0" doc="The minimum output value." />
@@ -1105,7 +1104,6 @@
     <output name="out" type="vector4" />
   </nodedef>
 
-
   <!--
     Node: <randomcolor>
     Produces a randomized RGB color, based on an 'input' signal and 'seed' value.

From 0ee0d8edd955abf0d5f76efc4cdd7d5d052f49c6 Mon Sep 17 00:00:00 2001
From: Jonathan Stone <jstone@lucasfilm.com>
Date: Wed, 24 May 2023 16:49:46 -0700
Subject: [PATCH 08/14] List nodes in processing order

---
 libraries/stdlib/stdlib_ng.mtlx | 28 ++++++++++++++--------------
 1 file changed, 14 insertions(+), 14 deletions(-)

diff --git a/libraries/stdlib/stdlib_ng.mtlx b/libraries/stdlib/stdlib_ng.mtlx
index 0a6369f01e..b4c80ff62b 100644
--- a/libraries/stdlib/stdlib_ng.mtlx
+++ b/libraries/stdlib/stdlib_ng.mtlx
@@ -1165,21 +1165,21 @@
     Produces a randomized float, based on an 'input' signal and 'seed' value.
   -->
   <nodegraph name="NG_randomfloat_float" nodedef="ND_randomfloat_float">
-    <cellnoise2d name="N_cellnoise_1" type="float">
-      <input name="texcoord" type="vector2" nodename="N_combine2" />
-    </cellnoise2d>
-    <combine2 name="N_combine2" type="vector2">
-      <input name="in1" type="float" nodename="N_subtract1" />
-      <input name="in2" type="float" nodename="N_offset_seed" />
-    </combine2>
-    <subtract name="N_subtract1" type="float">
-      <input name="in1" type="float" interfacename="in" />
-      <input name="in2" type="float" nodename="N_offset_seed" />
-    </subtract>
     <multiply name="N_offset_seed" type="float">
       <input name="in1" type="float" interfacename="seed" value="0" />
       <input name="in2" type="float" value="43758.5" />
     </multiply>
+    <subtract name="N_subtract1" type="float">
+      <input name="in1" type="float" interfacename="in" />
+      <input name="in2" type="float" nodename="N_offset_seed" />
+    </subtract>
+    <combine2 name="N_combine2" type="vector2">
+      <input name="in1" type="float" nodename="N_subtract1" />
+      <input name="in2" type="float" nodename="N_offset_seed" />
+    </combine2>
+    <cellnoise2d name="N_cellnoise_1" type="float">
+      <input name="texcoord" type="vector2" nodename="N_combine2" />
+    </cellnoise2d>
     <range name="N_remapRange" type="float">
       <input name="in" type="float" nodename="N_cellnoise_1" />
       <input name="inlow" type="float" value="0" />
@@ -1191,13 +1191,13 @@
     <output name="out" type="float" nodename="N_cellnoise_1" />
   </nodegraph>
   <nodegraph name="NG_randomfloat_integer" nodedef="ND_randomfloat_integer">
-    <convert name="N_convert1" type="float">
-      <input name="in" type="integer" interfacename="in" />
-    </convert>
     <randomfloat name="N_randomfloat1" type="float">
       <input name="in" type="float" nodename="N_convert1" />
       <input name="seed" type="float" interfacename="seed" />
     </randomfloat>
+    <convert name="N_convert1" type="float">
+      <input name="in" type="integer" interfacename="in" />
+    </convert>
     <output name="out" type="float" nodename="N_randomfloat1" />
   </nodegraph>
 

From 83bb66ab3196f960a2a690162e64c24f30cdc035 Mon Sep 17 00:00:00 2001
From: Jonathan Stone <jstone@lucasfilm.com>
Date: Wed, 24 May 2023 16:51:11 -0700
Subject: [PATCH 09/14] Remove duplicate binding

---
 libraries/stdlib/stdlib_ng.mtlx | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libraries/stdlib/stdlib_ng.mtlx b/libraries/stdlib/stdlib_ng.mtlx
index b4c80ff62b..18e95696c9 100644
--- a/libraries/stdlib/stdlib_ng.mtlx
+++ b/libraries/stdlib/stdlib_ng.mtlx
@@ -1166,7 +1166,7 @@
   -->
   <nodegraph name="NG_randomfloat_float" nodedef="ND_randomfloat_float">
     <multiply name="N_offset_seed" type="float">
-      <input name="in1" type="float" interfacename="seed" value="0" />
+      <input name="in1" type="float" interfacename="seed" />
       <input name="in2" type="float" value="43758.5" />
     </multiply>
     <subtract name="N_subtract1" type="float">

From b1ea6fc87d69d1491ad64cec91797cb0aebb84cd Mon Sep 17 00:00:00 2001
From: Jonathan Stone <jstone@lucasfilm.com>
Date: Wed, 24 May 2023 16:53:05 -0700
Subject: [PATCH 10/14] Remove inputs at defaults

---
 libraries/stdlib/stdlib_ng.mtlx | 2 --
 1 file changed, 2 deletions(-)

diff --git a/libraries/stdlib/stdlib_ng.mtlx b/libraries/stdlib/stdlib_ng.mtlx
index 18e95696c9..aa00ef88d9 100644
--- a/libraries/stdlib/stdlib_ng.mtlx
+++ b/libraries/stdlib/stdlib_ng.mtlx
@@ -1182,8 +1182,6 @@
     </cellnoise2d>
     <range name="N_remapRange" type="float">
       <input name="in" type="float" nodename="N_cellnoise_1" />
-      <input name="inlow" type="float" value="0" />
-      <input name="inhigh" type="float" value="1" />
       <input name="outlow" type="float" interfacename="min" />
       <input name="outhigh" type="float" interfacename="max" />
       <input name="doclamp" type="boolean" value="true" />

From b7cc021c4ba6bcc5368575b72e83292576e18b27 Mon Sep 17 00:00:00 2001
From: Jonathan Stone <jstone@lucasfilm.com>
Date: Wed, 24 May 2023 17:55:00 -0700
Subject: [PATCH 11/14] Order nodes for clarity

---
 libraries/stdlib/stdlib_ng.mtlx | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/libraries/stdlib/stdlib_ng.mtlx b/libraries/stdlib/stdlib_ng.mtlx
index aa00ef88d9..f4fa0b9f50 100644
--- a/libraries/stdlib/stdlib_ng.mtlx
+++ b/libraries/stdlib/stdlib_ng.mtlx
@@ -1189,13 +1189,13 @@
     <output name="out" type="float" nodename="N_cellnoise_1" />
   </nodegraph>
   <nodegraph name="NG_randomfloat_integer" nodedef="ND_randomfloat_integer">
+    <convert name="N_convert1" type="float">
+      <input name="in" type="integer" interfacename="in" />
+    </convert>
     <randomfloat name="N_randomfloat1" type="float">
       <input name="in" type="float" nodename="N_convert1" />
       <input name="seed" type="float" interfacename="seed" />
     </randomfloat>
-    <convert name="N_convert1" type="float">
-      <input name="in" type="integer" interfacename="in" />
-    </convert>
     <output name="out" type="float" nodename="N_randomfloat1" />
   </nodegraph>
 

From c62a18f0b7c77fc1a02f248f2799995ed2f82b12 Mon Sep 17 00:00:00 2001
From: Chris Rydalch <crydalch@gmail.com>
Date: Wed, 24 May 2023 21:24:52 -0500
Subject: [PATCH 12/14] Fixed some min/max output issues in randomfloat.

---
 libraries/stdlib/stdlib_ng.mtlx | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/libraries/stdlib/stdlib_ng.mtlx b/libraries/stdlib/stdlib_ng.mtlx
index f4fa0b9f50..cd61808469 100644
--- a/libraries/stdlib/stdlib_ng.mtlx
+++ b/libraries/stdlib/stdlib_ng.mtlx
@@ -1186,7 +1186,7 @@
       <input name="outhigh" type="float" interfacename="max" />
       <input name="doclamp" type="boolean" value="true" />
     </range>
-    <output name="out" type="float" nodename="N_cellnoise_1" />
+    <output name="out" type="float" nodename="N_remapRange" />
   </nodegraph>
   <nodegraph name="NG_randomfloat_integer" nodedef="ND_randomfloat_integer">
     <convert name="N_convert1" type="float">
@@ -1194,6 +1194,8 @@
     </convert>
     <randomfloat name="N_randomfloat1" type="float">
       <input name="in" type="float" nodename="N_convert1" />
+      <input name="min" type="float" interfacename="min" />
+      <input name="max" type="float" interfacename="max" />
       <input name="seed" type="float" interfacename="seed" />
     </randomfloat>
     <output name="out" type="float" nodename="N_randomfloat1" />

From dd4937c38454941ec0c8d69ca48f140321bc6203 Mon Sep 17 00:00:00 2001
From: Chris Rydalch <crydalch@gmail.com>
Date: Thu, 25 May 2023 18:26:20 -0500
Subject: [PATCH 13/14] Re-implement randomvector using randomfloat.

---
 libraries/stdlib/stdlib_defs.mtlx |   8 -
 libraries/stdlib/stdlib_ng.mtlx   | 286 ++++++++++++++++--------------
 2 files changed, 152 insertions(+), 142 deletions(-)

diff --git a/libraries/stdlib/stdlib_defs.mtlx b/libraries/stdlib/stdlib_defs.mtlx
index cde4229f81..54f9bb3d8b 100644
--- a/libraries/stdlib/stdlib_defs.mtlx
+++ b/libraries/stdlib/stdlib_defs.mtlx
@@ -1095,14 +1095,6 @@
     <input name="normalize" type="boolean" uiname="Normalize" value="false" doc="Normalize the output vector." />
     <output name="out" type="vector4" />
   </nodedef>
-  <nodedef name="ND_randomvector_vector4_vector4" node="randomvector" nodegroup="procedural">
-    <input name="in" type="vector4" uiname="Input" value="0.0, 0.0, 0.0, 0.0" doc="Initial randomization seed." />
-    <input name="min" type="vector4" uiname="Minimum" value="0.0, 0.0, 0.0, 0.0" doc="The minimum output value." />
-    <input name="max" type="vector4" uiname="Maximum" value="1.0, 1.0, 1.0, 1.0" doc="The maximum output value." />
-    <input name="seed" type="float" uiname="Seed" value="0.0" doc="Additional seed offset." />
-    <input name="normalize" type="boolean" uiname="Normalize" value="false" doc="Normalize the output vector." />
-    <output name="out" type="vector4" />
-  </nodedef>
 
   <!--
     Node: <randomcolor>
diff --git a/libraries/stdlib/stdlib_ng.mtlx b/libraries/stdlib/stdlib_ng.mtlx
index cd61808469..771688ed47 100644
--- a/libraries/stdlib/stdlib_ng.mtlx
+++ b/libraries/stdlib/stdlib_ng.mtlx
@@ -1206,191 +1206,209 @@
     Produces a randomized vector2, vector3, or vector4, based on an 'input' signal and 'seed' value.
   -->
   <nodegraph name="NG_randomvector_float_vector2" nodedef="ND_randomvector_float_vector2">
-    <swizzle name="N_swizzeMin" type="vector4">
+    <separate2 name="N_separatemin" type="multioutput">
       <input name="in" type="vector2" interfacename="min" />
-      <input name="channels" type="string" value="xyxy" />
-    </swizzle>
-    <swizzle name="N_swizzeMax" type="vector4">
+    </separate2>
+    <separate2 name="N_separatemax" type="multioutput">
       <input name="in" type="vector2" interfacename="max" />
-      <input name="channels" type="string" value="xyxy" />
-    </swizzle>
-    <convert name="N_convert1" type="vector4">
+    </separate2>
+    <randomfloat name="N_randomfloat1" type="float">
       <input name="in" type="float" interfacename="in" />
-    </convert>
-    <randomvector name="N_randomvector1" type="vector4">
-      <input name="in" type="vector4" nodename="N_convert1" />
-      <input name="min" type="vector4" nodename="N_swizzeMin" />
-      <input name="max" type="vector4" nodename="N_swizzeMax" />
+      <input name="min" type="float" nodename="N_separatemin" output="outx" />
+      <input name="max" type="float" nodename="N_separatemax" output="outx" />
       <input name="seed" type="float" interfacename="seed" />
-      <input name="normalize" type="boolean" interfacename="normalize" />
-    </randomvector>
-    <convert name="N_convert2" type="vector3">
-      <input name="in" type="vector4" nodename="N_randomvector1" />
-    </convert>
-    <convert name="N_convert5" type="vector2">
-      <input name="in" type="vector3" nodename="N_convert2" />
+    </randomfloat>
+    <add name="N_seed1" type="float">
+      <input name="in1" type="float" value="4.0469" />
+      <input name="in2" type="float" interfacename="seed" />
+    </add>
+    <randomfloat name="N_randomfloat2" type="float">
+      <input name="in" type="float" interfacename="in" />
+      <input name="min" type="float" nodename="N_separatemin" output="outy" />
+      <input name="max" type="float" nodename="N_separatemax" output="outy" />
+      <input name="seed" type="float" nodename="N_seed1" />
+    </randomfloat>
+    <combine2 name="N_makeVector" type="vector2">
+      <input name="in1" type="float" nodename="N_randomfloat1" />
+      <input name="in2" type="float" nodename="N_randomfloat2" />
+    </combine2>
+    <normalize name="N_normalize" type="vector2">
+      <input name="in" type="vector2" nodename="N_makeVector" />
+    </normalize>
+    <convert name="N_convertNormalizeParm" type="float">
+      <input name="in" type="boolean" interfacename="normalize" />
     </convert>
-    <output name="out" type="vector2" nodename="N_convert5" />
+    <switch name="N_normalizeOutput" type="vector2">
+      <input name="in1" type="vector2" nodename="N_makeVector" />
+      <input name="in2" type="vector2" nodename="N_normalize" />
+      <input name="which" type="float" nodename="N_convertNormalizeParm" />
+    </switch>    
+    <output name="out" type="vector2" nodename="N_normalizeOutput" />
   </nodegraph>
   <nodegraph name="NG_randomvector_integer_vector2" nodedef="ND_randomvector_integer_vector2">
-    <swizzle name="N_swizzeMin" type="vector4">
-      <input name="in" type="vector2" interfacename="min" />
-      <input name="channels" type="string" value="xyxy" />
-    </swizzle>
-    <swizzle name="N_swizzeMax" type="vector4">
-      <input name="in" type="vector2" interfacename="max" />
-      <input name="channels" type="string" value="xyxy" />
-    </swizzle>
-    <convert name="N_convert1" type="float">  
+    <convert name="N_convert1" type="float">
       <input name="in" type="integer" interfacename="in" />
     </convert>
-    <convert name="N_convert2" type="vector4">
+    <randomvector name="N_randomvector1" type="vector2">
       <input name="in" type="float" nodename="N_convert1" />
-    </convert>
-    <randomvector name="N_randomvector1" type="vector4">
-      <input name="in" type="vector4" nodename="N_convert2" />
-      <input name="min" type="vector4" nodename="N_swizzeMin" />
-      <input name="max" type="vector4" nodename="N_swizzeMax" />
+      <input name="min" type="vector2" interfacename="min" />
+      <input name="max" type="vector2" interfacename="max" />
       <input name="seed" type="float" interfacename="seed" />
       <input name="normalize" type="boolean" interfacename="normalize" />
     </randomvector>
-    <convert name="N_convert3" type="vector3">
-      <input name="in" type="vector4" nodename="N_randomvector1" />
-    </convert>
-    <convert name="N_convert5" type="vector2">
-      <input name="in" type="vector3" nodename="N_convert3" />
-    </convert>
-    <output name="out" type="vector2" nodename="N_convert5" />
+    <output name="out" type="vector2" nodename="N_randomvector1" />
   </nodegraph>
   <nodegraph name="NG_randomvector_float_vector3" nodedef="ND_randomvector_float_vector3">
-    <swizzle name="N_swizzeMin" type="vector4">
+    <separate3 name="N_separatemin" type="multioutput">
       <input name="in" type="vector3" interfacename="min" />
-      <input name="channels" type="string" value="xyzx" />
-    </swizzle>
-    <swizzle name="N_swizzeMax" type="vector4">
+    </separate3>
+    <separate3 name="N_separatemax" type="multioutput">
       <input name="in" type="vector3" interfacename="max" />
-      <input name="channels" type="string" value="xyzx" />
-    </swizzle>
-    <convert name="N_convert1" type="vector4">
+    </separate3>
+    <randomfloat name="N_randomfloat1" type="float">
       <input name="in" type="float" interfacename="in" />
-    </convert>
-    <randomvector name="N_randomvector1" type="vector4">
-      <input name="in" type="vector4" nodename="N_convert1" />
-      <input name="min" type="vector4" nodename="N_swizzeMin" />
-      <input name="max" type="vector4" nodename="N_swizzeMax" />
+      <input name="min" type="float" nodename="N_separatemin" output="outx" />
+      <input name="max" type="float" nodename="N_separatemax" output="outx" />
       <input name="seed" type="float" interfacename="seed" />
-      <input name="normalize" type="boolean" interfacename="normalize" />
-    </randomvector>
-    <convert name="N_convert2" type="vector3">
-      <input name="in" type="vector4" nodename="N_randomvector1" />
+    </randomfloat>
+    <add name="N_seed1" type="float">
+      <input name="in1" type="float" value="3.7233" />
+      <input name="in2" type="float" interfacename="seed" />
+    </add>
+    <randomfloat name="N_randomfloat2" type="float">
+      <input name="in" type="float" interfacename="in" />
+      <input name="min" type="float" nodename="N_separatemin" output="outy" />
+      <input name="max" type="float" nodename="N_separatemax" output="outy" />
+      <input name="seed" type="float" nodename="N_seed1" />
+    </randomfloat>
+    <add name="N_seed2" type="float">
+      <input name="in1" type="float" value="1.8516" />
+      <input name="in2" type="float" interfacename="seed" />
+    </add>
+    <randomfloat name="N_randomfloat3" type="float">
+      <input name="in" type="float" interfacename="in" />
+      <input name="min" type="float" nodename="N_separatemin" output="outz" />
+      <input name="max" type="float" nodename="N_separatemax" output="outz" />
+      <input name="seed" type="float" nodename="N_seed2" />
+    </randomfloat>
+    <combine3 name="N_makeVector" type="vector3">
+      <input name="in1" type="float" nodename="N_randomfloat1" />
+      <input name="in2" type="float" nodename="N_randomfloat2" />
+      <input name="in3" type="float" nodename="N_randomfloat3" />
+    </combine3>
+    <normalize name="N_normalize" type="vector3">
+      <input name="in" type="vector3" nodename="N_makeVector" />
+    </normalize>
+    <convert name="N_convertNormalizeParm" type="float">
+      <input name="in" type="boolean" interfacename="normalize" />
     </convert>
-    <output name="out" type="vector3" nodename="N_convert2" />
+    <switch name="N_normalizeOutput" type="vector3">
+      <input name="in1" type="vector3" nodename="N_makeVector" />
+      <input name="in2" type="vector3" nodename="N_normalize" />
+      <input name="which" type="float" nodename="N_convertNormalizeParm" />
+    </switch>    
+    <output name="out" type="vector3" nodename="N_normalizeOutput" />
   </nodegraph>
   <nodegraph name="NG_randomvector_integer_vector3" nodedef="ND_randomvector_integer_vector3">
-    <swizzle name="N_swizzeMin" type="vector4">
+    <separate3 name="N_separatemin" type="multioutput">
       <input name="in" type="vector3" interfacename="min" />
-      <input name="channels" type="string" value="xyzx" />
-    </swizzle>
-    <swizzle name="N_swizzeMax" type="vector4">
+    </separate3>
+    <separate3 name="N_separatemax" type="multioutput">
       <input name="in" type="vector3" interfacename="max" />
-      <input name="channels" type="string" value="xyzx" />
-    </swizzle>
+    </separate3>
     <convert name="N_convert1" type="float">
       <input name="in" type="integer" interfacename="in" />
     </convert>
-    <convert name="N_convert2" type="vector4">
+    <randomvector name="N_randomvector1" type="vector3">
       <input name="in" type="float" nodename="N_convert1" />
-    </convert>
-    <randomvector name="N_randomvector1" type="vector4">
-      <input name="in" type="vector4" nodename="N_convert2" />
-      <input name="min" type="vector4" nodename="N_swizzeMin" />
-      <input name="max" type="vector4" nodename="N_swizzeMax" />
+      <input name="min" type="vector3" interfacename="min" />
+      <input name="max" type="vector3" interfacename="max" />
       <input name="seed" type="float" interfacename="seed" />
       <input name="normalize" type="boolean" interfacename="normalize" />
     </randomvector>
-    <convert name="N_convert3" type="vector3">
-      <input name="in" type="vector4" nodename="N_randomvector1" />
-    </convert>
-    <output name="out" type="vector3" nodename="N_convert3" />
+    <output name="out" type="vector3" nodename="N_randomvector1" />
   </nodegraph>
   <nodegraph name="NG_randomvector_float_vector4" nodedef="ND_randomvector_float_vector4">
-    <convert name="N_convert1" type="vector4">
+    <separate4 name="N_separatemin" type="multioutput">
+      <input name="in" type="vector4" interfacename="min" />
+    </separate4>
+    <separate4 name="N_separatemax" type="multioutput">
+      <input name="in" type="vector4" interfacename="max" />
+    </separate4>
+    <randomfloat name="N_randomfloat1" type="float">
       <input name="in" type="float" interfacename="in" />
-    </convert>
-    <randomvector name="N_randomvector1" type="vector4">
-      <input name="in" type="vector4" nodename="N_convert1" />
-      <input name="min" type="vector4" interfacename="min" />
-      <input name="max" type="vector4" interfacename="max" />
+      <input name="min" type="float" nodename="N_separatemin" output="outx" />
+      <input name="max" type="float" nodename="N_separatemax" output="outx" />
       <input name="seed" type="float" interfacename="seed" />
-      <input name="normalize" type="boolean" interfacename="normalize" />
-    </randomvector>
-    <output name="out" type="vector4" nodename="N_randomvector1" />
-  </nodegraph>
-  <nodegraph name="NG_randomvector_integer_vector4" nodedef="ND_randomvector_integer_vector4">
-    <convert name="N_convert1" type="float">
-      <input name="in" type="integer" interfacename="in" />
-    </convert>
-    <convert name="N_convert2" type="vector4">
-      <input name="in" type="float" nodename="N_convert1" />
-    </convert>
-    <randomvector name="N_randomvector1" type="vector4">
-      <input name="in" type="vector4" nodename="N_convert2" />
-      <input name="min" type="vector4" interfacename="min" />
-      <input name="max" type="vector4" interfacename="max" />
-      <input name="seed" type="float" interfacename="seed" />
-      <input name="normalize" type="boolean" interfacename="normalize" />
-    </randomvector>
-    <output name="out" type="vector4" nodename="N_randomvector1" />
-  </nodegraph>
-  <nodegraph name="NG_randomvector_vector4_vector4" nodedef="ND_randomvector_vector4_vector4">
-    <range name="N_range" type="vector4">
-      <input name="in" type="vector4" nodename="N_makeVector" />
-      <input name="outlow" type="vector4" interfacename="min" />
-      <input name="outhigh" type="vector4" interfacename="max" />
-      <input name="doclamp" type="boolean" value="true" />
-    </range>
-    <combine4 name="N_makeVector" type="vector4">
-      <input name="in1" type="float" nodename="N_randX" />
-      <input name="in2" type="float" nodename="N_randY" />
-      <input name="in3" type="float" nodename="N_randZ" />
-      <input name="in4" type="float" nodename="N_randW" />
-    </combine4>
-    <randomfloat name="N_randX" type="float">
-      <input name="in" type="float" nodename="N_addSeed" />
-      <input name="seed" type="float" value="1.3712" />
     </randomfloat>
-    <add name="N_addSeed" type="float">
-      <input name="in1" type="float" nodename="N_inputMagnitude" />
+    <add name="N_seed1" type="float">
+      <input name="in1" type="float" value="7.10438" />
       <input name="in2" type="float" interfacename="seed" />
     </add>
-    <magnitude name="N_inputMagnitude" type="float">
-      <input name="in" type="vector4" interfacename="in" />
-    </magnitude>
-    <randomfloat name="N_randY" type="float">
-      <input name="in" type="float" nodename="N_addSeed" />
-      <input name="seed" type="float" value="29.544" />
+    <randomfloat name="N_randomfloat2" type="float">
+      <input name="in" type="float" interfacename="in" />
+      <input name="min" type="float" nodename="N_separatemin" output="outy" />
+      <input name="max" type="float" nodename="N_separatemax" output="outy" />
+      <input name="seed" type="float" nodename="N_seed1" />
     </randomfloat>
-    <randomfloat name="N_randZ" type="float">
-      <input name="in" type="float" nodename="N_addSeed" />
-      <input name="seed" type="float" value="78.046" />
+    <add name="N_seed2" type="float">
+      <input name="in1" type="float" value="2.95425" />
+      <input name="in2" type="float" interfacename="seed" />
+    </add>
+    <randomfloat name="N_randomfloat3" type="float">
+      <input name="in" type="float" interfacename="in" />
+      <input name="min" type="float" nodename="N_separatemin" output="outz" />
+      <input name="max" type="float" nodename="N_separatemax" output="outz" />
+      <input name="seed" type="float" nodename="N_seed2" />
     </randomfloat>
-    <randomfloat name="N_randW" type="float">
-      <input name="in" type="float" nodename="N_addSeed" />
-      <input name="seed" type="float" value="524.97" />
+    <add name="N_seed3" type="float">
+      <input name="in1" type="float" value="6.26189" />
+      <input name="in2" type="float" interfacename="seed" />
+    </add>
+    <randomfloat name="N_randomfloat4" type="float">
+      <input name="in" type="float" interfacename="in" />
+      <input name="min" type="float" nodename="N_separatemin" output="outw" />
+      <input name="max" type="float" nodename="N_separatemax" output="outw" />
+      <input name="seed" type="float" nodename="N_seed3" />
     </randomfloat>
+    <combine4 name="N_makeVector" type="vector4">
+      <input name="in1" type="float" nodename="N_randomfloat1" />
+      <input name="in2" type="float" nodename="N_randomfloat2" />
+      <input name="in3" type="float" nodename="N_randomfloat3" />
+      <input name="in4" type="float" nodename="N_randomfloat4" />
+    </combine4>
     <normalize name="N_normalize" type="vector4">
-      <input name="in" type="vector4" nodename="N_range" />
+      <input name="in" type="vector4" nodename="N_makeVector" />
     </normalize>
     <convert name="N_convertNormalizeParm" type="float">
       <input name="in" type="boolean" interfacename="normalize" />
     </convert>
     <switch name="N_normalizeOutput" type="vector4">
-      <input name="in1" type="vector4" nodename="N_range" />
+      <input name="in1" type="vector4" nodename="N_makeVector" />
       <input name="in2" type="vector4" nodename="N_normalize" />
       <input name="which" type="float" nodename="N_convertNormalizeParm" />
-    </switch>
+    </switch>    
     <output name="out" type="vector4" nodename="N_normalizeOutput" />
   </nodegraph>
+  <nodegraph name="NG_randomvector_integer_vector4" nodedef="ND_randomvector_integer_vector4">
+    <separate4 name="N_separatemin" type="multioutput">
+      <input name="in" type="vector4" interfacename="min" />
+    </separate4>
+    <separate4 name="N_separatemax" type="multioutput">
+      <input name="in" type="vector4" interfacename="max" />
+    </separate4>
+    <convert name="N_convert1" type="float">
+      <input name="in" type="integer" interfacename="in" />
+    </convert>
+    <randomvector name="N_randomvector1" type="vector4">
+      <input name="in" type="float" nodename="N_convert1" />
+      <input name="min" type="vector4" interfacename="min" />
+      <input name="max" type="vector4" interfacename="max" />
+      <input name="seed" type="float" interfacename="seed" />
+      <input name="normalize" type="boolean" interfacename="normalize" />
+    </randomvector>
+    <output name="out" type="vector4" nodename="N_randomvector1" />
+  </nodegraph>
 
   <!--
     Node: <randomcolor>

From 01128a6374466c6815a5a3abc635e5d68644b915 Mon Sep 17 00:00:00 2001
From: Chris Rydalch <crydalch@gmail.com>
Date: Fri, 16 Jun 2023 09:10:43 -0500
Subject: [PATCH 14/14] Improved the randomfloat implementations, seed is now
 an integer, and removed the randomvector nodes for now (those can be tackled
 at a later time).

---
 libraries/stdlib/stdlib_defs.mtlx |  73 +------
 libraries/stdlib/stdlib_ng.mtlx   | 343 ++++++------------------------
 2 files changed, 79 insertions(+), 337 deletions(-)

diff --git a/libraries/stdlib/stdlib_defs.mtlx b/libraries/stdlib/stdlib_defs.mtlx
index 64dcca18fa..4aa82582be 100644
--- a/libraries/stdlib/stdlib_defs.mtlx
+++ b/libraries/stdlib/stdlib_defs.mtlx
@@ -1032,94 +1032,41 @@
     <input name="in" type="float" uiname="Input" value="0.0" doc="Initial randomization seed." />
     <input name="min" type="float" uiname="Minimum" value="0.0" doc="The minimum output value." />
     <input name="max" type="float" uiname="Maximum" value="1.0" doc="The maximum output value." />
-    <input name="seed" type="float" uiname="Seed" value="0.0" doc="Additional seed offset." />
+    <input name="seed" type="integer" uiname="Seed" value="0" doc="Additional seed." />
     <output name="out" type="float" />
   </nodedef>
   <nodedef name="ND_randomfloat_integer" node="randomfloat" nodegroup="procedural">
     <input name="in" type="integer" uiname="Input" value="0" />
     <input name="min" type="float" uiname="Minimum" value="0.0" />
     <input name="max" type="float" uiname="Maximum" value="1.0" />
-    <input name="seed" type="float" uiname="Seed" value="0.0" />
+    <input name="seed" type="integer" uiname="Seed" value="0" />
     <output name="out" type="float" />
   </nodedef>
 
-  <!--
-    Node: <randomvector>
-    Produces a randomized vector2, vector3, or vector4, based on an 'input' signal and 'seed' value.
-  --> 
-  <nodedef name="ND_randomvector_float_vector2" node="randomvector" nodegroup="procedural">
-    <input name="in" type="float" uiname="Input" value="0.0" doc="Initial randomization seed." />
-    <input name="min" type="vector2" uiname="Minimum" value="0.0, 0.0" doc="The minimum output value." />
-    <input name="max" type="vector2" uiname="Maximum" value="1.0, 1.0" doc="The maximum output value." />
-    <input name="seed" type="float" uiname="Seed" value="0.0" doc="Additional seed offset." />
-    <input name="normalize" type="boolean" uiname="Normalize" value="false" doc="Normalize the output vector." />
-    <output name="out" type="vector2" />
-  </nodedef>
-  <nodedef name="ND_randomvector_integer_vector2" node="randomvector" nodegroup="procedural">
-    <input name="in" type="integer" uiname="Input" value="0" doc="Initial randomization seed." />
-    <input name="min" type="vector2" uiname="Minimum" value="0.0, 0.0" doc="The minimum output value." />
-    <input name="max" type="vector2" uiname="Maximum" value="1.0, 1.0" doc="The maximum output value." />
-    <input name="seed" type="float" uiname="Seed" value="0.0" doc="Additional seed offset." />
-    <input name="normalize" type="boolean" uiname="Normalize" value="false" doc="Normalize the output vector." />
-    <output name="out" type="vector2" />
-  </nodedef>
-  <nodedef name="ND_randomvector_float_vector3" node="randomvector" nodegroup="procedural">
-    <input name="in" type="float" uiname="Input" value="0.0" doc="Initial randomization seed." />
-    <input name="min" type="vector3" uiname="Minimum" value="0.0, 0.0, 0.0" doc="The minimum output value." />
-    <input name="max" type="vector3" uiname="Maximum" value="1.0, 1.0, 1.0" doc="The maximum output value." />
-    <input name="seed" type="float" uiname="Seed" value="0.0" doc="Additional seed offset." />
-    <input name="normalize" type="boolean" uiname="Normalize" value="false" doc="Normalize the output vector." />
-    <output name="out" type="vector3" />
-  </nodedef>
-  <nodedef name="ND_randomvector_integer_vector3" node="randomvector" nodegroup="procedural">
-    <input name="in" type="integer" uiname="Input" value="0" doc="Initial randomization seed." />
-    <input name="min" type="vector3" uiname="Minimum" value="0.0, 0.0, 0.0" doc="The minimum output value." />
-    <input name="max" type="vector3" uiname="Maximum" value="1.0, 1.0, 1.0" doc="The maximum output value." />
-    <input name="seed" type="float" uiname="Seed" value="0.0" doc="Additional seed offset." />
-    <input name="normalize" type="boolean" uiname="Normalize" value="false" doc="Normalize the output vector." />
-    <output name="out" type="vector3" />
-  </nodedef>
-  <nodedef name="ND_randomvector_float_vector4" node="randomvector" nodegroup="procedural">
-    <input name="in" type="float" uiname="Input" value="0.0" doc="Initial randomization seed." />
-    <input name="min" type="vector4" uiname="Minimum" value="0.0, 0.0, 0.0, 0.0" doc="The minimum output value." />
-    <input name="max" type="vector4" uiname="Maximum" value="1.0, 1.0, 1.0, 1.0" doc="The maximum output value." />
-    <input name="seed" type="float" uiname="Seed" value="0.0" doc="Additional seed offset." />
-    <input name="normalize" type="boolean" uiname="Normalize" value="false" doc="Normalize the output vector." />
-    <output name="out" type="vector4" />
-  </nodedef>
-  <nodedef name="ND_randomvector_integer_vector4" node="randomvector" nodegroup="procedural">
-    <input name="in" type="integer" uiname="Input" value="0" doc="Initial randomization seed." />
-    <input name="min" type="vector4" uiname="Minimum" value="0.0, 0.0, 0.0, 0.0" doc="The minimum output value." />
-    <input name="max" type="vector4" uiname="Maximum" value="1.0, 1.0, 1.0, 1.0" doc="The maximum output value." />
-    <input name="seed" type="float" uiname="Seed" value="0.0" doc="Additional seed offset." />
-    <input name="normalize" type="boolean" uiname="Normalize" value="false" doc="Normalize the output vector." />
-    <output name="out" type="vector4" />
-  </nodedef>
-
   <!--
     Node: <randomcolor>
     Produces a randomized RGB color, based on an 'input' signal and 'seed' value.
   -->
-  <nodedef name="ND_randomcolor_float_color3" node="randomcolor" nodegroup="procedural3d">
+  <nodedef name="ND_randomcolor_float" node="randomcolor" nodegroup="procedural3d">
     <input name="in" type="float" uiname="Input" uisoftmin="0.0" uisoftmax="10.0" value="0.0" />
     <input name="huelow" type="float" uiname="Hue Low" uisoftmin="0.0" uisoftmax="1.0" value="0" />
     <input name="huehigh" type="float" uiname="Hue High" uisoftmin="0.0" uisoftmax="1.0" value="1" />
     <input name="saturationlow" type="float" uiname="Saturation Low" uisoftmin="0.0" uisoftmax="1.0" value="0.825" />
     <input name="saturationhigh" type="float" uiname="Saturation High" uisoftmin="0.0" uisoftmax="1.0" value="1" />
-    <input name="gammalow" type="float" uiname="Gamma Low" uisoftmin="0.0" uisoftmax="3.0" value="1" />
-    <input name="gammahigh" type="float" uiname="Gamma High" uisoftmin="0.0" uisoftmax="3.0" value="1" />
-    <input name="seed" type="float" uiname="Seed" value="0" />
+    <input name="brightnesslow" type="float" uiname="Brightness Low" uisoftmin="0.0" uisoftmax="1.0" value="1" />
+    <input name="brightnesshigh" type="float" uiname="Brightness High" uisoftmin="0.0" uisoftmax="1.0" value="1" />
+    <input name="seed" type="integer" uiname="Seed" value="0" />
     <output name="out" type="color3" />
   </nodedef>
-  <nodedef name="ND_randomcolor_integer_color3" node="randomcolor" nodegroup="procedural3d">
+  <nodedef name="ND_randomcolor_integer" node="randomcolor" nodegroup="procedural3d">
     <input name="in" type="integer" uiname="Input" uisoftmin="0" uisoftmax="10" value="0" />
     <input name="huelow" type="float" uiname="Hue Low" uisoftmin="0.0" uisoftmax="1.0" value="0" />
     <input name="huehigh" type="float" uiname="Hue High" uisoftmin="0.0" uisoftmax="1.0" value="1" />
     <input name="saturationlow" type="float" uiname="Saturation Low" uisoftmin="0.0" uisoftmax="1.0" value="0.825" />
     <input name="saturationhigh" type="float" uiname="Saturation High" uisoftmin="0.0" uisoftmax="1.0" value="1" />
-    <input name="gammalow" type="float" uiname="Gamma Low" uisoftmin="0.0" uisoftmax="3.0" value="1" />
-    <input name="gammahigh" type="float" uiname="Gamma High" uisoftmin="0.0" uisoftmax="3.0" value="1" />
-    <input name="seed" type="float" uiname="Seed" value="0" />
+    <input name="brightnesslow" type="float" uiname="Brightness Low" uisoftmin="0.0" uisoftmax="1.0" value="1" />
+    <input name="brightnesshigh" type="float" uiname="Brightness High" uisoftmin="0.0" uisoftmax="1.0" value="1" />
+    <input name="seed" type="integer" uiname="Seed" value="0" />
     <output name="out" type="color3" />
   </nodedef>
 
diff --git a/libraries/stdlib/stdlib_ng.mtlx b/libraries/stdlib/stdlib_ng.mtlx
index 771688ed47..394f953e11 100644
--- a/libraries/stdlib/stdlib_ng.mtlx
+++ b/libraries/stdlib/stdlib_ng.mtlx
@@ -1165,23 +1165,26 @@
     Produces a randomized float, based on an 'input' signal and 'seed' value.
   -->
   <nodegraph name="NG_randomfloat_float" nodedef="ND_randomfloat_float">
-    <multiply name="N_offset_seed" type="float">
-      <input name="in1" type="float" interfacename="seed" />
-      <input name="in2" type="float" value="43758.5" />
-    </multiply>
-    <subtract name="N_subtract1" type="float">
+    <convert name="N_convertSeed1" type="float">
+      <input name="in" type="integer" interfacename="seed" />
+    </convert>
+    <modulo name="N_moduloInput" type="float">
       <input name="in1" type="float" interfacename="in" />
-      <input name="in2" type="float" nodename="N_offset_seed" />
-    </subtract>
+      <input name="in2" type="float" value="4219" />
+    </modulo>
+    <multiply name="N_scaleInput" type="float">
+      <input name="in1" type="float" nodename="N_moduloInput" />
+      <input name="in2" type="float" value="3947" />
+    </multiply>
     <combine2 name="N_combine2" type="vector2">
-      <input name="in1" type="float" nodename="N_subtract1" />
-      <input name="in2" type="float" nodename="N_offset_seed" />
+      <input name="in1" type="float" nodename="N_scaleInput" />
+      <input name="in2" type="float" nodename="N_convertSeed1" />
     </combine2>
-    <cellnoise2d name="N_cellnoise_1" type="float">
+    <cellnoise2d name="N_cellnoise1" type="float">
       <input name="texcoord" type="vector2" nodename="N_combine2" />
     </cellnoise2d>
     <range name="N_remapRange" type="float">
-      <input name="in" type="float" nodename="N_cellnoise_1" />
+      <input name="in" type="float" nodename="N_cellnoise1" />
       <input name="outlow" type="float" interfacename="min" />
       <input name="outhigh" type="float" interfacename="max" />
       <input name="doclamp" type="boolean" value="true" />
@@ -1189,303 +1192,95 @@
     <output name="out" type="float" nodename="N_remapRange" />
   </nodegraph>
   <nodegraph name="NG_randomfloat_integer" nodedef="ND_randomfloat_integer">
-    <convert name="N_convert1" type="float">
+    <convert name="N_convertInput1" type="float">
       <input name="in" type="integer" interfacename="in" />
     </convert>
-    <randomfloat name="N_randomfloat1" type="float">
-      <input name="in" type="float" nodename="N_convert1" />
-      <input name="min" type="float" interfacename="min" />
-      <input name="max" type="float" interfacename="max" />
-      <input name="seed" type="float" interfacename="seed" />
-    </randomfloat>
-    <output name="out" type="float" nodename="N_randomfloat1" />
+    <convert name="N_convertSeed1" type="float">
+      <input name="in" type="integer" interfacename="seed" />
+    </convert>
+    <combine2 name="N_combine2" type="vector2">
+      <input name="in1" type="float" nodename="N_convertInput1" />
+      <input name="in2" type="float" nodename="N_convertSeed1" />
+    </combine2>
+    <cellnoise2d name="N_cellnoise1" type="float">
+      <input name="texcoord" type="vector2" nodename="N_combine2" />
+    </cellnoise2d>
+    <range name="N_remapRange" type="float">
+      <input name="in" type="float" nodename="N_cellnoise1" />
+      <input name="outlow" type="float" interfacename="min" />
+      <input name="outhigh" type="float" interfacename="max" />
+      <input name="doclamp" type="boolean" value="true" />
+    </range>
+    <output name="out" type="float" nodename="N_remapRange" />
   </nodegraph>
 
   <!--
-    Node: <randomvector>
-    Produces a randomized vector2, vector3, or vector4, based on an 'input' signal and 'seed' value.
+    Node: <randomcolor>
+    Produces a randomized color, based on an input signal and seed value.
   -->
-  <nodegraph name="NG_randomvector_float_vector2" nodedef="ND_randomvector_float_vector2">
-    <separate2 name="N_separatemin" type="multioutput">
-      <input name="in" type="vector2" interfacename="min" />
-    </separate2>
-    <separate2 name="N_separatemax" type="multioutput">
-      <input name="in" type="vector2" interfacename="max" />
-    </separate2>
-    <randomfloat name="N_randomfloat1" type="float">
-      <input name="in" type="float" interfacename="in" />
-      <input name="min" type="float" nodename="N_separatemin" output="outx" />
-      <input name="max" type="float" nodename="N_separatemax" output="outx" />
-      <input name="seed" type="float" interfacename="seed" />
-    </randomfloat>
-    <add name="N_seed1" type="float">
-      <input name="in1" type="float" value="4.0469" />
-      <input name="in2" type="float" interfacename="seed" />
-    </add>
-    <randomfloat name="N_randomfloat2" type="float">
-      <input name="in" type="float" interfacename="in" />
-      <input name="min" type="float" nodename="N_separatemin" output="outy" />
-      <input name="max" type="float" nodename="N_separatemax" output="outy" />
-      <input name="seed" type="float" nodename="N_seed1" />
-    </randomfloat>
-    <combine2 name="N_makeVector" type="vector2">
-      <input name="in1" type="float" nodename="N_randomfloat1" />
-      <input name="in2" type="float" nodename="N_randomfloat2" />
-    </combine2>
-    <normalize name="N_normalize" type="vector2">
-      <input name="in" type="vector2" nodename="N_makeVector" />
-    </normalize>
-    <convert name="N_convertNormalizeParm" type="float">
-      <input name="in" type="boolean" interfacename="normalize" />
-    </convert>
-    <switch name="N_normalizeOutput" type="vector2">
-      <input name="in1" type="vector2" nodename="N_makeVector" />
-      <input name="in2" type="vector2" nodename="N_normalize" />
-      <input name="which" type="float" nodename="N_convertNormalizeParm" />
-    </switch>    
-    <output name="out" type="vector2" nodename="N_normalizeOutput" />
-  </nodegraph>
-  <nodegraph name="NG_randomvector_integer_vector2" nodedef="ND_randomvector_integer_vector2">
-    <convert name="N_convert1" type="float">
-      <input name="in" type="integer" interfacename="in" />
+  <nodegraph name="NG_randomcolor_float" nodedef="ND_randomcolor_float">
+    <convert name="N_convertSeed1" type="float">
+      <input name="in" type="integer" interfacename="seed" />
     </convert>
-    <randomvector name="N_randomvector1" type="vector2">
-      <input name="in" type="float" nodename="N_convert1" />
-      <input name="min" type="vector2" interfacename="min" />
-      <input name="max" type="vector2" interfacename="max" />
-      <input name="seed" type="float" interfacename="seed" />
-      <input name="normalize" type="boolean" interfacename="normalize" />
-    </randomvector>
-    <output name="out" type="vector2" nodename="N_randomvector1" />
-  </nodegraph>
-  <nodegraph name="NG_randomvector_float_vector3" nodedef="ND_randomvector_float_vector3">
-    <separate3 name="N_separatemin" type="multioutput">
-      <input name="in" type="vector3" interfacename="min" />
-    </separate3>
-    <separate3 name="N_separatemax" type="multioutput">
-      <input name="in" type="vector3" interfacename="max" />
-    </separate3>
-    <randomfloat name="N_randomfloat1" type="float">
-      <input name="in" type="float" interfacename="in" />
-      <input name="min" type="float" nodename="N_separatemin" output="outx" />
-      <input name="max" type="float" nodename="N_separatemax" output="outx" />
-      <input name="seed" type="float" interfacename="seed" />
-    </randomfloat>
-    <add name="N_seed1" type="float">
-      <input name="in1" type="float" value="3.7233" />
-      <input name="in2" type="float" interfacename="seed" />
+    <add name="N_offset_hue" type="float">
+      <input name="in1" type="float" nodename="N_convertSeed1" />
+      <input name="in2" type="float" value="413.3" />
     </add>
-    <randomfloat name="N_randomfloat2" type="float">
-      <input name="in" type="float" interfacename="in" />
-      <input name="min" type="float" nodename="N_separatemin" output="outy" />
-      <input name="max" type="float" nodename="N_separatemax" output="outy" />
-      <input name="seed" type="float" nodename="N_seed1" />
-    </randomfloat>
-    <add name="N_seed2" type="float">
-      <input name="in1" type="float" value="1.8516" />
-      <input name="in2" type="float" interfacename="seed" />
+    <add name="N_offset_saturation" type="float">
+      <input name="in1" type="float" nodename="N_convertSeed1" />
+      <input name="in2" type="float" value="1522.4" />
     </add>
-    <randomfloat name="N_randomfloat3" type="float">
-      <input name="in" type="float" interfacename="in" />
-      <input name="min" type="float" nodename="N_separatemin" output="outz" />
-      <input name="max" type="float" nodename="N_separatemax" output="outz" />
-      <input name="seed" type="float" nodename="N_seed2" />
-    </randomfloat>
-    <combine3 name="N_makeVector" type="vector3">
-      <input name="in1" type="float" nodename="N_randomfloat1" />
-      <input name="in2" type="float" nodename="N_randomfloat2" />
-      <input name="in3" type="float" nodename="N_randomfloat3" />
-    </combine3>
-    <normalize name="N_normalize" type="vector3">
-      <input name="in" type="vector3" nodename="N_makeVector" />
-    </normalize>
-    <convert name="N_convertNormalizeParm" type="float">
-      <input name="in" type="boolean" interfacename="normalize" />
-    </convert>
-    <switch name="N_normalizeOutput" type="vector3">
-      <input name="in1" type="vector3" nodename="N_makeVector" />
-      <input name="in2" type="vector3" nodename="N_normalize" />
-      <input name="which" type="float" nodename="N_convertNormalizeParm" />
-    </switch>    
-    <output name="out" type="vector3" nodename="N_normalizeOutput" />
-  </nodegraph>
-  <nodegraph name="NG_randomvector_integer_vector3" nodedef="ND_randomvector_integer_vector3">
-    <separate3 name="N_separatemin" type="multioutput">
-      <input name="in" type="vector3" interfacename="min" />
-    </separate3>
-    <separate3 name="N_separatemax" type="multioutput">
-      <input name="in" type="vector3" interfacename="max" />
-    </separate3>
-    <convert name="N_convert1" type="float">
-      <input name="in" type="integer" interfacename="in" />
-    </convert>
-    <randomvector name="N_randomvector1" type="vector3">
-      <input name="in" type="float" nodename="N_convert1" />
-      <input name="min" type="vector3" interfacename="min" />
-      <input name="max" type="vector3" interfacename="max" />
-      <input name="seed" type="float" interfacename="seed" />
-      <input name="normalize" type="boolean" interfacename="normalize" />
-    </randomvector>
-    <output name="out" type="vector3" nodename="N_randomvector1" />
-  </nodegraph>
-  <nodegraph name="NG_randomvector_float_vector4" nodedef="ND_randomvector_float_vector4">
-    <separate4 name="N_separatemin" type="multioutput">
-      <input name="in" type="vector4" interfacename="min" />
-    </separate4>
-    <separate4 name="N_separatemax" type="multioutput">
-      <input name="in" type="vector4" interfacename="max" />
-    </separate4>
-    <randomfloat name="N_randomfloat1" type="float">
-      <input name="in" type="float" interfacename="in" />
-      <input name="min" type="float" nodename="N_separatemin" output="outx" />
-      <input name="max" type="float" nodename="N_separatemax" output="outx" />
-      <input name="seed" type="float" interfacename="seed" />
-    </randomfloat>
-    <add name="N_seed1" type="float">
-      <input name="in1" type="float" value="7.10438" />
-      <input name="in2" type="float" interfacename="seed" />
-    </add>
-    <randomfloat name="N_randomfloat2" type="float">
-      <input name="in" type="float" interfacename="in" />
-      <input name="min" type="float" nodename="N_separatemin" output="outy" />
-      <input name="max" type="float" nodename="N_separatemax" output="outy" />
-      <input name="seed" type="float" nodename="N_seed1" />
-    </randomfloat>
-    <add name="N_seed2" type="float">
-      <input name="in1" type="float" value="2.95425" />
-      <input name="in2" type="float" interfacename="seed" />
+    <add name="N_offset_brightness" type="float">
+      <input name="in1" type="float" nodename="N_convertSeed1" />
+      <input name="in2" type="float" value="1813.8" />
     </add>
-    <randomfloat name="N_randomfloat3" type="float">
-      <input name="in" type="float" interfacename="in" />
-      <input name="min" type="float" nodename="N_separatemin" output="outz" />
-      <input name="max" type="float" nodename="N_separatemax" output="outz" />
-      <input name="seed" type="float" nodename="N_seed2" />
-    </randomfloat>
-    <add name="N_seed3" type="float">
-      <input name="in1" type="float" value="6.26189" />
-      <input name="in2" type="float" interfacename="seed" />
-    </add>
-    <randomfloat name="N_randomfloat4" type="float">
-      <input name="in" type="float" interfacename="in" />
-      <input name="min" type="float" nodename="N_separatemin" output="outw" />
-      <input name="max" type="float" nodename="N_separatemax" output="outw" />
-      <input name="seed" type="float" nodename="N_seed3" />
-    </randomfloat>
-    <combine4 name="N_makeVector" type="vector4">
-      <input name="in1" type="float" nodename="N_randomfloat1" />
-      <input name="in2" type="float" nodename="N_randomfloat2" />
-      <input name="in3" type="float" nodename="N_randomfloat3" />
-      <input name="in4" type="float" nodename="N_randomfloat4" />
-    </combine4>
-    <normalize name="N_normalize" type="vector4">
-      <input name="in" type="vector4" nodename="N_makeVector" />
-    </normalize>
-    <convert name="N_convertNormalizeParm" type="float">
-      <input name="in" type="boolean" interfacename="normalize" />
-    </convert>
-    <switch name="N_normalizeOutput" type="vector4">
-      <input name="in1" type="vector4" nodename="N_makeVector" />
-      <input name="in2" type="vector4" nodename="N_normalize" />
-      <input name="which" type="float" nodename="N_convertNormalizeParm" />
-    </switch>    
-    <output name="out" type="vector4" nodename="N_normalizeOutput" />
-  </nodegraph>
-  <nodegraph name="NG_randomvector_integer_vector4" nodedef="ND_randomvector_integer_vector4">
-    <separate4 name="N_separatemin" type="multioutput">
-      <input name="in" type="vector4" interfacename="min" />
-    </separate4>
-    <separate4 name="N_separatemax" type="multioutput">
-      <input name="in" type="vector4" interfacename="max" />
-    </separate4>
-    <convert name="N_convert1" type="float">
-      <input name="in" type="integer" interfacename="in" />
-    </convert>
-    <randomvector name="N_randomvector1" type="vector4">
-      <input name="in" type="float" nodename="N_convert1" />
-      <input name="min" type="vector4" interfacename="min" />
-      <input name="max" type="vector4" interfacename="max" />
-      <input name="seed" type="float" interfacename="seed" />
-      <input name="normalize" type="boolean" interfacename="normalize" />
-    </randomvector>
-    <output name="out" type="vector4" nodename="N_randomvector1" />
-  </nodegraph>
-
-  <!--
-    Node: <randomcolor>
-    Produces a randomized color, based on an input signal and seed value.
-  -->
-  <nodegraph name="NG_randomcolor_float_color3" nodedef="ND_randomcolor_float_color3">
+    <ceil name="N_seed_hue" type="integer">
+      <input name="in" type="float" nodename="N_offset_hue" />
+    </ceil>
+    <ceil name="N_seed_saturation" type="integer">
+      <input name="in" type="float" nodename="N_offset_saturation" />
+    </ceil>
+    <ceil name="N_seed_brightness" type="integer">
+      <input name="in" type="float" nodename="N_offset_brightness" />
+    </ceil>
     <randomfloat name="N_rand_hue" type="float">
       <input name="in" type="float" interfacename="in" />
-      <input name="seed" type="float" nodename="N_seed_hue" />
+      <input name="seed" type="integer" nodename="N_seed_hue" />
     </randomfloat>
     <randomfloat name="N_rand_saturation" type="float">
       <input name="in" type="float" interfacename="in" />
-      <input name="seed" type="float" nodename="N_seed_saturation" />
+      <input name="seed" type="integer" nodename="N_seed_saturation" />
     </randomfloat>
-    <randomfloat name="N_rand_gamma" type="float">
+    <randomfloat name="N_rand_brightness" type="float">
       <input name="in" type="float" interfacename="in" />
-      <input name="seed" type="float" nodename="N_seed_gamma" />
+      <input name="seed" type="integer" nodename="N_seed_brightness" />
     </randomfloat>
     <range name="N_range_hue" type="float">
       <input name="in" type="float" nodename="N_rand_hue" />
       <input name="outlow" type="float" interfacename="huelow" />
       <input name="outhigh" type="float" interfacename="huehigh" />
-      <input name="inlow" type="float" value="0" />
-      <input name="inhigh" type="float" value="1" />
-      <input name="gamma" type="float" value="1" />
-      <input name="doclamp" type="boolean" value="false" />
     </range>
     <range name="N_range_saturation" type="float">
       <input name="in" type="float" nodename="N_rand_saturation" />
       <input name="outlow" type="float" interfacename="saturationlow" />
       <input name="outhigh" type="float" interfacename="saturationhigh" />
-      <input name="inlow" type="float" value="0" />
-      <input name="inhigh" type="float" value="1" />
-      <input name="gamma" type="float" value="1" />
-      <input name="doclamp" type="boolean" value="false" />
     </range>
-    <range name="N_range_gamma" type="float">
-      <input name="in" type="float" nodename="N_rand_gamma" />
-      <input name="outlow" type="float" interfacename="gammalow" />
-      <input name="outhigh" type="float" interfacename="gammahigh" />
-      <input name="inlow" type="float" value="0" />
-      <input name="inhigh" type="float" value="1" />
-      <input name="gamma" type="float" value="1" />
-      <input name="doclamp" type="boolean" value="false" />
+    <range name="N_range_brightness" type="float">
+      <input name="in" type="float" nodename="N_rand_brightness" />
+      <input name="outlow" type="float" interfacename="brightnesslow" />
+      <input name="outhigh" type="float" interfacename="brightnesshigh" />
     </range>
-    <add name="N_seed_hue" type="float">
-      <input name="in1" type="float" interfacename="seed" />
-      <input name="in2" type="float" value="0" />
-    </add>
-    <add name="N_seed_saturation" type="float">
-      <input name="in1" type="float" interfacename="seed" />
-      <input name="in2" type="float" value="0" />
-    </add>
-    <add name="N_seed_gamma" type="float">
-      <input name="in1" type="float" interfacename="seed" />
-      <input name="in2" type="float" value="0" />
-    </add>
     <combine3 name="N_combine_HSV" type="color3">
       <input name="in1" type="float" nodename="N_range_hue" />
       <input name="in2" type="float" nodename="N_range_saturation" />
-      <input name="in3" type="float" value="1" />
+      <input name="in3" type="float" nodename="N_range_brightness" />
     </combine3>
-    <range name="N_gamma" type="color3">
-      <input name="in" type="color3" nodename="N_HSV_to_RGB" />
-      <input name="gamma" type="float" nodename="N_range_gamma" />
-      <input name="inlow" type="float" value="0" />
-      <input name="inhigh" type="float" value="1" />
-      <input name="outlow" type="float" value="0" />
-      <input name="outhigh" type="float" value="1" />
-      <input name="doclamp" type="boolean" value="false" />
-    </range>
     <hsvtorgb name="N_HSV_to_RGB" type="color3">
       <input name="in" type="color3" nodename="N_combine_HSV" />
     </hsvtorgb>
-    <output name="out" type="color3" nodename="N_gamma" />
+    <output name="out" type="color3" nodename="N_HSV_to_RGB" />
   </nodegraph>
-  <nodegraph name="NG_randomcolor_integer_color3" nodedef="ND_randomcolor_integer_color3">
+  <nodegraph name="NG_randomcolor_integer" nodedef="ND_randomcolor_integer">
     <convert name="N_convert1" type="float">
       <input name="in" type="integer" interfacename="in" />
     </convert>
@@ -1495,9 +1290,9 @@
       <input name="huehigh" type="float" interfacename="huehigh" />
       <input name="saturationlow" type="float" interfacename="saturationlow" />
       <input name="saturationhigh" type="float" interfacename="saturationhigh" />
-      <input name="gammalow" type="float" interfacename="gammalow" />
-      <input name="gammahigh" type="float" interfacename="gammahigh" />
-      <input name="seed" type="float" interfacename="seed" />
+      <input name="brightnesslow" type="float" interfacename="brightnesslow" />
+      <input name="brightnesshigh" type="float" interfacename="brightnesshigh" />
+      <input name="seed" type="integer" interfacename="seed" />
     </randomcolor>
     <output name="out" type="color3" nodename="N_randomcolor1" />
   </nodegraph>