mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-03-13 09:20:47 +00:00
ensure we've got a known stateblock set for GeneratePrefilterMap
This commit is contained in:
parent
e28b6ae6de
commit
1a33d483a3
2 changed files with 26 additions and 10 deletions
|
|
@ -138,6 +138,20 @@ namespace IBLUtilities
|
|||
GFXShaderConstHandle* prefilterMipSizeSC = prefilterShader->getShaderConstHandle("$mipSize");
|
||||
GFXShaderConstHandle* prefilterResolutionSC = prefilterShader->getShaderConstHandle("$resolution");
|
||||
|
||||
GFXStateBlockDesc desc;
|
||||
desc.zEnable = false;
|
||||
desc.samplersDefined = true;
|
||||
desc.samplers[0].addressModeU = GFXAddressClamp;
|
||||
desc.samplers[0].addressModeV = GFXAddressClamp;
|
||||
desc.samplers[0].addressModeW = GFXAddressClamp;
|
||||
desc.samplers[0].magFilter = GFXTextureFilterLinear;
|
||||
desc.samplers[0].minFilter = GFXTextureFilterLinear;
|
||||
desc.samplers[0].mipFilter = GFXTextureFilterLinear;
|
||||
|
||||
GFXStateBlockRef preStateBlock;
|
||||
preStateBlock = GFX->createStateBlock(desc);
|
||||
GFX->setStateBlock(preStateBlock);
|
||||
|
||||
GFX->pushActiveRenderTarget();
|
||||
GFX->setShader(prefilterShader);
|
||||
GFX->setShaderConstBuffer(prefilterConsts);
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue