mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-02-12 19:31:41 +00:00
Re-implements the dynamic cubemap mode option for reflection probes
This commit is contained in:
parent
c2bbab774a
commit
5289fdf7f1
5 changed files with 115 additions and 14 deletions
|
|
@ -853,7 +853,7 @@ void RenderProbeMgr::render( SceneRenderState *state )
|
|||
//PROFILE_END();
|
||||
}
|
||||
|
||||
void RenderProbeMgr::bakeProbe(ReflectionProbe *probe)
|
||||
void RenderProbeMgr::bakeProbe(ReflectionProbe *probe, bool writeFiles)
|
||||
{
|
||||
GFXDEBUGEVENT_SCOPE(RenderProbeMgr_Bake, ColorI::WHITE);
|
||||
|
||||
|
|
@ -865,7 +865,12 @@ void RenderProbeMgr::bakeProbe(ReflectionProbe *probe)
|
|||
U32 prefilterMipLevels = mLog2(F32(resolution));
|
||||
bool renderWithProbes = Con::getIntVariable("$pref::ReflectionProbes::RenderWithProbes", false);
|
||||
|
||||
ReflectionProbe *clientProbe = static_cast<ReflectionProbe*>(probe->getClientObject());
|
||||
ReflectionProbe* clientProbe = nullptr;
|
||||
|
||||
if (probe->isClientObject())
|
||||
clientProbe = probe;
|
||||
else
|
||||
clientProbe = static_cast<ReflectionProbe*>(probe->getClientObject());
|
||||
|
||||
if (clientProbe == nullptr)
|
||||
return;
|
||||
|
|
@ -960,10 +965,14 @@ void RenderProbeMgr::bakeProbe(ReflectionProbe *probe)
|
|||
U32 endMSTime = Platform::getRealMilliseconds();
|
||||
F32 diffTime = F32(endMSTime - startMSTime);
|
||||
Con::warnf("RenderProbeMgr::bake() - Finished Capture! Took %g milliseconds", diffTime);
|
||||
Con::warnf("RenderProbeMgr::bake() - Beginning save now!");
|
||||
|
||||
IBLUtilities::SaveCubeMap(clientProbe->getIrradianceMapPath(), clientProbe->mIrridianceMap->mCubemap);
|
||||
IBLUtilities::SaveCubeMap(clientProbe->getPrefilterMapPath(), clientProbe->mPrefilterMap->mCubemap);
|
||||
if (writeFiles)
|
||||
{
|
||||
Con::warnf("RenderProbeMgr::bake() - Beginning save now!");
|
||||
|
||||
IBLUtilities::SaveCubeMap(clientProbe->getIrradianceMapPath(), clientProbe->mIrridianceMap->mCubemap);
|
||||
IBLUtilities::SaveCubeMap(clientProbe->getPrefilterMapPath(), clientProbe->mPrefilterMap->mCubemap);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
|||
|
|
@ -223,6 +223,7 @@ class RenderProbeMgr : public RenderBinManager
|
|||
|
||||
bool mProbesDirty;
|
||||
|
||||
public:
|
||||
//maximum number of allowed probes
|
||||
static const U32 PROBE_MAX_COUNT = 250;
|
||||
//maximum number of rendered probes per frame adjust as needed
|
||||
|
|
@ -235,6 +236,7 @@ class RenderProbeMgr : public RenderBinManager
|
|||
static const GFXFormat PROBE_FORMAT = GFXFormatR16G16B16A16F;// GFXFormatR8G8B8A8;// when hdr fixed GFXFormatR16G16B16A16F; look into bc6h compression
|
||||
static const U32 INVALID_CUBE_SLOT = U32_MAX;
|
||||
|
||||
private:
|
||||
//Array rendering
|
||||
U32 mEffectiveProbeCount;
|
||||
S32 mMipCount;
|
||||
|
|
@ -344,7 +346,7 @@ public:
|
|||
/// Debug rendering
|
||||
static bool smRenderReflectionProbes;
|
||||
|
||||
void bakeProbe(ReflectionProbe *probeInfo);
|
||||
void bakeProbe(ReflectionProbe *probeInfo, bool writeFile = true);
|
||||
void bakeProbes();
|
||||
|
||||
void getProbeTextureData(ProbeTextureArrayData* probeTextureSet);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue