diff --git a/libraries/stdlib/genglsl/mx_creatematrix_vector3_matrix33.glsl b/libraries/stdlib/genglsl/mx_creatematrix_vector3_matrix33.glsl
new file mode 100644
index 0000000000..aa10ef5b98
--- /dev/null
+++ b/libraries/stdlib/genglsl/mx_creatematrix_vector3_matrix33.glsl
@@ -0,0 +1,6 @@
+void mx_creatematrix_vector3_matrix33(vec3 in1, vec3 in2, vec3 in3, out mat3 result)
+{
+ result = mat3(in1.x, in1.y, in1.z,
+ in2.x, in2.y, in2.z,
+ in3.x, in3.y, in3.z);
+}
diff --git a/libraries/stdlib/genglsl/mx_creatematrix_vector3_matrix44.glsl b/libraries/stdlib/genglsl/mx_creatematrix_vector3_matrix44.glsl
new file mode 100644
index 0000000000..194fad421a
--- /dev/null
+++ b/libraries/stdlib/genglsl/mx_creatematrix_vector3_matrix44.glsl
@@ -0,0 +1,7 @@
+void mx_creatematrix_vector3_matrix44(vec3 in1, vec3 in2, vec3 in3, vec3 in4, out mat4 result)
+{
+ result = mat4(in1.x, in1.y, in1.z, 0.0,
+ in2.x, in2.y, in2.z, 0.0,
+ in3.x, in3.y, in3.z, 0.0,
+ in4.x, in4.y, in4.z, 1.0);
+}
diff --git a/libraries/stdlib/genglsl/mx_creatematrix_vector4_matrix44.glsl b/libraries/stdlib/genglsl/mx_creatematrix_vector4_matrix44.glsl
new file mode 100644
index 0000000000..665a22212b
--- /dev/null
+++ b/libraries/stdlib/genglsl/mx_creatematrix_vector4_matrix44.glsl
@@ -0,0 +1,7 @@
+void mx_creatematrix_vector4_matrix44(vec4 in1, vec4 in2, vec4 in3, vec4 in4, out mat4 result)
+{
+ result = mat4(in1.x, in1.y, in1.z, in1.w,
+ in2.x, in2.y, in2.z, in2.w,
+ in3.x, in3.y, in3.z, in3.w,
+ in4.x, in4.y, in4.z, in4.w);
+}
diff --git a/libraries/stdlib/genglsl/stdlib_genglsl_impl.mtlx b/libraries/stdlib/genglsl/stdlib_genglsl_impl.mtlx
index 07aae6ce66..6f67b21d33 100644
--- a/libraries/stdlib/genglsl/stdlib_genglsl_impl.mtlx
+++ b/libraries/stdlib/genglsl/stdlib_genglsl_impl.mtlx
@@ -748,6 +748,11 @@
+
+
+
+
+
diff --git a/libraries/stdlib/genmdl/stdlib_genmdl_impl.mtlx b/libraries/stdlib/genmdl/stdlib_genmdl_impl.mtlx
index 022f0896f1..6c550c92db 100644
--- a/libraries/stdlib/genmdl/stdlib_genmdl_impl.mtlx
+++ b/libraries/stdlib/genmdl/stdlib_genmdl_impl.mtlx
@@ -754,6 +754,11 @@
+
+
+
+
+
diff --git a/libraries/stdlib/genmsl/stdlib_genmsl_impl.mtlx b/libraries/stdlib/genmsl/stdlib_genmsl_impl.mtlx
index dea1c49636..40be6f8c46 100644
--- a/libraries/stdlib/genmsl/stdlib_genmsl_impl.mtlx
+++ b/libraries/stdlib/genmsl/stdlib_genmsl_impl.mtlx
@@ -748,6 +748,11 @@
+
+
+
+
+
diff --git a/libraries/stdlib/genosl/mx_creatematrix.osl b/libraries/stdlib/genosl/mx_creatematrix.osl
new file mode 100644
index 0000000000..933dce00ba
--- /dev/null
+++ b/libraries/stdlib/genosl/mx_creatematrix.osl
@@ -0,0 +1,23 @@
+void mx_creatematrix_vector3_matrix33(vector in1, vector in2, vector in3, out matrix result)
+{
+ result = matrix(in1.x, in1.y, in1.z, 0.0,
+ in2.x, in2.y, in2.z, 0.0,
+ in3.x, in3.y, in3.z, 0.0,
+ 0.0, 0.0, 0.0, 1.0);
+}
+
+void mx_creatematrix_vector3_matrix44(vector3 in1, vector3 in2, vector3 in3, vector3 in4, out matrix result)
+{
+ result = matrix(in1.x, in1.y, in1.z, 0.0,
+ in2.x, in2.y, in2.z, 0.0,
+ in3.x, in3.y, in3.z, 0.0,
+ in4.x, in4.y, in4.z, 1.0);
+}
+
+void mx_creatematrix_vector4_matrix44(vector4 in1, vector4 in2, vector4 in3, vector4 in4, out matrix result)
+{
+ result = matrix(in1.x, in1.y, in1.z, in1.w,
+ in2.x, in2.y, in2.z, in2.w,
+ in3.x, in3.y, in3.z, in3.w,
+ in4.x, in4.y, in4.z, in4.w);
+}
diff --git a/libraries/stdlib/genosl/stdlib_genosl_impl.mtlx b/libraries/stdlib/genosl/stdlib_genosl_impl.mtlx
index 42828ce641..a984d912b8 100644
--- a/libraries/stdlib/genosl/stdlib_genosl_impl.mtlx
+++ b/libraries/stdlib/genosl/stdlib_genosl_impl.mtlx
@@ -751,6 +751,11 @@
+
+
+
+
+
diff --git a/libraries/stdlib/stdlib_defs.mtlx b/libraries/stdlib/stdlib_defs.mtlx
index 3f187e2be1..90ccb57a98 100644
--- a/libraries/stdlib/stdlib_defs.mtlx
+++ b/libraries/stdlib/stdlib_defs.mtlx
@@ -4359,6 +4359,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+