From b222b78734071be28ac5f6043d39a0de72cfb368 Mon Sep 17 00:00:00 2001 From: Kelsi Date: Mon, 9 Feb 2026 20:02:52 -0800 Subject: [PATCH] Increase M2 frustum culling padding to prevent edge pop-out - Increase padding from 1.2x to 2.5x model radius - Add minimum 5 unit padding for small objects like lamps - Fixes models disappearing at viewport edges during camera rotation --- src/rendering/m2_renderer.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/rendering/m2_renderer.cpp b/src/rendering/m2_renderer.cpp index 1bdce48a..2b3abf81 100644 --- a/src/rendering/m2_renderer.cpp +++ b/src/rendering/m2_renderer.cpp @@ -1682,9 +1682,10 @@ void M2Renderer::render(const Camera& camera, const glm::mat4& view, const glm:: // Small props (barrels, lanterns, etc.) now use same distance as larger objects if (distSq > effectiveMaxDistSq) continue; - // Frustum cull with padding to prevent edge pop-out - // Add 20% radius padding so objects smoothly exit viewport - if (cullRadius > 0.0f && !frustum.intersectsSphere(instance.position, cullRadius * 1.2f)) continue; + // Frustum cull with very generous padding to prevent edge pop-out during camera rotation + // Add 150% radius padding (+ minimum 5 units) so objects remain visible at viewport edges + float paddedRadius = std::max(cullRadius * 2.5f, cullRadius + 5.0f); + if (cullRadius > 0.0f && !frustum.intersectsSphere(instance.position, paddedRadius)) continue; sortedVisible_.push_back({i, instance.modelId, distSq, effectiveMaxDistSq}); }