Navigation Menu

Skip to content

Commit

Permalink
#5585: More IEditableShaderLayer methods: setMapType, setMapExpressio…
Browse files Browse the repository at this point in the history
…nFromString, setBlendFuncStrings, setAlphaTestExpressionFromString, addTransformation, removeTransformation, updateTransformation
  • Loading branch information
codereader committed Apr 11, 2021
1 parent 46c64db commit 393bde7
Show file tree
Hide file tree
Showing 3 changed files with 51 additions and 0 deletions.
8 changes: 8 additions & 0 deletions install/scripts/materialtest.py
Expand Up @@ -85,6 +85,14 @@
editableDiffuseStage = newMaterial.getEditableStage(diffuseStageIndex)
editableDiffuseStage.setStageFlag(dr.MaterialStage.Flag.IGNORE_ALPHATEST)
editableDiffuseStage.clearStageFlag(dr.MaterialStage.Flag.FILTER_LINEAR)
editableDiffuseStage.setMapType(dr.MaterialStage.MapType.CUBEMAP)
editableDiffuseStage.setMapExpressionFromString("env/sky1")
editableDiffuseStage.setBlendFuncStrings(["gl_one", "gl_dest_alpha"])
editableDiffuseStage.setAlphaTestExpressionFromString("sinTable[time]")
editableDiffuseStage.addTransformation(dr.MaterialStage.TransformType.SCALE, "time", "global0")
rotateIndex = editableDiffuseStage.addTransformation(dr.MaterialStage.TransformType.ROTATE, "time*0.5", "")
editableDiffuseStage.updateTransformation(rotateIndex, dr.MaterialStage.TransformType.SCALE, "time*0.5", "0.5")
editableDiffuseStage.removeTransformation(rotateIndex)

for stage in newMaterial.getAllStages():
print('Stage type: {0}'.format(stage.getType()))
Expand Down
7 changes: 7 additions & 0 deletions plugins/script/interfaces/ShaderSystemInterface.cpp
Expand Up @@ -381,6 +381,13 @@ void ShaderSystemInterface::registerInterface(py::module& scope, py::dict& globa
stage.def(py::init<const IEditableShaderLayer::Ptr&>());
editableStage.def("setStageFlag", &ScriptEditableMaterialStage::setStageFlag);
editableStage.def("clearStageFlag", &ScriptEditableMaterialStage::clearStageFlag);
editableStage.def("setMapType", &ScriptEditableMaterialStage::setMapType);
editableStage.def("setMapExpressionFromString", &ScriptEditableMaterialStage::setMapExpressionFromString);
editableStage.def("setBlendFuncStrings", &ScriptEditableMaterialStage::setBlendFuncStrings);
editableStage.def("setAlphaTestExpressionFromString", &ScriptEditableMaterialStage::setAlphaTestExpressionFromString);
editableStage.def("addTransformation", &ScriptEditableMaterialStage::addTransformation);
editableStage.def("removeTransformation", &ScriptEditableMaterialStage::removeTransformation);
editableStage.def("updateTransformation", &ScriptEditableMaterialStage::updateTransformation);

// Expose the MaterialVisitor interface

Expand Down
36 changes: 36 additions & 0 deletions plugins/script/interfaces/ShaderSystemInterface.h
Expand Up @@ -213,6 +213,42 @@ class ScriptEditableMaterialStage :
{
if (_layer) _layer->clearStageFlag(flag);
}

void setMapType(IShaderLayer::MapType mapType)
{
if (_layer) _layer->setMapType(mapType);
}

void setBlendFuncStrings(const std::pair<std::string, std::string>& pair)
{
if (_layer) _layer->setBlendFuncStrings(pair);
}

void setAlphaTestExpressionFromString(const std::string& expression)
{
if (_layer) _layer->setAlphaTestExpressionFromString(expression);
}

void setMapExpressionFromString(const std::string& expression)
{
if (_layer) _layer->setMapExpressionFromString(expression);
}

std::size_t addTransformation(IShaderLayer::TransformType type, const std::string& expression1, const std::string& expression2)
{
return _layer ? _layer->addTransformation(type, expression1, expression2) : -1;
}

void removeTransformation(std::size_t index)
{
if (_layer) _layer->removeTransformation(index);
}

void updateTransformation(std::size_t index, IShaderLayer::TransformType type,
const std::string& expression1, const std::string& expression2)
{
if (_layer) _layer->updateTransformation(index, type, expression1, expression2);
}
};

/**
Expand Down

0 comments on commit 393bde7

Please sign in to comment.