[Bf-blender-cvs] [6e7e6832e87] master: Fix T62814: Camera frame invisible with large near-clip value

Campbell Barton noreply at git.blender.org
Fri Mar 22 07:30:30 CET 2019


Commit: 6e7e6832e878de3c0032420de97a45279ef31c1a
Author: Campbell Barton
Date:   Fri Mar 22 17:27:39 2019 +1100
Branches: master
https://developer.blender.org/rB6e7e6832e878de3c0032420de97a45279ef31c1a

Fix T62814: Camera frame invisible with large near-clip value

===================================================================

M	source/blender/draw/modes/object_mode.c

===================================================================

diff --git a/source/blender/draw/modes/object_mode.c b/source/blender/draw/modes/object_mode.c
index 6a4e459ef56..82a660dfd5f 100644
--- a/source/blender/draw/modes/object_mode.c
+++ b/source/blender/draw/modes/object_mode.c
@@ -1853,6 +1853,21 @@ static void DRW_shgroup_camera(OBJECT_ShadingGroupList *sgl, Object *ob, ViewLay
 	BKE_camera_view_frame_ex(scene, cam, cam->drawsize, false, scale,
 	                         asp, shift, &drawsize, vec);
 
+	if (look_through) {
+		/* Ensure the frame isn't behind the near clipping plane, T62814. */
+		float fac = (cam->clip_start + 0.1f) / -vec[0][2];
+		if (fac > 1.0f) {
+			for (uint i = 0; i < 4; i++) {
+				if (rv3d->is_persp) {
+					mul_v3_fl(vec[i], fac);
+				}
+				else {
+					vec[i][2] *= fac;
+				}
+			}
+		}
+	}
+
 	/* Frame coords */
 	copy_v2_v2(cam->runtime.drw_corners[0][0], vec[0]);
 	copy_v2_v2(cam->runtime.drw_corners[0][1], vec[1]);



More information about the Bf-blender-cvs mailing list