From 1db65ac882a8fb314c870f13b2c49837d3e2d845 Mon Sep 17 00:00:00 2001 From: Wojciech Figat Date: Fri, 17 Jun 2022 15:07:58 +0200 Subject: [PATCH] Add `GlobalIllumination` to debug GI probes --- Source/Editor/Viewport/EditorViewport.cs | 1 + Source/Engine/Graphics/Enums.h | 5 +++++ .../Engine/Renderer/GI/DynamicDiffuseGlobalIllumination.cpp | 4 ++-- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/Source/Editor/Viewport/EditorViewport.cs b/Source/Editor/Viewport/EditorViewport.cs index ae89ed7df..b47c01d26 100644 --- a/Source/Editor/Viewport/EditorViewport.cs +++ b/Source/Editor/Viewport/EditorViewport.cs @@ -1409,6 +1409,7 @@ namespace FlaxEditor.Viewport new ViewModeOptions(ViewMode.QuadOverdraw, "Quad Overdraw"), new ViewModeOptions(ViewMode.GlobalSDF, "Global SDF"), new ViewModeOptions(ViewMode.GlobalSurfaceAtlas, "Global Surface Atlas"), + new ViewModeOptions(ViewMode.GlobalIllumination, "Global Illumination"), }; private void WidgetCamSpeedShowHide(Control cm) diff --git a/Source/Engine/Graphics/Enums.h b/Source/Engine/Graphics/Enums.h index 56b1ca7bd..dd0154ce3 100644 --- a/Source/Engine/Graphics/Enums.h +++ b/Source/Engine/Graphics/Enums.h @@ -864,6 +864,11 @@ API_ENUM() enum class ViewMode /// Draw Global Surface Atlas preview. /// GlobalSurfaceAtlas = 25, + + /// + /// Draw Global Illumination debug preview (eg. irradiance probes). + /// + GlobalIllumination = 26, }; /// diff --git a/Source/Engine/Renderer/GI/DynamicDiffuseGlobalIllumination.cpp b/Source/Engine/Renderer/GI/DynamicDiffuseGlobalIllumination.cpp index 1ffc38f2f..f87a8b5da 100644 --- a/Source/Engine/Renderer/GI/DynamicDiffuseGlobalIllumination.cpp +++ b/Source/Engine/Renderer/GI/DynamicDiffuseGlobalIllumination.cpp @@ -269,7 +269,7 @@ bool DynamicDiffuseGlobalIlluminationPass::Render(RenderContext& renderContext, // Setup options auto& settings = renderContext.List->Settings.GlobalIllumination; const float probesSpacing = 100.0f; // GI probes placement spacing nearby camera (for closest cascade; gets automatically reduced for further cascades) - int32 probeRaysCount; + int32 probeRaysCount; // Amount of rays to trace randomly around each probe switch (Graphics::GIQuality) { case Quality::Low: @@ -287,7 +287,7 @@ bool DynamicDiffuseGlobalIlluminationPass::Render(RenderContext& renderContext, break; } ASSERT_LOW_LAYER(Math::Min(Math::AlignUp(probeRaysCount, DDGI_TRACE_RAYS_GROUP_SIZE_X), DDGI_TRACE_RAYS_LIMIT) == probeRaysCount); - bool debugProbes = false; // TODO: add debug option to draw probes locations -> in Graphics window - Editor-only + bool debugProbes = renderContext.View.Mode == ViewMode::GlobalIllumination; const float indirectLightingIntensity = settings.Intensity; const float probeHistoryWeight = Math::Clamp(settings.TemporalResponse, 0.0f, 0.98f); const float distance = settings.Distance;