ensure we've got a known stateblock set for GeneratePrefilterMap

This commit is contained in:
AzaezelX 2020-04-14 12:40:31 -05:00
parent e28b6ae6de
commit 1a33d483a3
2 changed files with 26 additions and 10 deletions

View file

@ -36,6 +36,7 @@
#include "materials/shaderData.h"
#include "gfx/gfxTextureManager.h"
#include "scene/reflectionManager.h"
#include "postFx/postEffect.h"
#include "T3D/lighting/reflectionProbe.h"
@ -919,6 +920,14 @@ void RenderProbeMgr::bakeProbe(ReflectionProbe *probe)
if (!renderWithProbes)
RenderProbeMgr::smRenderReflectionProbes = false;
GFXFormat reflectFormat;
if (clientProbe->mUseHDRCaptures)
reflectFormat = GFXFormatR16G16B16A16F;
else
reflectFormat = GFXFormatR8G8B8A8;
const GFXFormat oldRefFmt = REFLECTMGR->getReflectFormat();
REFLECTMGR->setReflectFormat(reflectFormat);
cubeRefl.updateReflection(reflParams);
//Now, save out the maps
@ -929,16 +938,8 @@ void RenderProbeMgr::bakeProbe(ReflectionProbe *probe)
clientProbe->createClientResources();
//Prep it with whatever resolution we've dictated for our bake
if (clientProbe->mUseHDRCaptures)
{
clientProbe->mIrridianceMap->mCubemap->initDynamic(resolution, GFXFormatR16G16B16A16F);
clientProbe->mPrefilterMap->mCubemap->initDynamic(resolution, GFXFormatR16G16B16A16F);
}
else
{
clientProbe->mIrridianceMap->mCubemap->initDynamic(resolution, GFXFormatR8G8B8A8);
clientProbe->mPrefilterMap->mCubemap->initDynamic(resolution, GFXFormatR8G8B8A8);
}
clientProbe->mIrridianceMap->mCubemap->initDynamic(resolution, reflectFormat);
clientProbe->mPrefilterMap->mCubemap->initDynamic(resolution, reflectFormat);
GFXTextureTargetRef renderTarget = GFX->allocRenderToTextureTarget(false);
@ -969,6 +970,7 @@ void RenderProbeMgr::bakeProbe(ReflectionProbe *probe)
probe->setMaskBits(-1);
Con::warnf("RenderProbeMgr::bake() - Finished bake! Took %g milliseconds", diffTime);
REFLECTMGR->setReflectFormat(oldRefFmt);
}
void RenderProbeMgr::bakeProbes()