Skip to content

Commit

Permalink
Merge branch 'main' into value_equivalent
Browse files Browse the repository at this point in the history
  • Loading branch information
jstone-lucasfilm authored Oct 3, 2024
2 parents eab74b1 + a11792a commit af3c1fc
Show file tree
Hide file tree
Showing 13 changed files with 42 additions and 15 deletions.
26 changes: 22 additions & 4 deletions source/MaterialXGenShader/Nodes/HwViewDirectionNode.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,20 +14,31 @@ ShaderNodeImplPtr HwViewDirectionNode::create()
return std::make_shared<HwViewDirectionNode>();
}

void HwViewDirectionNode::createVariables(const ShaderNode&, GenContext&, Shader& shader) const
void HwViewDirectionNode::createVariables(const ShaderNode& node, GenContext&, Shader& shader) const
{
ShaderStage& vs = shader.getStage(Stage::VERTEX);
ShaderStage& ps = shader.getStage(Stage::PIXEL);

addStageInput(HW::VERTEX_INPUTS, Type::VECTOR3, HW::T_IN_POSITION, vs);
addStageConnector(HW::VERTEX_DATA, Type::VECTOR3, HW::T_POSITION_WORLD, vs, ps);

const ShaderInput* spaceInput = node.getInput(SPACE);
const int space = spaceInput ? spaceInput->getValue()->asA<int>() : OBJECT_SPACE;

addStageUniform(HW::PRIVATE_UNIFORMS, Type::VECTOR3, HW::T_VIEW_POSITION, ps);
addStageConnector(HW::VERTEX_DATA, Type::VECTOR3, HW::T_POSITION_WORLD, vs, ps);
if (space == OBJECT_SPACE || space == MODEL_SPACE)
{
addStageUniform(HW::PRIVATE_UNIFORMS, Type::MATRIX44, HW::T_WORLD_INVERSE_TRANSPOSE_MATRIX, ps);
}
}

void HwViewDirectionNode::emitFunctionCall(const ShaderNode& node, GenContext& context, ShaderStage& stage) const
{
const HwShaderGenerator& shadergen = static_cast<const HwShaderGenerator&>(context.getShaderGenerator());

const ShaderInput* spaceInput = node.getInput(SPACE);
const int space = spaceInput ? spaceInput->getValue()->asA<int>() : OBJECT_SPACE;

DEFINE_SHADER_STAGE(stage, Stage::VERTEX)
{
VariableBlock& vertexData = stage.getOutputBlock(HW::VERTEX_DATA);
Expand All @@ -44,10 +55,17 @@ void HwViewDirectionNode::emitFunctionCall(const ShaderNode& node, GenContext& c
{
VariableBlock& vertexData = stage.getInputBlock(HW::VERTEX_DATA);
const string prefix = shadergen.getVertexDataPrefix(vertexData);
ShaderPort* position = vertexData[HW::T_POSITION_WORLD];
shadergen.emitLineBegin(stage);
shadergen.emitOutput(node.getOutput(), true, false, context, stage);
shadergen.emitString(" = normalize(" + prefix + position->getVariable() + " - " + HW::T_VIEW_POSITION + ")", stage);
ShaderPort* position = vertexData[HW::T_POSITION_WORLD];
if (space == WORLD_SPACE)
{
shadergen.emitString(" = normalize(" + prefix + position->getVariable() + " - " + HW::T_VIEW_POSITION + ")", stage);
}
else
{
shadergen.emitString(" = normalize((" + HW::T_WORLD_INVERSE_TRANSPOSE_MATRIX + " * vec4(" + prefix + position->getVariable() + " - " + HW::T_VIEW_POSITION + ", 0.0)).xyz)", stage);
}
shadergen.emitLineEnd(stage);
}
}
Expand Down
9 changes: 9 additions & 0 deletions source/PyMaterialX/PyMaterialXCore/PyElement.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,15 @@ void bindPyElement(py::module& mod)
py::arg("geom") = mx::EMPTY_STRING)
.def("asString", &mx::Element::asString)
.def("__str__", &mx::Element::asString)
.def_readonly_static("NAME_ATTRIBUTE", &mx::Element::NAME_ATTRIBUTE)
.def_readonly_static("FILE_PREFIX_ATTRIBUTE", &mx::Element::FILE_PREFIX_ATTRIBUTE)
.def_readonly_static("GEOM_PREFIX_ATTRIBUTE", &mx::Element::GEOM_PREFIX_ATTRIBUTE)
.def_readonly_static("COLOR_SPACE_ATTRIBUTE", &mx::Element::COLOR_SPACE_ATTRIBUTE)
.def_readonly_static("INHERIT_ATTRIBUTE", &mx::Element::INHERIT_ATTRIBUTE)
.def_readonly_static("NAMESPACE_ATTRIBUTE", &mx::Element::NAMESPACE_ATTRIBUTE)
.def_readonly_static("DOC_ATTRIBUTE", &mx::Element::DOC_ATTRIBUTE)
.def_readonly_static("XPOS_ATTRIBUTE", &mx::Element::XPOS_ATTRIBUTE)
.def_readonly_static("YPOS_ATTRIBUTE", &mx::Element::YPOS_ATTRIBUTE)
BIND_ELEMENT_FUNC_INSTANCE(Collection)
BIND_ELEMENT_FUNC_INSTANCE(Document)
BIND_ELEMENT_FUNC_INSTANCE(GeomInfo)
Expand Down
2 changes: 1 addition & 1 deletion source/PyMaterialX/PyMaterialXCore/PyModule.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ void bindPyVariant(py::module& mod);

PYBIND11_MODULE(PyMaterialXCore, mod)
{
mod.doc() = "Module containing Python bindings for the MaterialXCore library";
mod.doc() = "Core MaterialX elements and graph traversal.";

bindPyElement(mod);
bindPyTraversal(mod);
Expand Down
2 changes: 1 addition & 1 deletion source/PyMaterialX/PyMaterialXFormat/PyModule.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ void bindPyUtil(py::module& mod);

PYBIND11_MODULE(PyMaterialXFormat, mod)
{
mod.doc() = "Module containing Python bindings for the MaterialXFormat library";
mod.doc() = "Cross-platform support for document serialization and file utilities.";

// PyMaterialXFormat depends on types defined in PyMaterialXCore
PYMATERIALX_IMPORT_MODULE(PyMaterialXCore);
Expand Down
2 changes: 1 addition & 1 deletion source/PyMaterialX/PyMaterialXGenGlsl/PyModule.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ void bindPyVkShaderGenerator(py::module& mod);

PYBIND11_MODULE(PyMaterialXGenGlsl, mod)
{
mod.doc() = "Module containing Python bindings for the MaterialXGenGlsl library";
mod.doc() = "Shader generation using the OpenGL Shading Language.";

// PyMaterialXGenGlsl depends on types defined in PyMaterialXGenShader
PYMATERIALX_IMPORT_MODULE(PyMaterialXGenShader);
Expand Down
2 changes: 1 addition & 1 deletion source/PyMaterialX/PyMaterialXGenMdl/PyModule.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ void bindPyMdlShaderGenerator(py::module& mod);

PYBIND11_MODULE(PyMaterialXGenMdl, mod)
{
mod.doc() = "Module containing Python bindings for the MaterialXGenMdl library";
mod.doc() = "Shader generation using the Material Definition Language.";

// PyMaterialXGenMdl depends on types defined in PyMaterialXGenShader
PYMATERIALX_IMPORT_MODULE(PyMaterialXGenShader);
Expand Down
2 changes: 1 addition & 1 deletion source/PyMaterialX/PyMaterialXGenMsl/PyModule.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ void bindPyMslResourceBindingContext(py::module &mod);

PYBIND11_MODULE(PyMaterialXGenMsl, mod)
{
mod.doc() = "Module containing Python bindings for the MaterialXGenMsl library";
mod.doc() = "Shader generation using the Metal Shading Language.";

// PyMaterialXGenMsl depends on types defined in PyMaterialXGenShader
PYMATERIALX_IMPORT_MODULE(PyMaterialXGenShader);
Expand Down
2 changes: 1 addition & 1 deletion source/PyMaterialX/PyMaterialXGenOsl/PyModule.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ void bindPyOslShaderGenerator(py::module& mod);

PYBIND11_MODULE(PyMaterialXGenOsl, mod)
{
mod.doc() = "Module containing Python bindings for the MaterialXGenOsl library";
mod.doc() = "Shader generation using Open Shading Language.";

// PyMaterialXGenOsl depends on types defined in PyMaterialXGenShader
PYMATERIALX_IMPORT_MODULE(PyMaterialXGenShader);
Expand Down
2 changes: 1 addition & 1 deletion source/PyMaterialX/PyMaterialXGenShader/PyModule.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ void bindPyUnitSystem(py::module& mod);

PYBIND11_MODULE(PyMaterialXGenShader, mod)
{
mod.doc() = "Module containing Python bindings for the MaterialXGenShader library";
mod.doc() = "Core shader generation support for MaterialX.";

bindPyColorManagement(mod);
bindPyShaderPort(mod);
Expand Down
2 changes: 1 addition & 1 deletion source/PyMaterialX/PyMaterialXRender/PyModule.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ void bindPyCgltfLoader(py::module& mod);

PYBIND11_MODULE(PyMaterialXRender, mod)
{
mod.doc() = "Module containing Python bindings for the MaterialXRender library";
mod.doc() = "Core rendering support for MaterialX.";

// PyMaterialXRender depends on types defined in PyMaterialXCore
PYMATERIALX_IMPORT_MODULE(PyMaterialXCore);
Expand Down
2 changes: 1 addition & 1 deletion source/PyMaterialX/PyMaterialXRenderGlsl/PyModule.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ void bindPyTextureBaker(py::module& mod);

PYBIND11_MODULE(PyMaterialXRenderGlsl, mod)
{
mod.doc() = "Module containing Python bindings for the MaterialXRenderGlsl library";
mod.doc() = "Rendering support for the OpenGL Shading Language.";

// PyMaterialXRenderGlsl depends on types defined in PyMaterialXRender
PYMATERIALX_IMPORT_MODULE(PyMaterialXRender);
Expand Down
2 changes: 1 addition & 1 deletion source/PyMaterialX/PyMaterialXRenderMsl/PyModule.mm
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@

PYBIND11_MODULE(PyMaterialXRenderMsl, mod)
{
mod.doc() = "Module containing Python bindings for the MaterialXRenderMsl library";
mod.doc() = "Rendering support for the Metal Shading Language.";

// PyMaterialXRenderMsl depends on types defined in PyMaterialXRender
PYMATERIALX_IMPORT_MODULE(PyMaterialXRender);
Expand Down
2 changes: 1 addition & 1 deletion source/PyMaterialX/PyMaterialXRenderOsl/PyModule.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ void bindPyOslRenderer(py::module& mod);

PYBIND11_MODULE(PyMaterialXRenderOsl, mod)
{
mod.doc() = "Module containing Python bindings for the MaterialXRenderOsl library";
mod.doc() = "Rendering support for Open Shading Language.";

// PyMaterialXRenderOsl depends on types defined in PyMaterialXRender
PYMATERIALX_IMPORT_MODULE(PyMaterialXRender);
Expand Down

0 comments on commit af3c1fc

Please sign in to comment.