diff options
Diffstat (limited to 'source/blender/render/intern/initrender.c')
-rw-r--r-- | source/blender/render/intern/initrender.c | 35 |
1 files changed, 18 insertions, 17 deletions
diff --git a/source/blender/render/intern/initrender.c b/source/blender/render/intern/initrender.c index fb7f7270c13..80f6badb924 100644 --- a/source/blender/render/intern/initrender.c +++ b/source/blender/render/intern/initrender.c @@ -172,26 +172,11 @@ struct Object *RE_GetCamera(Render *re) return BKE_camera_multiview_render(re->scene, camera, re->viewname); } -static void re_camera_params_get(Render *re, CameraParams *params) -{ - copy_m4_m4(re->winmat, params->winmat); - - re->clip_start = params->clip_start; - re->clip_end = params->clip_end; - - re->viewplane = params->viewplane; -} - void RE_SetOverrideCamera(Render *re, Object *cam_ob) { re->camera_override = cam_ob; } -static void re_camera_params_stereo3d(Render *re, CameraParams *params, Object *cam_ob) -{ - BKE_camera_multiview_params(&re->r, params, cam_ob, re->viewname); -} - /* call this after InitState() */ /* per render, there's one persistent viewplane. Parts will set their own viewplanes */ void RE_SetCamera(Render *re, Object *cam_ob) @@ -201,14 +186,17 @@ void RE_SetCamera(Render *re, Object *cam_ob) /* setup parameters */ BKE_camera_params_init(¶ms); BKE_camera_params_from_object(¶ms, cam_ob); - re_camera_params_stereo3d(re, ¶ms, cam_ob); + BKE_camera_multiview_params(&re->r, ¶ms, cam_ob, re->viewname); /* compute matrix, viewplane, .. */ BKE_camera_params_compute_viewplane(¶ms, re->winx, re->winy, re->r.xasp, re->r.yasp); BKE_camera_params_compute_matrix(¶ms); /* extract results */ - re_camera_params_get(re, ¶ms); + copy_m4_m4(re->winmat, params.winmat); + re->clip_start = params.clip_start; + re->clip_end = params.clip_end; + re->viewplane = params.viewplane; } void RE_GetCameraWindow(struct Render *re, struct Object *camera, float r_winmat[4][4]) @@ -241,6 +229,19 @@ void RE_GetCameraModelMatrix(Render *re, struct Object *camera, float r_modelmat BKE_camera_multiview_model_matrix(&re->r, camera, re->viewname, r_modelmat); } +void RE_GetViewPlane(Render *re, rctf *r_viewplane, rcti *r_disprect) +{ + *r_viewplane = re->viewplane; + + /* make disprect zero when no border render, is needed to detect changes in 3d view render */ + if (re->r.mode & R_BORDER) { + *r_disprect = re->disprect; + } + else { + BLI_rcti_init(r_disprect, 0, 0, 0, 0); + } +} + /* ~~~~~~~~~~~~~~~~ part (tile) calculus ~~~~~~~~~~~~~~~~~~~~~~ */ void RE_parts_free(Render *re) |