Ensures that baking is consistently set to use HDR formats or not which avoids an occasional mismatch crash

Also corrected a string formatting issue with loading static cubemaps on probes that could lead to a crash
Fixed the resources loaded handling so it would correctly initialize the probe's cubemaps even if the initial ghost network packet assigned a cubemap before we fully init'd the client object
This commit is contained in:
Areloch 2020-10-29 23:27:07 -05:00
parent 0e2fff00d2
commit 94e6d19fb2
2 changed files with 10 additions and 3 deletions

View file

@ -296,7 +296,7 @@ bool ReflectionProbe::onAdd()
// Refresh this object's material (if any) // Refresh this object's material (if any)
if (isClientObject()) if (isClientObject())
{ {
if (!createClientResources()) if (!mResourcesCreated && !createClientResources())
return false; return false;
updateProbeParams(); updateProbeParams();
@ -496,6 +496,12 @@ void ReflectionProbe::unpackUpdate(NetConnection *conn, BitStream *stream)
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
void ReflectionProbe::updateProbeParams() void ReflectionProbe::updateProbeParams()
{ {
if (!mResourcesCreated)
{
if (!createClientResources())
return;
}
mProbeInfo.mIsEnabled = mEnabled; mProbeInfo.mIsEnabled = mEnabled;
mProbeInfo.mProbeShapeType = mProbeShapeType; mProbeInfo.mProbeShapeType = mProbeShapeType;
@ -624,7 +630,7 @@ void ReflectionProbe::processStaticCubemap()
String path = Con::getVariable("$pref::ReflectionProbes::CurrentLevelPath", "levels/"); String path = Con::getVariable("$pref::ReflectionProbes::CurrentLevelPath", "levels/");
char irradFileName[256]; char irradFileName[256];
dSprintf(irradFileName, 256, "%s_Irradiance.dds", path.c_str(), mCubemapName.c_str()); dSprintf(irradFileName, 256, "%s%s_Irradiance.dds", path.c_str(), mCubemapName.c_str());
if (Platform::isFile(irradFileName)) if (Platform::isFile(irradFileName))
{ {

View file

@ -203,7 +203,8 @@ RenderProbeMgr::RenderProbeMgr()
mHasSkylight(false), mHasSkylight(false),
mSkylightCubemapIdx(-1), mSkylightCubemapIdx(-1),
mCubeMapCount(0), mCubeMapCount(0),
mDefaultSkyLight(nullptr) mDefaultSkyLight(nullptr),
mUseHDRCaptures(true)
{ {
mEffectiveProbeCount = 0; mEffectiveProbeCount = 0;
mMipCount = 0; mMipCount = 0;