mirror of
https://github.com/luanti-org/luanti.git
synced 2025-06-27 16:36:03 +00:00
Move updating shadows outside of RenderingCore::drawAll. (#11491)
Fixes indirect rendering modes such as some 3D modes mentioned in #11437 and undersampled rendering. Does not fully fix anaglyph 3d mode.
This commit is contained in:
parent
0709946c75
commit
442e48b84f
7 changed files with 66 additions and 67 deletions
|
@ -146,11 +146,6 @@ void ShadowRenderer::removeNodeFromShadowList(scene::ISceneNode *node)
|
|||
}
|
||||
}
|
||||
|
||||
void ShadowRenderer::setClearColor(video::SColor ClearColor)
|
||||
{
|
||||
m_clear_color = ClearColor;
|
||||
}
|
||||
|
||||
void ShadowRenderer::updateSMTextures()
|
||||
{
|
||||
if (!m_shadows_enabled || m_smgr->getActiveCamera() == nullptr) {
|
||||
|
@ -242,6 +237,7 @@ void ShadowRenderer::updateSMTextures()
|
|||
// This is also handled in ClientMap.
|
||||
if (m_current_frame == m_map_shadow_update_frames - 1) {
|
||||
if (m_shadow_map_colored) {
|
||||
m_driver->setRenderTarget(0, false, false);
|
||||
m_driver->setRenderTarget(shadowMapTextureColors,
|
||||
true, false, video::SColor(255, 255, 255, 255));
|
||||
}
|
||||
|
@ -273,7 +269,6 @@ void ShadowRenderer::updateSMTextures()
|
|||
void ShadowRenderer::update(video::ITexture *outputTarget)
|
||||
{
|
||||
if (!m_shadows_enabled || m_smgr->getActiveCamera() == nullptr) {
|
||||
m_smgr->drawAll();
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -308,38 +303,36 @@ void ShadowRenderer::update(video::ITexture *outputTarget)
|
|||
m_driver->setRenderTarget(0, false, false);
|
||||
|
||||
} // end for lights
|
||||
|
||||
// now render the actual MT render pass
|
||||
m_driver->setRenderTarget(outputTarget, true, true, m_clear_color);
|
||||
m_smgr->drawAll();
|
||||
|
||||
/* this code just shows shadows textures in screen and in ONLY for debugging*/
|
||||
#if 0
|
||||
// this is debug, ignore for now.
|
||||
m_driver->draw2DImage(shadowMapTextureFinal,
|
||||
core::rect<s32>(0, 50, 128, 128 + 50),
|
||||
core::rect<s32>({0, 0}, shadowMapTextureFinal->getSize()));
|
||||
|
||||
m_driver->draw2DImage(shadowMapClientMap,
|
||||
core::rect<s32>(0, 50 + 128, 128, 128 + 50 + 128),
|
||||
core::rect<s32>({0, 0}, shadowMapTextureFinal->getSize()));
|
||||
m_driver->draw2DImage(shadowMapTextureDynamicObjects,
|
||||
core::rect<s32>(0, 128 + 50 + 128, 128,
|
||||
128 + 50 + 128 + 128),
|
||||
core::rect<s32>({0, 0}, shadowMapTextureDynamicObjects->getSize()));
|
||||
|
||||
if (m_shadow_map_colored) {
|
||||
|
||||
m_driver->draw2DImage(shadowMapTextureColors,
|
||||
core::rect<s32>(128,128 + 50 + 128 + 128,
|
||||
128 + 128, 128 + 50 + 128 + 128 + 128),
|
||||
core::rect<s32>({0, 0}, shadowMapTextureColors->getSize()));
|
||||
}
|
||||
#endif
|
||||
m_driver->setRenderTarget(0, false, false);
|
||||
}
|
||||
}
|
||||
|
||||
void ShadowRenderer::drawDebug()
|
||||
{
|
||||
/* this code just shows shadows textures in screen and in ONLY for debugging*/
|
||||
#if 0
|
||||
// this is debug, ignore for now.
|
||||
m_driver->draw2DImage(shadowMapTextureFinal,
|
||||
core::rect<s32>(0, 50, 128, 128 + 50),
|
||||
core::rect<s32>({0, 0}, shadowMapTextureFinal->getSize()));
|
||||
|
||||
m_driver->draw2DImage(shadowMapClientMap,
|
||||
core::rect<s32>(0, 50 + 128, 128, 128 + 50 + 128),
|
||||
core::rect<s32>({0, 0}, shadowMapTextureFinal->getSize()));
|
||||
m_driver->draw2DImage(shadowMapTextureDynamicObjects,
|
||||
core::rect<s32>(0, 128 + 50 + 128, 128,
|
||||
128 + 50 + 128 + 128),
|
||||
core::rect<s32>({0, 0}, shadowMapTextureDynamicObjects->getSize()));
|
||||
|
||||
if (m_shadow_map_colored) {
|
||||
|
||||
m_driver->draw2DImage(shadowMapTextureColors,
|
||||
core::rect<s32>(128,128 + 50 + 128 + 128,
|
||||
128 + 128, 128 + 50 + 128 + 128 + 128),
|
||||
core::rect<s32>({0, 0}, shadowMapTextureColors->getSize()));
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
video::ITexture *ShadowRenderer::getSMTexture(const std::string &shadow_map_name,
|
||||
video::ECOLOR_FORMAT texture_format, bool force_creation)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue