From 49415f8716e76ec8557e2e67779e33a0ecbfcc7f Mon Sep 17 00:00:00 2001 From: vladislavbelov Date: Tue, 14 Jan 2020 23:51:29 +0000 Subject: [PATCH] Splits debug display of frustums for an easier debugging of a culling and shadows This was SVN commit r23395. --- .../DeveloperOverlayCheckboxes.js | 18 ++++++++++++++++++ source/renderer/Renderer.cpp | 7 +++++-- source/renderer/RenderingOptions.cpp | 3 ++- source/renderer/RenderingOptions.h | 3 ++- source/renderer/ShadowMap.cpp | 4 ++++ .../scripting/JSInterface_Renderer.cpp | 4 +++- .../renderer/scripting/JSInterface_Renderer.h | 3 ++- 7 files changed, 36 insertions(+), 6 deletions(-) diff --git a/binaries/data/mods/public/gui/session/developer_overlay/DeveloperOverlayCheckboxes.js b/binaries/data/mods/public/gui/session/developer_overlay/DeveloperOverlayCheckboxes.js index d575d788aa..da41ebcacc 100644 --- a/binaries/data/mods/public/gui/session/developer_overlay/DeveloperOverlayCheckboxes.js +++ b/binaries/data/mods/public/gui/session/developer_overlay/DeveloperOverlayCheckboxes.js @@ -275,3 +275,21 @@ DeveloperOverlayCheckboxes.prototype.DisplayCameraFrustum = class return Engine.Renderer_GetDisplayFrustumEnabled(); } }; + +DeveloperOverlayCheckboxes.prototype.DisplayShadowsFrustum = class +{ + label() + { + return translate("Display shadows frustum"); + } + + onPress(checked) + { + Engine.Renderer_SetDisplayShadowsFrustumEnabled(checked); + } + + checked() + { + return Engine.Renderer_GetDisplayShadowsFrustumEnabled(); + } +}; diff --git a/source/renderer/Renderer.cpp b/source/renderer/Renderer.cpp index b5ca16d4d1..8fa9af6a2f 100644 --- a/source/renderer/Renderer.cpp +++ b/source/renderer/Renderer.cpp @@ -1424,11 +1424,12 @@ void CRenderer::RenderSubmissions(const CBoundingBoxAligned& waterScissor) // render debug lines if (g_RenderingOptions.GetDisplayFrustum()) - { DisplayFrustum(); + + if (g_RenderingOptions.GetDisplayShadowsFrustum()) + { m->shadow.RenderDebugBounds(); m->shadow.RenderDebugTexture(); - ogl_WarnIfError(); } m->silhouetteRenderer.RenderDebugOverlays(m_ViewCamera); @@ -1499,6 +1500,8 @@ void CRenderer::DisplayFrustum() glEnable(GL_CULL_FACE); glDepthMask(1); #endif + + ogl_WarnIfError(); } /////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/source/renderer/RenderingOptions.cpp b/source/renderer/RenderingOptions.cpp index 0e2d10f5ad..f9cb6b5f4a 100755 --- a/source/renderer/RenderingOptions.cpp +++ b/source/renderer/RenderingOptions.cpp @@ -1,4 +1,4 @@ -/* Copyright (C) 2019 Wildfire Games. +/* Copyright (C) 2020 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -77,6 +77,7 @@ SRenderingOptions::SRenderingOptions() m_PostProc = false; m_ShowSky = false; m_DisplayFrustum = false; + m_DisplayShadowsFrustum = false; m_RenderActors = true; } diff --git a/source/renderer/RenderingOptions.h b/source/renderer/RenderingOptions.h index 984b18e752..ee28a8fa6e 100755 --- a/source/renderer/RenderingOptions.h +++ b/source/renderer/RenderingOptions.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2019 Wildfire Games. +/* Copyright (C) 2020 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -98,6 +98,7 @@ OPTION_CUSTOM_SETTER(NAME, TYPE); OPTION_GETTER(NAME, TYPE); OPTION_DEF(NAME, TY OPTION(ShowSky, bool); OPTION(PostProc, bool); OPTION(DisplayFrustum, bool); + OPTION(DisplayShadowsFrustum, bool); OPTION(RenderActors, bool); diff --git a/source/renderer/ShadowMap.cpp b/source/renderer/ShadowMap.cpp index 883538111c..894222f341 100644 --- a/source/renderer/ShadowMap.cpp +++ b/source/renderer/ShadowMap.cpp @@ -800,6 +800,8 @@ void ShadowMap::RenderDebugBounds() glEnable(GL_CULL_FACE); glDepthMask(1); + + ogl_WarnIfError(); } void ShadowMap::RenderDebugTexture() @@ -844,4 +846,6 @@ void ShadowMap::RenderDebugTexture() glEnable(GL_DEPTH_TEST); glDepthMask(1); + + ogl_WarnIfError(); } diff --git a/source/renderer/scripting/JSInterface_Renderer.cpp b/source/renderer/scripting/JSInterface_Renderer.cpp index ee0e7aab74..1cd5861b3e 100644 --- a/source/renderer/scripting/JSInterface_Renderer.cpp +++ b/source/renderer/scripting/JSInterface_Renderer.cpp @@ -1,4 +1,4 @@ -/* Copyright (C) 2019 Wildfire Games. +/* Copyright (C) 2020 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -52,6 +52,7 @@ IMPLEMENT_BOOLEAN_SCRIPT_SETTING(ShowSky); IMPLEMENT_BOOLEAN_SCRIPT_SETTING(SmoothLOS); IMPLEMENT_BOOLEAN_SCRIPT_SETTING(PostProc); IMPLEMENT_BOOLEAN_SCRIPT_SETTING(DisplayFrustum); +IMPLEMENT_BOOLEAN_SCRIPT_SETTING(DisplayShadowsFrustum); #undef IMPLEMENT_BOOLEAN_SCRIPT_SETTING @@ -101,6 +102,7 @@ void JSI_Renderer::RegisterScriptFunctions(const ScriptInterface& scriptInterfac REGISTER_BOOLEAN_SCRIPT_SETTING(SmoothLOS); REGISTER_BOOLEAN_SCRIPT_SETTING(PostProc); REGISTER_BOOLEAN_SCRIPT_SETTING(DisplayFrustum); + REGISTER_BOOLEAN_SCRIPT_SETTING(DisplayShadowsFrustum); } #undef REGISTER_BOOLEAN_SCRIPT_SETTING diff --git a/source/renderer/scripting/JSInterface_Renderer.h b/source/renderer/scripting/JSInterface_Renderer.h index 402de1b460..2b5efd94aa 100644 --- a/source/renderer/scripting/JSInterface_Renderer.h +++ b/source/renderer/scripting/JSInterface_Renderer.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2019 Wildfire Games. +/* Copyright (C) 2020 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -47,6 +47,7 @@ namespace JSI_Renderer DECLARE_BOOLEAN_SCRIPT_SETTING(SmoothLOS); DECLARE_BOOLEAN_SCRIPT_SETTING(PostProc); DECLARE_BOOLEAN_SCRIPT_SETTING(DisplayFrustum); + DECLARE_BOOLEAN_SCRIPT_SETTING(DisplayShadowsFrustum); void RegisterScriptFunctions(const ScriptInterface& scriptInterface); }