diff --git a/libraries/stdlib/genosl/stdlib_genosl_impl.mtlx b/libraries/stdlib/genosl/stdlib_genosl_impl.mtlx
index 3837722ffd..da6e6a25ea 100644
--- a/libraries/stdlib/genosl/stdlib_genosl_impl.mtlx
+++ b/libraries/stdlib/genosl/stdlib_genosl_impl.mtlx
@@ -498,7 +498,7 @@
-
+
diff --git a/source/MaterialXTest/MaterialXGenOsl/GenOsl.cpp b/source/MaterialXTest/MaterialXGenOsl/GenOsl.cpp
index 451caa40fa..ad0461b482 100644
--- a/source/MaterialXTest/MaterialXGenOsl/GenOsl.cpp
+++ b/source/MaterialXTest/MaterialXGenOsl/GenOsl.cpp
@@ -179,6 +179,45 @@ TEST_CASE("GenShader: OSL Metadata", "[genosl]")
REQUIRE(shader != nullptr);
}
+TEST_CASE("GenShader: OSL TransformMatrix Point Semantics", "[genosl]")
+{
+ const std::string expectedSourceCode = "transform({{mat}}, point({{in}}))";
+ const std::string testDocumentString = R"(
+
+
+
+
+
+
+
+)";
+
+ mx::FileSearchPath searchPath = mx::getDefaultDataSearchPath();
+ mx::DocumentPtr libraries = mx::createDocument();
+ mx::loadLibraries({ "libraries" }, searchPath, libraries);
+
+ mx::ImplementationPtr implementation = libraries->getImplementation("IM_transformmatrix_vector3M4_genosl");
+ REQUIRE(implementation != nullptr);
+ REQUIRE(implementation->getAttribute("sourcecode") == expectedSourceCode);
+
+ mx::DocumentPtr doc = mx::createDocument();
+ mx::readFromXmlString(doc, testDocumentString);
+ doc->setDataLibrary(libraries);
+
+ mx::NodeGraphPtr nodeGraph = doc->getNodeGraph("NG_transformmatrix_vector3M4");
+ REQUIRE(nodeGraph != nullptr);
+
+ mx::OutputPtr output = nodeGraph->getOutput("out");
+ REQUIRE(output != nullptr);
+
+ mx::GenContext context(mx::OslShaderGenerator::create());
+ context.registerSourceCodeSearchPath(searchPath);
+
+ mx::ShaderPtr shader = context.getShaderGenerator().generate("transformmatrix_point_semantics", output, context);
+ REQUIRE(shader != nullptr);
+ REQUIRE(shader->getSourceCode().find("point(") != std::string::npos);
+}
+
static void generateOslCode()
{
mx::FileSearchPath searchPath = mx::getDefaultDataSearchPath();