From 748f8846718ef826815f735d08e5dfb1a7a8f92e Mon Sep 17 00:00:00 2001 From: AzaezelX Date: Sun, 28 Aug 2022 14:27:15 -0500 Subject: [PATCH 1/2] 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 /// From 5453d53f4c49c61d4cc0e52f0cf249af47202e33 Mon Sep 17 00:00:00 2001 From: AzaezelX Date: Sun, 28 Aug 2022 17:24:59 -0500 Subject: [PATCH 2/2] correct capturing flag test --- Engine/source/T3D/lighting/reflectionProbe.cpp | 2 +- Engine/source/renderInstance/renderProbeMgr.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Engine/source/T3D/lighting/reflectionProbe.cpp b/Engine/source/T3D/lighting/reflectionProbe.cpp index 17966623b..8449399ab 100644 --- a/Engine/source/T3D/lighting/reflectionProbe.cpp +++ b/Engine/source/T3D/lighting/reflectionProbe.cpp @@ -817,7 +817,7 @@ void ReflectionProbe::createEditorResources() void ReflectionProbe::prepRenderImage(SceneRenderState *state) { - if (!mEnabled || (!RenderProbeMgr::smRenderReflectionProbes && dStrcmp(Con::getVariable("$Probes::Capturing", "0"),"1"))) + if (!mEnabled || (!RenderProbeMgr::smRenderReflectionProbes && !dStrcmp(Con::getVariable("$Probes::Capturing", "0"),"1"))) return; Point3F distVec = getRenderPosition() - state->getCameraPosition(); diff --git a/Engine/source/renderInstance/renderProbeMgr.cpp b/Engine/source/renderInstance/renderProbeMgr.cpp index c62422e35..30fdcda72 100644 --- a/Engine/source/renderInstance/renderProbeMgr.cpp +++ b/Engine/source/renderInstance/renderProbeMgr.cpp @@ -813,7 +813,7 @@ void RenderProbeMgr::render( SceneRenderState *state ) _setupPerFrameParameters(state); // Early out if nothing to draw. - if ((!RenderProbeMgr::smRenderReflectionProbes && dStrcmp(Con::getVariable("$Probes::Capturing", "0"), "1")) || (!mHasSkylight && mProbeData.effectiveProbeCount == 0)) + if ((!RenderProbeMgr::smRenderReflectionProbes && !dStrcmp(Con::getVariable("$Probes::Capturing", "0"), "1")) || (!mHasSkylight && mProbeData.effectiveProbeCount == 0)) { getProbeArrayEffect()->setSkip(true); mActiveProbes.clear();