[Bf-blender-cvs] [f59db22f51d] soc-2019-npr: LANPR: Software mode now allows camera lens shift.
Yiming Wu
noreply at git.blender.org
Mon Jun 10 13:52:31 CEST 2019
Commit: f59db22f51d9d10559f92e17b3a2f3f0158aea96
Author: Yiming Wu
Date: Mon Jun 10 19:52:20 2019 +0800
Branches: soc-2019-npr
https://developer.blender.org/rBf59db22f51d9d10559f92e17b3a2f3f0158aea96
LANPR: Software mode now allows camera lens shift.
===================================================================
M source/blender/draw/engines/lanpr/lanpr_ops.c
===================================================================
diff --git a/source/blender/draw/engines/lanpr/lanpr_ops.c b/source/blender/draw/engines/lanpr/lanpr_ops.c
index 7d7e95631c9..e72b7de6eb9 100644
--- a/source/blender/draw/engines/lanpr/lanpr_ops.c
+++ b/source/blender/draw/engines/lanpr/lanpr_ops.c
@@ -1978,12 +1978,15 @@ void lanpr_perspective_division(LANPR_RenderBuffer *rb)
tMatVectorMultiSelf3d(rv[i].fbcoord, 1 / rv[i].fbcoord[3]);
// rv[i].fbcoord[2] = cam->clipsta * cam->clipend / (cam->clipend -
// fabs(rv[i].fbcoord[2]) * (cam->clipend - cam->clipsta));
+
+ rv[i].fbcoord[0] -= cam->shiftx*2;
+ rv[i].fbcoord[1] -= cam->shifty*2;
}
}
}
void lanpr_transform_render_vert(
- BMVert *v, int index, LANPR_RenderVert *RvBuf, real *MvMat, real *MvPMat, Camera *Camera)
+ BMVert *v, int index, LANPR_RenderVert *RvBuf, real *MvMat, real *MvPMat, Camera *camera)
{ // real HeightMultiply, real clipsta, real clipend) {
LANPR_RenderVert *rv = &RvBuf[index];
// rv->v = v;
@@ -2653,12 +2656,16 @@ int lanpr_triangle_line_imagespace_intersection_v2(SpinLock *spl,
lanpr_LinearInterpolate3dv(rl->l->gloc, rl->r->gloc, Cut, gloc);
tmat_apply_transform_44d(Trans, vp, gloc);
tMatVectorMultiSelf3d(Trans, (1 / Trans[3]) /**HeightMultiply/2*/);
+ Camera* camera = cam->data;
+ Trans[0] -= camera->shiftx*2;
+ Trans[1] -= camera->shifty*2;
}
else {
lanpr_LinearInterpolate3dv(rl->l->fbcoord, rl->r->fbcoord, Cut, Trans);
// tmat_apply_transform_44d(Trans, vp, gloc);
}
+
// Trans[2] = tmat_dist_3dv(gloc, cam->Base.gloc);
// Trans[2] = cam->clipsta*cam->clipend / (cam->clipend - fabs(Trans[2]) * (cam->clipend -
// cam->clipsta));
@@ -2912,6 +2919,7 @@ LANPR_RenderLine *lanpr_triangle_generate_intersection_line_only(LANPR_RenderBuf
real ZMax = ((Camera *)rb->scene->camera->data)->clip_end;
real ZMin = ((Camera *)rb->scene->camera->data)->clip_start;
LANPR_RenderVert *Share = lanpr_triangle_share_point(testing, rt);
+ Camera* cam = rb->scene->camera->data;
tMatVectorConvert3fd(rb->scene->camera->obmat[3], cl);
@@ -2994,6 +3002,11 @@ LANPR_RenderLine *lanpr_triangle_generate_intersection_line_only(LANPR_RenderBuf
tMatVectorMultiSelf3d(l->fbcoord, (1 / l->fbcoord[3]) /**HeightMultiply/2*/);
tMatVectorMultiSelf3d(r->fbcoord, (1 / r->fbcoord[3]) /**HeightMultiply/2*/);
+ l->fbcoord[0] -= cam->shiftx*2;
+ l->fbcoord[1] -= cam->shifty*2;
+ r->fbcoord[0] -= cam->shiftx*2;
+ r->fbcoord[1] -= cam->shifty*2;
+
l->fbcoord[2] = ZMin * ZMax / (ZMax - fabs(l->fbcoord[2]) * (ZMax - ZMin));
r->fbcoord[2] = ZMin * ZMax / (ZMax - fabs(r->fbcoord[2]) * (ZMax - ZMin));
More information about the Bf-blender-cvs
mailing list