From 748f8846718ef826815f735d08e5dfb1a7a8f92e Mon Sep 17 00:00:00 2001 From: AzaezelX Date: Sun, 28 Aug 2022 14:27:15 -0500 Subject: [PATCH] adds light fade and cap trackign to probe manager prebake removes them, postbake restores them to ap settings. also went ahead and threw the probes::capturing val at it as well --- .../source/renderInstance/renderProbeMgr.cpp | 19 +++++++++++++++++-- Engine/source/renderInstance/renderProbeMgr.h | 8 +++++++- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/Engine/source/renderInstance/renderProbeMgr.cpp b/Engine/source/renderInstance/renderProbeMgr.cpp index 2203b253d..c62422e35 100644 --- a/Engine/source/renderInstance/renderProbeMgr.cpp +++ b/Engine/source/renderInstance/renderProbeMgr.cpp @@ -470,6 +470,21 @@ void RenderProbeMgr::reloadTextures() } } +void RenderProbeMgr::preBake() +{ + Con::setVariable("$Probes::Capturing", "1"); + mRenderMaximumNumOfLights = AdvancedLightBinManager::smMaximumNumOfLights; + mRenderUseLightFade = AdvancedLightBinManager::smUseLightFade; + + AdvancedLightBinManager::smMaximumNumOfLights = -1; + AdvancedLightBinManager::smUseLightFade = false; +} +void RenderProbeMgr::postBake() +{ + Con::setVariable("$Probes::Capturing", "0"); + AdvancedLightBinManager::smMaximumNumOfLights = mRenderMaximumNumOfLights; + AdvancedLightBinManager::smUseLightFade = mRenderUseLightFade; +} void RenderProbeMgr::bakeProbe(ReflectionProbe* probe) { GFXDEBUGEVENT_SCOPE(RenderProbeMgr_Bake, ColorI::WHITE); @@ -477,7 +492,7 @@ void RenderProbeMgr::bakeProbe(ReflectionProbe* probe) Con::warnf("RenderProbeMgr::bakeProbe() - Beginning bake!"); U32 startMSTime = Platform::getRealMilliseconds(); - Con::setVariable("$Probes::Capturing", "1"); + preBake(); String path = Con::getVariable("$pref::ReflectionProbes::CurrentLevelPath", "levels/"); U32 resolution = Con::getIntVariable("$pref::ReflectionProbes::BakeResolution", 64); @@ -598,7 +613,7 @@ void RenderProbeMgr::bakeProbe(ReflectionProbe* probe) if (!renderWithProbes) RenderProbeMgr::smRenderReflectionProbes = probeRenderState; - Con::setVariable("$Probes::Capturing", "0"); + postBake(); cubeRefl.unregisterReflector(); diff --git a/Engine/source/renderInstance/renderProbeMgr.h b/Engine/source/renderInstance/renderProbeMgr.h index 3708f2e1e..990c5382c 100644 --- a/Engine/source/renderInstance/renderProbeMgr.h +++ b/Engine/source/renderInstance/renderProbeMgr.h @@ -290,6 +290,11 @@ private: /// bool mUseHDRCaptures; + /// + /// holds the normal render state for light fade so we can capture them before and restore them after baking + /// + S32 mRenderMaximumNumOfLights; + bool mRenderUseLightFade; protected: /// The current active light manager. static RenderProbeMgr* smProbeManager; @@ -413,7 +418,8 @@ public: /// Takes a reflection probe and runs the cubemap bake process on it, outputting the resulting files to disk /// void bakeProbe(ReflectionProbe* probe); - + void preBake(); + void postBake(); /// /// Runs the cubemap bake on all probes in the current scene ///