Changeset View
Changeset View
Standalone View
Standalone View
source/blender/render/intern/initrender.c
| Show First 20 Lines • Show All 166 Lines • ▼ Show 20 Lines | |||||
| /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ | /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ | ||||
| struct Object *RE_GetCamera(Render *re) | struct Object *RE_GetCamera(Render *re) | ||||
| { | { | ||||
| Object *camera = re->camera_override ? re->camera_override : re->scene->camera; | Object *camera = re->camera_override ? re->camera_override : re->scene->camera; | ||||
| return BKE_camera_multiview_render(re->scene, camera, re->viewname); | 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) | void RE_SetOverrideCamera(Render *re, Object *cam_ob) | ||||
| { | { | ||||
| re->camera_override = 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() */ | /* call this after InitState() */ | ||||
| /* per render, there's one persistent viewplane. Parts will set their own viewplanes */ | /* per render, there's one persistent viewplane. Parts will set their own viewplanes */ | ||||
| void RE_SetCamera(Render *re, Object *cam_ob) | void RE_SetCamera(Render *re, Object *cam_ob) | ||||
| { | { | ||||
| CameraParams params; | CameraParams params; | ||||
| /* setup parameters */ | /* setup parameters */ | ||||
| BKE_camera_params_init(¶ms); | BKE_camera_params_init(¶ms); | ||||
| BKE_camera_params_from_object(¶ms, cam_ob); | 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, .. */ | /* compute matrix, viewplane, .. */ | ||||
| BKE_camera_params_compute_viewplane(¶ms, re->winx, re->winy, re->r.xasp, re->r.yasp); | BKE_camera_params_compute_viewplane(¶ms, re->winx, re->winy, re->r.xasp, re->r.yasp); | ||||
| BKE_camera_params_compute_matrix(¶ms); | BKE_camera_params_compute_matrix(¶ms); | ||||
| /* extract results */ | /* 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]) | void RE_GetCameraWindow(struct Render *re, struct Object *camera, float r_winmat[4][4]) | ||||
| { | { | ||||
| RE_SetCamera(re, camera); | RE_SetCamera(re, camera); | ||||
| copy_m4_m4(r_winmat, re->winmat); | copy_m4_m4(r_winmat, re->winmat); | ||||
| } | } | ||||
| Show All 16 Lines | void RE_GetCameraWindowWithOverscan(struct Render *re, float overscan, float r_winmat[4][4]) | ||||
| copy_m4_m4(r_winmat, params.winmat); | copy_m4_m4(r_winmat, params.winmat); | ||||
| } | } | ||||
| void RE_GetCameraModelMatrix(Render *re, struct Object *camera, float r_modelmat[4][4]) | void RE_GetCameraModelMatrix(Render *re, struct Object *camera, float r_modelmat[4][4]) | ||||
| { | { | ||||
| BKE_camera_multiview_model_matrix(&re->r, camera, re->viewname, 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 ~~~~~~~~~~~~~~~~~~~~~~ */ | /* ~~~~~~~~~~~~~~~~ part (tile) calculus ~~~~~~~~~~~~~~~~~~~~~~ */ | ||||
| void RE_parts_free(Render *re) | void RE_parts_free(Render *re) | ||||
| { | { | ||||
| if (re->parts) { | if (re->parts) { | ||||
| BLI_ghash_free(re->parts, NULL, MEM_freeN); | BLI_ghash_free(re->parts, NULL, MEM_freeN); | ||||
| re->parts = NULL; | re->parts = NULL; | ||||
| } | } | ||||
| ▲ Show 20 Lines • Show All 79 Lines • Show Last 20 Lines | |||||