Skip to content

Commit c209785

Browse files
Handle backsurface in MDL generator (#2684)
1 parent ef1d56c commit c209785

4 files changed

Lines changed: 23 additions & 0 deletions

File tree

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<?xml version="1.0"?>
2+
<materialx version="1.39" colorspace="lin_rec709">
3+
<standard_surface name="SR_surface" type="surfaceshader">
4+
<input name="base_color" type="color3" value="1, 0, 0" />
5+
</standard_surface>
6+
<standard_surface name="SR_backsurface" type="surfaceshader">
7+
<input name="base_color" type="color3" value="0, 1, 0" />
8+
</standard_surface>
9+
<surfacematerial name="backsurface" type="material">
10+
<input name="surfaceshader" type="surfaceshader" nodename="SR_surface" />
11+
<input name="backsurfaceshader" type="surfaceshader" nodename="SR_backsurface" />
12+
</surfacematerial>
13+
</materialx>

source/MaterialXGenMdl/Nodes/MaterialNodeMdl.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,14 @@ void MaterialNodeMdl::emitFunctionCall(const ShaderNode& _node, GenContext& cont
3939
const ShaderNode* surfaceshaderNode = surfaceshaderInput->getConnection()->getNode();
4040
shadergen.emitFunctionCall(*surfaceshaderNode, context, stage);
4141

42+
// Emit the function call for upstream backsurface shader.
43+
ShaderInput* backsurfaceshaderInput = node.getInput(ShaderNode::BACKSURFACESHADER);
44+
if (backsurfaceshaderInput->getConnectedSibling())
45+
{
46+
const ShaderNode* backsurfaceshaderNode = backsurfaceshaderInput->getConnection()->getNode();
47+
shadergen.emitFunctionCall(*backsurfaceshaderNode, context, stage);
48+
}
49+
4250
shadergen.emitLineBegin(stage);
4351

4452
// Emit the output and function name.

source/MaterialXGenShader/ShaderNode.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,7 @@ const string ShaderNode::CONSTANT = "constant";
148148
const string ShaderNode::DOT = "dot";
149149
const string ShaderNode::IMAGE = "image";
150150
const string ShaderNode::SURFACESHADER = "surfaceshader";
151+
const string ShaderNode::BACKSURFACESHADER = "backsurfaceshader";
151152
const string ShaderNode::BSDF_R = "R";
152153
const string ShaderNode::BSDF_T = "T";
153154
const string ShaderNode::TEXTURE2D_GROUPNAME = "texture2d";

source/MaterialXGenShader/ShaderNode.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -367,6 +367,7 @@ class MX_GENSHADER_API ShaderNode
367367
static const string DOT;
368368
static const string IMAGE;
369369
static const string SURFACESHADER;
370+
static const string BACKSURFACESHADER;
370371
static const string BSDF_R;
371372
static const string BSDF_T;
372373
static const string TRANSFORM_POINT;

0 commit comments

Comments
 (0)