[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