diff options
author | Dalai Felinto <dfelinto@gmail.com> | 2019-01-11 23:58:09 +0300 |
---|---|---|
committer | Dalai Felinto <dfelinto@gmail.com> | 2019-01-12 02:51:15 +0300 |
commit | ba89b69ebdb47ac81a6081dfd7a1cb0c1e4331a0 (patch) | |
tree | a9eca0704671f9a9894319f67449355043d605e9 | |
parent | 9f6e09bd8c14ca7ae61f6f1a0b71801e06429d8b (diff) |
BKE_camera_multiview_model_matrix: Add _scaled version
For drawing it is useful to have the non-normalized version of the matrix.
So we can scale up the cameras drawing accordingly.
-rw-r--r-- | source/blender/blenkernel/BKE_camera.h | 1 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/camera.c | 7 |
2 files changed, 7 insertions, 1 deletions
diff --git a/source/blender/blenkernel/BKE_camera.h b/source/blender/blenkernel/BKE_camera.h index d8e2139be83..91f03e46723 100644 --- a/source/blender/blenkernel/BKE_camera.h +++ b/source/blender/blenkernel/BKE_camera.h @@ -140,6 +140,7 @@ void BKE_camera_to_gpu_dof(struct Object *camera, struct GPUFXSettings *r_fx_set struct Object *BKE_camera_multiview_render(struct Scene *scene, struct Object *camera, const char *viewname); void BKE_camera_multiview_view_matrix(struct RenderData *rd, const struct Object *camera, const bool is_left, float r_viewmat[4][4]); void BKE_camera_multiview_model_matrix(struct RenderData *rd, const struct Object *camera, const char *viewname, float r_modelmat[4][4]); +void BKE_camera_multiview_model_matrix_scaled(struct RenderData *rd, const struct Object *camera, const char *viewname, float r_modelmat[4][4]); float BKE_camera_multiview_shift_x(struct RenderData *rd, const struct Object *camera, const char *viewname); void BKE_camera_multiview_params(struct RenderData *rd, struct CameraParams *params, const struct Object *camera, const char *viewname); bool BKE_camera_multiview_spherical_stereo(struct RenderData *rd, const struct Object *camera); diff --git a/source/blender/blenkernel/intern/camera.c b/source/blender/blenkernel/intern/camera.c index f701538e0f9..c39c8dec25d 100644 --- a/source/blender/blenkernel/intern/camera.c +++ b/source/blender/blenkernel/intern/camera.c @@ -778,6 +778,12 @@ static bool camera_is_left(const char *viewname) void BKE_camera_multiview_model_matrix(RenderData *rd, const Object *camera, const char *viewname, float r_modelmat[4][4]) { + BKE_camera_multiview_model_matrix_scaled(rd, camera, viewname, r_modelmat); + normalize_m4(r_modelmat); +} + +void BKE_camera_multiview_model_matrix_scaled(RenderData *rd, const Object *camera, const char *viewname, float r_modelmat[4][4]) +{ const bool is_multiview = (rd && rd->scemode & R_MULTIVIEW) != 0; if (!is_multiview) { @@ -790,7 +796,6 @@ void BKE_camera_multiview_model_matrix(RenderData *rd, const Object *camera, con const bool is_left = camera_is_left(viewname); camera_stereo3d_model_matrix(camera, is_left, r_modelmat); } - normalize_m4(r_modelmat); } bool BKE_camera_multiview_spherical_stereo(RenderData *rd, const Object *camera) |