MCPcopy Create free account
hub / github.com/begla/Intrinsic / renderFrame

Method renderFrame

IntrinsicCore/src/IntrinsicRendererRenderProcess.cpp:358–432  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

356}
357
358void Default::renderFrame(float p_DeltaT)
359{
360 // Resize the swap chain (if necessary)
361 RenderSystem::resizeSwapChain();
362
363 RenderSystem::beginFrame();
364 {
365 _INTR_PROFILE_GPU("Render Frame");
366 _INTR_PROFILE_CPU("Render Process", "Render Frame");
367
368 // Preparation
369 {
370 _INTR_PROFILE_CPU("Render Process", "Culling");
371
372 // Update camera array
373 {
374 _cameras.clear();
375 if (!_cameraNames.empty())
376 {
377 for (uint32_t i = 0u; i < _cameraNames.size(); ++i)
378 {
379 const Name& cameraName = _cameraNames[i];
380
381 Components::CameraRef cam = World::_activeCamera;
382 if (cameraName != _N(ActiveCamera))
383 cam = Components::CameraManager::getComponentForEntity(
384 Entity::EntityManager::getEntityByName(cameraName));
385
386 _cameras.push_back(cam);
387 }
388 }
389 else
390 {
391 _cameras.push_back(World::_activeCamera);
392 }
393 }
394
395 // Collect frustums for culling
396 _activeFrustums.clear();
397 for (uint32_t i = 0u; i < _cameras.size(); ++i)
398 {
399 Components::CameraRef camRef = _cameras[i];
400
401 FrustumRef frustumRef = Components::CameraManager::_frustum(camRef);
402 _cameraToIdMapping[camRef] = (uint8_t)_activeFrustums.size();
403 _activeFrustums.push_back(frustumRef);
404
405 // Only allow shadows for the main view
406 if (_cameraNames[i] == _N(ActiveCamera))
407 {
408 _INTR_ARRAY(FrustumRef)& shadowFrustums = _shadowFrustums[camRef];
409 RenderPass::Shadow::prepareFrustums(camRef, shadowFrustums);
410 _activeFrustums.insert(RenderProcess::Default::_activeFrustums.end(),
411 shadowFrustums.begin(), shadowFrustums.end());
412 }
413 }
414
415 Components::CameraManager::updateFrustumsAndMatrices(

Callers

nothing calls this directly

Calls 6

executeRenderStepsFunction · 0.85
clearMethod · 0.80
emptyMethod · 0.80
push_backMethod · 0.80
insertMethod · 0.80
sizeMethod · 0.45

Tested by

no test coverage detected