diff --git a/src/graphics/rtts.cpp b/src/graphics/rtts.cpp index f83be6b13..590972bb8 100644 --- a/src/graphics/rtts.cpp +++ b/src/graphics/rtts.cpp @@ -56,6 +56,7 @@ RTT::RTT(size_t width, size_t height) m_RH_FBO = NULL; m_RSM = NULL; m_RH_FBO = NULL; + m_diffuse_coefficients_calculated = false; using namespace video; using namespace core; @@ -294,7 +295,12 @@ void RTT::prepareRender(scene::ICameraSceneNode* camera) { irr_driver->setRTT(this); irr_driver->getSceneManager()->setActiveCamera(camera); - irr_driver->generateDiffuseCoefficients(); + + if (!m_diffuse_coefficients_calculated) + { + irr_driver->generateDiffuseCoefficients(); + m_diffuse_coefficients_calculated = true; + } } FrameBuffer* RTT::render(scene::ICameraSceneNode* camera, float dt) diff --git a/src/graphics/rtts.hpp b/src/graphics/rtts.hpp index a37ba1df7..ecc85c5c1 100644 --- a/src/graphics/rtts.hpp +++ b/src/graphics/rtts.hpp @@ -62,6 +62,8 @@ private: int m_width; int m_height; + bool m_diffuse_coefficients_calculated; + unsigned shadowColorTex, shadowNormalTex, shadowDepthTex; unsigned RSM_Color, RSM_Normal, RSM_Depth; unsigned RH_Red, RH_Green, RH_Blue;