diff --git a/install/scripts/materialtest.py b/install/scripts/materialtest.py index b27bbb538c..153f1bba00 100644 --- a/install/scripts/materialtest.py +++ b/install/scripts/materialtest.py @@ -38,6 +38,7 @@ # There are a couple of pre-defined sort requests, corresponding to the engine code newMaterial.setSortRequest(dr.Material.SortRequest.NEAREST) +newMaterial.setPolygonOffset(0.3) print('Full Material definition:\n{0}\n{{{1}}}'.format(newMaterial.getName(), newMaterial.getDefinition())) diff --git a/plugins/script/interfaces/ShaderSystemInterface.cpp b/plugins/script/interfaces/ShaderSystemInterface.cpp index f93abf0165..6b30d7f6d4 100644 --- a/plugins/script/interfaces/ShaderSystemInterface.cpp +++ b/plugins/script/interfaces/ShaderSystemInterface.cpp @@ -118,6 +118,9 @@ void ShaderSystemInterface::registerInterface(py::module& scope, py::dict& globa material.def("setSortRequest", static_cast(&ScriptMaterial::setSortRequest)); material.def("setSortRequest", static_cast(&ScriptMaterial::setSortRequest)); material.def("resetSortRequest", &ScriptMaterial::resetSortRequest); + material.def("getPolygonOffset", &ScriptMaterial::getPolygonOffset); + material.def("setPolygonOffset", &ScriptMaterial::setPolygonOffset); + material.def("clearPolygonOffset", &ScriptMaterial::clearPolygonOffset); // Expose the MaterialVisitor interface diff --git a/plugins/script/interfaces/ShaderSystemInterface.h b/plugins/script/interfaces/ShaderSystemInterface.h index b60be37644..49ab927132 100644 --- a/plugins/script/interfaces/ShaderSystemInterface.h +++ b/plugins/script/interfaces/ShaderSystemInterface.h @@ -102,6 +102,23 @@ class ScriptMaterial if (_material) _material->resetSortRequest(); } + float getPolygonOffset() + { + return _material ? _material->getPolygonOffset() : 0; + } + + void setPolygonOffset(float offset) + { + throwIfMaterialCannotBeModified(); + if (_material) _material->setPolygonOffset(offset); + } + + void clearPolygonOffset() + { + throwIfMaterialCannotBeModified(); + if (_material) _material->clearMaterialFlag(Material::FLAG_POLYGONOFFSET); + } + private: void throwIfMaterialCannotBeModified() {