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:
authorBrecht Van Lommel <brechtvanlommel@pandora.be>2012-05-07 14:53:09 +0400
committerBrecht Van Lommel <brechtvanlommel@pandora.be>2012-05-07 14:53:09 +0400
commit022d12a721b04799423edf646b2a08bd48edfe6a (patch)
treed5eb7265e0a142708f8de1d05b6e4f4ec34e5604 /intern/cycles/render/camera.cpp
parent69fc654f94cc16176248aeeef89dddd03ffebdc8 (diff)
Fix most of #31307: cycles panorama camera not working correct with speed
vectors and window texture coordinates. Only for Fisheye Equisolid it's still not working correct yet. Patch from Dalai with modifications.
Diffstat (limited to 'intern/cycles/render/camera.cpp')
-rw-r--r--intern/cycles/render/camera.cpp26
1 files changed, 21 insertions, 5 deletions
diff --git a/intern/cycles/render/camera.cpp b/intern/cycles/render/camera.cpp
index 95405519cc0..3ecffab7cbc 100644
--- a/intern/cycles/render/camera.cpp
+++ b/intern/cycles/render/camera.cpp
@@ -158,13 +158,25 @@ void Camera::device_update(Device *device, DeviceScene *dscene, Scene *scene)
kcam->have_motion = 0;
if(need_motion == Scene::MOTION_PASS) {
- if(use_motion) {
- kcam->motion.pre = transform_inverse(motion.pre * rastertocamera);
- kcam->motion.post = transform_inverse(motion.post * rastertocamera);
+ if(type == CAMERA_PANORAMA) {
+ if(use_motion) {
+ kcam->motion.pre = transform_inverse(motion.pre);
+ kcam->motion.post = transform_inverse(motion.post);
+ }
+ else {
+ kcam->motion.pre = kcam->worldtocamera;
+ kcam->motion.post = kcam->worldtocamera;
+ }
}
else {
- kcam->motion.pre = worldtoraster;
- kcam->motion.post = worldtoraster;
+ if(use_motion) {
+ kcam->motion.pre = transform_inverse(motion.pre * rastertocamera);
+ kcam->motion.post = transform_inverse(motion.post * rastertocamera);
+ }
+ else {
+ kcam->motion.pre = worldtoraster;
+ kcam->motion.post = worldtoraster;
+ }
}
}
else if(need_motion == Scene::MOTION_BLUR) {
@@ -196,6 +208,10 @@ void Camera::device_update(Device *device, DeviceScene *dscene, Scene *scene)
kcam->sensorwidth = sensorwidth;
kcam->sensorheight = sensorheight;
+ /* render size */
+ kcam->width = width;
+ kcam->height = height;
+
/* store differentials */
kcam->dx = float3_to_float4(dx);
kcam->dy = float3_to_float4(dy);