Pārlūkot izejas kodu

Merge branch 'development_gld' of https://github.com/GoldenThumbs/Torque3D.git

Samuel Skiff 3 gadi atpakaļ
vecāks
revīzija
452a54ff51

+ 1 - 1
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();

+ 18 - 3
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();
 
@@ -798,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();

+ 7 - 1
Engine/source/renderInstance/renderProbeMgr.h

@@ -290,6 +290,11 @@ private:
    /// </summary>
    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:
    /// 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
    /// </summary>
    void bakeProbe(ReflectionProbe* probe);
-
+   void preBake();
+   void postBake();
    /// <summary>
    /// Runs the cubemap bake on all probes in the current scene
    /// </summary>