Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDalai Felinto <dfelinto@gmail.com>2019-01-11 18:38:18 +0300
committerDalai Felinto <dfelinto@gmail.com>2019-01-12 02:51:15 +0300
commitce3475f747943e031a0f3d99083a959e644530c9 (patch)
tree8c0447acb49f285f3f50b0bf7db0f6038d39865f /source/blender/blenkernel
parentba89b69ebdb47ac81a6081dfd7a1cb0c1e4331a0 (diff)
Viewport: Stereoscopy drawing is back
The viewport stereoscopy support helpers are finally ported to 2.80. We now can scale the camera and the "stereo cameras" will scale in the viewport as well (unlike 2.7x). At the moment I disabled the drawing of the camera frame when stereo is selected and you are looking through the camera. It is to be fixed later, but for now it draws the border wrong. In 2.79 this was not a problem because the camera frame was drawn afterwards as a hack. Viewport > Stereoscopy: * Cameras * Convergence plane * Convergence plane alpha * Stereoscopy volume * Stereoscopy volume alpha
Diffstat (limited to 'source/blender/blenkernel')
-rw-r--r--source/blender/blenkernel/BKE_camera.h1
-rw-r--r--source/blender/blenkernel/intern/camera.c16
2 files changed, 17 insertions, 0 deletions
diff --git a/source/blender/blenkernel/BKE_camera.h b/source/blender/blenkernel/BKE_camera.h
index 91f03e46723..6cdd232e97c 100644
--- a/source/blender/blenkernel/BKE_camera.h
+++ b/source/blender/blenkernel/BKE_camera.h
@@ -141,6 +141,7 @@ struct Object *BKE_camera_multiview_render(struct Scene *scene, struct Object *c
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]);
+void BKE_camera_multiview_window_matrix(struct RenderData *rd, const struct Object *camera, const char *viewname, float r_winmat[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 c39c8dec25d..d791ab01482 100644
--- a/source/blender/blenkernel/intern/camera.c
+++ b/source/blender/blenkernel/intern/camera.c
@@ -798,6 +798,22 @@ void BKE_camera_multiview_model_matrix_scaled(RenderData *rd, const Object *came
}
}
+void BKE_camera_multiview_window_matrix(RenderData *rd, const Object *camera, const char *viewname, float r_winmat[4][4])
+{
+ CameraParams params;
+
+ /* Setup parameters */
+ BKE_camera_params_init(&params);
+ BKE_camera_params_from_object(&params, camera);
+ BKE_camera_multiview_params(rd, &params, camera, viewname);
+
+ /* Compute matrix, viewplane, .. */
+ BKE_camera_params_compute_viewplane(&params, rd->xsch, rd->ysch, rd->xasp, rd->yasp);
+ BKE_camera_params_compute_matrix(&params);
+
+ copy_m4_m4(r_winmat, params.winmat);
+}
+
bool BKE_camera_multiview_spherical_stereo(RenderData *rd, const Object *camera)
{
Camera *cam;