From 4e968d9c4c458d76b14be5b4a57644a67979b7f4 Mon Sep 17 00:00:00 2001 From: Rachael Alexanderson Date: Sat, 2 Jun 2018 05:03:27 -0400 Subject: [PATCH] - activate r_line_distance_cull in the hardware renderer --- src/hwrenderer/scene/hw_bsp.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/hwrenderer/scene/hw_bsp.cpp b/src/hwrenderer/scene/hw_bsp.cpp index 4393424c1..8f561c289 100644 --- a/src/hwrenderer/scene/hw_bsp.cpp +++ b/src/hwrenderer/scene/hw_bsp.cpp @@ -75,6 +75,21 @@ void HWDrawInfo::UnclipSubsector(subsector_t *sub) // //========================================================================== +EXTERN_CVAR(Float, r_line_distance_cull) + +inline bool IsDistanceCulled(seg_t *line) +{ + double dist3 = r_line_distance_cull * r_line_distance_cull; + if (dist3 <= 0.0) + return false; + + double dist1 = (line->v1->fPos() - r_viewpoint.Pos).LengthSquared(); + double dist2 = (line->v2->fPos() - r_viewpoint.Pos).LengthSquared(); + if ((dist1 > dist3) && (dist2 > dist3)) + return true; + return false; +} + void HWDrawInfo::AddLine (seg_t *seg, bool portalclip) { #ifdef _DEBUG @@ -123,6 +138,8 @@ void HWDrawInfo::AddLine (seg_t *seg, bool portalclip) uint8_t ispoly = uint8_t(seg->sidedef->Flags & WALLF_POLYOBJ); + if (IsDistanceCulled(seg)) { clipper.SafeAddClipRange(startAngle, endAngle); return; } + if (!seg->backsector) { clipper.SafeAddClipRange(startAngle, endAngle);