From 678d0fc5be01c476449e771ae72d15a29ba34448 Mon Sep 17 00:00:00 2001 From: Pavel Rojtberg Date: Tue, 25 Jan 2022 18:27:56 +0100 Subject: [PATCH] ovis: handle bg material change after shader genration --- modules/ovis/src/ovis.cpp | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/modules/ovis/src/ovis.cpp b/modules/ovis/src/ovis.cpp index c685fb0425..1fa6db9295 100644 --- a/modules/ovis/src/ovis.cpp +++ b/modules/ovis/src/ovis.cpp @@ -443,14 +443,21 @@ class WindowSceneImpl : public WindowScene _createTexture(name, image.getMat()); + // ensure bgplane is visible + bgplane->setVisible(true); bgplane->setDefaultUVs(); - Pass* rpass = bgplane->getMaterial()->getBestTechnique()->getPasses()[0]; - rpass->getTextureUnitStates()[0]->setTextureName(name); - rpass->getTextureUnitStates()[0]->setTextureAddressingMode(TAM_CLAMP); + Pass* rpass = bgplane->getMaterial()->getTechnique(0)->getPasses()[0]; + auto tus = rpass->getTextureUnitStates()[0]; - // ensure bgplane is visible - bgplane->setVisible(true); + if(tus->getTextureName() != name) + { + RTShader::ShaderGenerator::getSingleton().invalidateMaterial( + RTShader::ShaderGenerator::DEFAULT_SCHEME_NAME, *bgplane->getMaterial()); + + tus->setTextureName(name); + tus->setTextureAddressingMode(TAM_CLAMP); + } } void setCompositors(const std::vector& names) CV_OVERRIDE