Merge branch 'TorqueGameEngines:development' into development_gld

This commit is contained in:
GoldenThumbs 2022-08-29 00:11:51 -05:00 committed by GitHub
commit b4a0f5577c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 26 additions and 5 deletions

View file

@ -817,7 +817,7 @@ void ReflectionProbe::createEditorResources()
void ReflectionProbe::prepRenderImage(SceneRenderState *state) 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; return;
Point3F distVec = getRenderPosition() - state->getCameraPosition(); Point3F distVec = getRenderPosition() - state->getCameraPosition();

View file

@ -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) void RenderProbeMgr::bakeProbe(ReflectionProbe* probe)
{ {
GFXDEBUGEVENT_SCOPE(RenderProbeMgr_Bake, ColorI::WHITE); GFXDEBUGEVENT_SCOPE(RenderProbeMgr_Bake, ColorI::WHITE);
@ -477,7 +492,7 @@ void RenderProbeMgr::bakeProbe(ReflectionProbe* probe)
Con::warnf("RenderProbeMgr::bakeProbe() - Beginning bake!"); Con::warnf("RenderProbeMgr::bakeProbe() - Beginning bake!");
U32 startMSTime = Platform::getRealMilliseconds(); U32 startMSTime = Platform::getRealMilliseconds();
Con::setVariable("$Probes::Capturing", "1"); preBake();
String path = Con::getVariable("$pref::ReflectionProbes::CurrentLevelPath", "levels/"); String path = Con::getVariable("$pref::ReflectionProbes::CurrentLevelPath", "levels/");
U32 resolution = Con::getIntVariable("$pref::ReflectionProbes::BakeResolution", 64); U32 resolution = Con::getIntVariable("$pref::ReflectionProbes::BakeResolution", 64);
@ -598,7 +613,7 @@ void RenderProbeMgr::bakeProbe(ReflectionProbe* probe)
if (!renderWithProbes) if (!renderWithProbes)
RenderProbeMgr::smRenderReflectionProbes = probeRenderState; RenderProbeMgr::smRenderReflectionProbes = probeRenderState;
Con::setVariable("$Probes::Capturing", "0"); postBake();
cubeRefl.unregisterReflector(); cubeRefl.unregisterReflector();
@ -798,7 +813,7 @@ void RenderProbeMgr::render( SceneRenderState *state )
_setupPerFrameParameters(state); _setupPerFrameParameters(state);
// Early out if nothing to draw. // 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); getProbeArrayEffect()->setSkip(true);
mActiveProbes.clear(); mActiveProbes.clear();

View file

@ -290,6 +290,11 @@ private:
/// </summary> /// </summary>
bool mUseHDRCaptures; bool mUseHDRCaptures;
/// <summary>
/// holds the normal render state for light fade so we can capture them before and restore them after baking
/// </summary>
S32 mRenderMaximumNumOfLights;
bool mRenderUseLightFade;
protected: protected:
/// The current active light manager. /// The current active light manager.
static RenderProbeMgr* smProbeManager; 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 /// Takes a reflection probe and runs the cubemap bake process on it, outputting the resulting files to disk
/// </summary> /// </summary>
void bakeProbe(ReflectionProbe* probe); void bakeProbe(ReflectionProbe* probe);
void preBake();
void postBake();
/// <summary> /// <summary>
/// Runs the cubemap bake on all probes in the current scene /// Runs the cubemap bake on all probes in the current scene
/// </summary> /// </summary>