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:
Diffstat (limited to 'intern/cycles/render/camera.cpp')
-rw-r--r--intern/cycles/render/camera.cpp52
1 files changed, 26 insertions, 26 deletions
diff --git a/intern/cycles/render/camera.cpp b/intern/cycles/render/camera.cpp
index 3fd7a1b28e3..308ebd0794a 100644
--- a/intern/cycles/render/camera.cpp
+++ b/intern/cycles/render/camera.cpp
@@ -19,6 +19,8 @@
#include "camera.h"
#include "scene.h"
+#include "device.h"
+
#include "util_vector.h"
CCL_NAMESPACE_BEGIN
@@ -53,15 +55,10 @@ Camera::Camera()
width = 1024;
height = 512;
- left = -((float)width/(float)height);
- right = (float)width/(float)height;
- bottom = -1.0f;
- top = 1.0f;
-
- border_left = 0.0f;
- border_right = 1.0f;
- border_bottom = 0.0f;
- border_top = 1.0f;
+ viewplane.left = -((float)width/(float)height);
+ viewplane.right = (float)width/(float)height;
+ viewplane.bottom = -1.0f;
+ viewplane.top = 1.0f;
screentoworld = transform_identity();
rastertoworld = transform_identity();
@@ -93,10 +90,11 @@ void Camera::update()
/* raster to screen */
Transform screentoraster = ndctoraster;
-
+
screentoraster = ndctoraster *
- transform_scale(1.0f/(right - left), 1.0f/(top - bottom), 1.0f) *
- transform_translate(-left, -bottom, 0.0f);
+ transform_scale(1.0f/(viewplane.right - viewplane.left),
+ 1.0f/(viewplane.top - viewplane.bottom), 1.0f) *
+ transform_translate(-viewplane.left, -viewplane.bottom, 0.0f);
Transform rastertoscreen = transform_inverse(screentoraster);
@@ -141,7 +139,7 @@ void Camera::update()
void Camera::device_update(Device *device, DeviceScene *dscene, Scene *scene)
{
- Scene::MotionType need_motion = scene->need_motion();
+ Scene::MotionType need_motion = scene->need_motion(device->info.advanced_shading);
update();
@@ -160,7 +158,6 @@ void Camera::device_update(Device *device, DeviceScene *dscene, Scene *scene)
/* store matrices */
kcam->screentoworld = screentoworld;
kcam->rastertoworld = rastertoworld;
- kcam->ndctoworld = ndctoworld;
kcam->rastertocamera = rastertocamera;
kcam->cameratoworld = cameratoworld;
kcam->worldtoscreen = transform_inverse(screentoworld);
@@ -193,13 +190,14 @@ void Camera::device_update(Device *device, DeviceScene *dscene, Scene *scene)
}
}
}
+#ifdef __CAMERA_MOTION__
else if(need_motion == Scene::MOTION_BLUR) {
- /* todo: exact camera position will not be hit this way */
if(use_motion) {
- transform_motion_decompose(&kcam->motion, &motion);
+ transform_motion_decompose(&kcam->motion, &motion, &matrix);
kcam->have_motion = 1;
}
}
+#endif
/* depth of field */
kcam->aperturesize = aperturesize;
@@ -208,7 +206,11 @@ void Camera::device_update(Device *device, DeviceScene *dscene, Scene *scene)
kcam->bladesrotation = bladesrotation;
/* motion blur */
+#ifdef __CAMERA_MOTION__
kcam->shuttertime = (need_motion == Scene::MOTION_BLUR) ? shuttertime: 0.0f;
+#else
+ kcam->shuttertime = 0.0f;
+#endif
/* type */
kcam->type = type;
@@ -259,22 +261,20 @@ bool Camera::modified(const Camera& cam)
// modified for progressive render
// (width == cam.width) &&
// (height == cam.height) &&
- (left == cam.left) &&
- (right == cam.right) &&
- (bottom == cam.bottom) &&
- (top == cam.top) &&
- (border_left == cam.border_left) &&
- (border_right == cam.border_right) &&
- (border_bottom == cam.border_bottom) &&
- (border_top == cam.border_top) &&
+ (viewplane == cam.viewplane) &&
+ (border == cam.border) &&
(matrix == cam.matrix) &&
- (motion == cam.motion) &&
- (use_motion == cam.use_motion) &&
(panorama_type == cam.panorama_type) &&
(fisheye_fov == cam.fisheye_fov) &&
(fisheye_lens == cam.fisheye_lens));
}
+bool Camera::motion_modified(const Camera& cam)
+{
+ return !((motion == cam.motion) &&
+ (use_motion == cam.use_motion));
+}
+
void Camera::tag_update()
{
need_update = true;