MCPcopy Create free account
hub / github.com/FlaxEngine/FlaxEngine / RenderInner

Function RenderInner

Source/Engine/Renderer/Renderer.cpp:365–859  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

363}
364
365void RenderInner(SceneRenderTask* task, RenderContext& renderContext, RenderContextBatch& renderContextBatch)
366{
367 auto context = GPUDevice::Instance->GetMainContext();
368 auto* graphicsSettings = GraphicsSettings::Get();
369 auto& view = renderContext.View;
370 ASSERT(renderContext.Buffers && renderContext.Buffers->GetWidth() > 0);
371
372 // Perform postFx volumes blending and query before rendering
373 task->CollectPostFxVolumes(renderContext);
374 renderContext.List->BlendSettings();
375 {
376 auto aaMode = EnumHasAnyFlags(renderContext.View.Flags, ViewFlags::AntiAliasing) ? renderContext.List->Settings.AntiAliasing.Mode : AntialiasingMode::None;
377 if (aaMode == AntialiasingMode::TemporalAntialiasing && view.IsOrthographicProjection())
378 aaMode = AntialiasingMode::None; // TODO: support TAA in ortho projection (see RenderView::Prepare to jitter projection matrix better)
379 renderContext.List->Settings.AntiAliasing.Mode = aaMode;
380 }
381
382 // Initialize setup
383 RenderSetup& setup = renderContext.List->Setup;
384 const bool isGBufferDebug = GBufferPass::IsDebugView(renderContext.View.Mode);
385 {
386 PROFILE_CPU_NAMED("Setup");
387 const int32 screenWidth = renderContext.Buffers->GetWidth();
388 const int32 screenHeight = renderContext.Buffers->GetHeight();
389 setup.UpscaleLocation = renderContext.Task->UpscaleLocation;
390 if (screenWidth < 16 || screenHeight < 16 || renderContext.Task->IsCameraCut || isGBufferDebug || renderContext.View.Mode == ViewMode::NoPostFx)
391 setup.UseMotionVectors = false;
392 else
393 {
394 const MotionBlurSettings& motionBlurSettings = renderContext.List->Settings.MotionBlur;
395 const ScreenSpaceReflectionsSettings ssrSettings = renderContext.List->Settings.ScreenSpaceReflections;
396 setup.UseMotionVectors =
397 (EnumHasAnyFlags(renderContext.View.Flags, ViewFlags::MotionBlur) && motionBlurSettings.Enabled && motionBlurSettings.Scale > ZeroTolerance) ||
398 renderContext.View.Mode == ViewMode::MotionVectors ||
399 (ssrSettings.Intensity > ZeroTolerance && ssrSettings.TemporalEffect && EnumHasAnyFlags(renderContext.View.Flags, ViewFlags::SSR)) ||
400 renderContext.List->Settings.AntiAliasing.Mode == AntialiasingMode::TemporalAntialiasing;
401 }
402 setup.UseTemporalAAJitter = renderContext.List->Settings.AntiAliasing.Mode == AntialiasingMode::TemporalAntialiasing;
403 setup.UseGlobalSurfaceAtlas = renderContext.View.Mode == ViewMode::GlobalSurfaceAtlas ||
404 (EnumHasAnyFlags(renderContext.View.Flags, ViewFlags::GI) && renderContext.List->Settings.GlobalIllumination.Mode == GlobalIlluminationMode::DDGI);
405 setup.UseGlobalSDF = (graphicsSettings->EnableGlobalSDF && EnumHasAnyFlags(view.Flags, ViewFlags::GlobalSDF)) ||
406 renderContext.View.Mode == ViewMode::GlobalSDF ||
407 setup.UseGlobalSurfaceAtlas;
408 setup.UseVolumetricFog = (view.Flags & ViewFlags::Fog) != ViewFlags::None;
409
410 // Disable TAA jitter in debug modes
411 switch (renderContext.View.Mode)
412 {
413 case ViewMode::Unlit:
414 case ViewMode::Diffuse:
415 case ViewMode::Normals:
416 case ViewMode::Depth:
417 case ViewMode::Emissive:
418 case ViewMode::AmbientOcclusion:
419 case ViewMode::Metalness:
420 case ViewMode::Roughness:
421 case ViewMode::Specular:
422 case ViewMode::SpecularColor:

Callers 2

RenderMethod · 0.85
RenderMethod · 0.85

Calls 15

EnumHasAnyFlagsFunction · 0.85
EnumHasAllFlagsFunction · 0.85
New2DFunction · 0.85
ReleaseFunction · 0.85
RenderLightBufferFunction · 0.85
RenderAntiAliasingPassFunction · 0.85
Float2Class · 0.85
GetWidthMethod · 0.80
BlendSettingsMethod · 0.80
SetupLightsMethod · 0.80
SetupShadowsMethod · 0.80
PreOverrideDrawCallsMethod · 0.80

Tested by

no test coverage detected