From cf240d95c19ec2a7acc9351f59e1922f06644e41 Mon Sep 17 00:00:00 2001 From: rdb Date: Tue, 17 Jul 2018 22:59:54 +0200 Subject: [PATCH] gobj: support infinite near distance in PerspectiveLens Useful when rendering with near/far planes flipped around. --- panda/src/gobj/perspectiveLens.cxx | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/panda/src/gobj/perspectiveLens.cxx b/panda/src/gobj/perspectiveLens.cxx index 0fc83ec15b..160ae74aca 100644 --- a/panda/src/gobj/perspectiveLens.cxx +++ b/panda/src/gobj/perspectiveLens.cxx @@ -71,9 +71,14 @@ do_compute_projection_mat(Lens::CData *lens_cdata) { PN_stdfloat fNear = do_get_near(lens_cdata); PN_stdfloat a, b; + // Take the limits if either near or far is infinite. if (cinf(fFar)) { a = 1; b = -2 * fNear; + } else if (cinf(fNear)) { + // This is valid if the near/far planes are inverted. + a = -1; + b = 2 * fFar; } else { PN_stdfloat far_minus_near = fFar-fNear; a = (fFar + fNear);