mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-02-12 19:31:41 +00:00
Corrected probe init'ing so they don't fight for the cubemap idx order
Also correct deleting behavior so it updates indicies when a probe is removed Updated forward lighting to utilize the same math as deferred
This commit is contained in:
parent
a2aa241c92
commit
e87dc787ee
18 changed files with 426 additions and 375 deletions
|
|
@ -317,10 +317,10 @@ void RenderProbeMgr::addElement(RenderInst *inst)
|
|||
|
||||
ProbeRenderInst* RenderProbeMgr::registerProbe()
|
||||
{
|
||||
ProbeRenderInst newProbe;
|
||||
mRegisteredProbes.increment();
|
||||
ProbeRenderInst* newProbe = &mRegisteredProbes.last();
|
||||
|
||||
mRegisteredProbes.push_back(newProbe);
|
||||
newProbe.mProbeIdx = mRegisteredProbes.size();
|
||||
newProbe->mProbeIdx = mRegisteredProbes.size() - 1;
|
||||
|
||||
const U32 cubeIndex = _findNextEmptyCubeSlot();
|
||||
if (cubeIndex == INVALID_CUBE_SLOT)
|
||||
|
|
@ -349,18 +349,18 @@ ProbeRenderInst* RenderProbeMgr::registerProbe()
|
|||
mCubeSlotCount += PROBE_ARRAY_SLOT_BUFFER_SIZE;
|
||||
}
|
||||
|
||||
newProbe.mCubemapIndex = cubeIndex;
|
||||
newProbe->mCubemapIndex = cubeIndex;
|
||||
//mark cubemap slot as taken
|
||||
mCubeMapSlots[cubeIndex] = true;
|
||||
mCubeMapCount++;
|
||||
|
||||
#ifdef TORQUE_DEBUG
|
||||
Con::warnf("RenderProbeMgr::registerProbe: Registered probe %u to cubeIndex %u", newProbe.mProbeIdx, cubeIndex);
|
||||
Con::warnf("RenderProbeMgr::registerProbe: Registered probe %u to cubeIndex %u", newProbe->mProbeIdx, cubeIndex);
|
||||
#endif
|
||||
|
||||
mProbesDirty = true;
|
||||
|
||||
return &mRegisteredProbes.last();
|
||||
return newProbe;
|
||||
}
|
||||
|
||||
void RenderProbeMgr::unregisterProbe(U32 probeIdx)
|
||||
|
|
@ -378,6 +378,12 @@ void RenderProbeMgr::unregisterProbe(U32 probeIdx)
|
|||
|
||||
mRegisteredProbes.erase(probeIdx);
|
||||
|
||||
//recalculate all the probe's indicies just to be sure
|
||||
for (U32 i = 0; i < mRegisteredProbes.size(); i++)
|
||||
{
|
||||
mRegisteredProbes[i].mProbeIdx == i;
|
||||
}
|
||||
|
||||
//rebuild our probe data
|
||||
mProbesDirty = true;
|
||||
}
|
||||
|
|
@ -750,7 +756,7 @@ void RenderProbeMgr::render( SceneRenderState *state )
|
|||
mProbeArrayEffect->setCubemapArrayTexture(5, mIrradianceArray);
|
||||
|
||||
mProbeArrayEffect->setShaderConst("$numProbes", (S32)mEffectiveProbeCount);
|
||||
mProbeArrayEffect->setShaderConst("$skylightCubemapIdx", mSkylightCubemapIdx);
|
||||
mProbeArrayEffect->setShaderConst("$skylightCubemapIdx", (S32)mSkylightCubemapIdx);
|
||||
|
||||
mProbeArrayEffect->setShaderConst("$cubeMips", (float)mMipCount);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue