From 3187042a96f0b364c1902df313b981ea099bf627 Mon Sep 17 00:00:00 2001 From: Joakim Kilby Date: Thu, 9 Nov 2023 14:28:57 +0100 Subject: [PATCH] make horizon culling optional (and a property) --- modules/globebrowsing/src/renderableglobe.cpp | 15 +++++++++++---- modules/globebrowsing/src/renderableglobe.h | 1 + 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/modules/globebrowsing/src/renderableglobe.cpp b/modules/globebrowsing/src/renderableglobe.cpp index 30dc339291..bec5564a14 100644 --- a/modules/globebrowsing/src/renderableglobe.cpp +++ b/modules/globebrowsing/src/renderableglobe.cpp @@ -72,7 +72,6 @@ namespace { // Global flags to modify the RenderableGlobe constexpr bool LimitLevelByAvailableData = true; - constexpr bool PreformHorizonCulling = true; // Shadow structure struct ShadowRenderingStruct { @@ -133,6 +132,13 @@ namespace { openspace::properties::Property::Visibility::AdvancedUser }; + constexpr openspace::properties::Property::PropertyInfo PerformHorizonCullingInfo = { + "PerformHorizonCulling", + "Perform horizon culling", + "If this value is set to 'true', horizon culling will be performed.", + openspace::properties::Property::Visibility::AdvancedUser + }; + constexpr openspace::properties::Property::PropertyInfo ResetTileProviderInfo = { "ResetTileProviders", "Reset tile providers", @@ -577,6 +583,7 @@ RenderableGlobe::RenderableGlobe(const ghoul::Dictionary& dictionary) BoolProperty(LevelProjectedAreaInfo, true), BoolProperty(ResetTileProviderInfo, false), BoolProperty(PerformFrustumCullingInfo, true), + BoolProperty(PerformHorizonCullingInfo, true), IntProperty(ModelSpaceRenderingInfo, 14, 1, 22), IntProperty(DynamicLodIterationCountInfo, 16, 4, 128) }) @@ -708,6 +715,7 @@ RenderableGlobe::RenderableGlobe(const ghoul::Dictionary& dictionary) _debugPropertyOwner.addProperty(_debugProperties.levelByProjectedAreaElseDistance); _debugPropertyOwner.addProperty(_debugProperties.resetTileProviders); _debugPropertyOwner.addProperty(_debugProperties.performFrustumCulling); + _debugPropertyOwner.addProperty(_debugProperties.performHorizonCulling); _debugPropertyOwner.addProperty(_debugProperties.modelSpaceRenderingCutoffLevel); _debugPropertyOwner.addProperty(_debugProperties.dynamicLodIterationCount); @@ -2073,9 +2081,8 @@ bool RenderableGlobe::testIfCullable(const Chunk& chunk, { ZoneScoped; - return (PreformHorizonCulling && isCullableByHorizon(chunk, renderData, heights)) || - (_debugProperties.performFrustumCulling && - isCullableByFrustum(chunk, renderData, mvp)); + return (_debugProperties.performHorizonCulling && isCullableByHorizon(chunk, renderData, heights)) || + (_debugProperties.performFrustumCulling && isCullableByFrustum(chunk, renderData, mvp)); } int RenderableGlobe::desiredLevel(const Chunk& chunk, const RenderData& renderData, diff --git a/modules/globebrowsing/src/renderableglobe.h b/modules/globebrowsing/src/renderableglobe.h index edaf544acf..7726475f48 100644 --- a/modules/globebrowsing/src/renderableglobe.h +++ b/modules/globebrowsing/src/renderableglobe.h @@ -136,6 +136,7 @@ private: properties::BoolProperty levelByProjectedAreaElseDistance; properties::BoolProperty resetTileProviders; properties::BoolProperty performFrustumCulling; + properties::BoolProperty performHorizonCulling; properties::IntProperty modelSpaceRenderingCutoffLevel; properties::IntProperty dynamicLodIterationCount; } _debugProperties;