MCPcopy Create free account
hub / github.com/TorqueGameEngines/Torque3D / registerProbe

Method registerProbe

Engine/source/renderInstance/renderProbeMgr.cpp:357–404  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

355}
356
357void RenderProbeMgr::registerProbe(ReflectionProbe::ProbeInfo* newProbe)
358{
359 //Can't have over the probe limit
360 if (mRegisteredProbes.size() + 1 >= PROBE_MAX_COUNT)
361 return;
362
363 ProbeRenderInst newProbeRenderInst;
364 newProbeRenderInst.mProbeInfo = newProbe;
365
366 const U32 cubeIndex = _findNextEmptyCubeSlot();
367 if (cubeIndex == INVALID_CUBE_SLOT)
368 {
369 Con::warnf("RenderProbeMgr::registerProbe() - Invalid cubemap slot.");
370 return;
371 }
372
373 //check if we need to resize the cubemap array
374 if (cubeIndex >= mCubeSlotCount)
375 {
376 //alloc temp array handles
377 GFXCubemapArrayHandle irr = GFXCubemapArrayHandle(GFX->createCubemapArray());
378 GFXCubemapArrayHandle prefilter = GFXCubemapArrayHandle(GFX->createCubemapArray());
379
380 U32 scaledSize = getProbeTexSize();
381 irr->init(mCubeSlotCount + PROBE_ARRAY_SLOT_BUFFER_SIZE, scaledSize, PROBE_FORMAT);
382 prefilter->init(mCubeSlotCount + PROBE_ARRAY_SLOT_BUFFER_SIZE, scaledSize, PROBE_FORMAT);
383
384 mIrradianceArray->copyTo(irr);
385 mPrefilterArray->copyTo(prefilter);
386
387 //assign the temp handles to the new ones, this will destroy the old ones as well
388 mIrradianceArray = irr;
389 mPrefilterArray = prefilter;
390
391 mCubeSlotCount += PROBE_ARRAY_SLOT_BUFFER_SIZE;
392 }
393
394 newProbeRenderInst.mCubemapIndex = cubeIndex;
395 //mark cubemap slot as taken
396 mCubeMapSlots[cubeIndex] = true;
397 mCubeMapCount++;
398
399 mRegisteredProbes.push_back(newProbeRenderInst);
400
401#ifdef TORQUE_DEBUG
402 Con::warnf("RenderProbeMgr::registerProbe() - Registered probe %u to cubeIndex %u", newProbe->mObject->getId(), cubeIndex);
403#endif
404}
405
406void RenderProbeMgr::unregisterProbe(ReflectionProbe::ProbeInfo* probeInfo)
407{

Callers 1

createClientResourcesMethod · 0.80

Calls 8

getIdMethod · 0.65
warnfFunction · 0.50
sizeMethod · 0.45
createCubemapArrayMethod · 0.45
initMethod · 0.45
copyToMethod · 0.45
push_backMethod · 0.45

Tested by

no test coverage detected