[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [42731] trunk/blender/intern/cycles: Fix #29653: fix wrong cycles depth of field distance when rendering with a
Brecht Van Lommel
brechtvanlommel at pandora.be
Mon Dec 19 15:23:25 CET 2011
Revision: 42731
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=42731
Author: blendix
Date: 2011-12-19 14:23:24 +0000 (Mon, 19 Dec 2011)
Log Message:
-----------
Fix #29653: fix wrong cycles depth of field distance when rendering with a
scaled camera.
Modified Paths:
--------------
trunk/blender/intern/cycles/blender/blender_camera.cpp
trunk/blender/intern/cycles/util/util_transform.h
Modified: trunk/blender/intern/cycles/blender/blender_camera.cpp
===================================================================
--- trunk/blender/intern/cycles/blender/blender_camera.cpp 2011-12-19 14:23:19 UTC (rev 42730)
+++ trunk/blender/intern/cycles/blender/blender_camera.cpp 2011-12-19 14:23:24 UTC (rev 42731)
@@ -207,6 +207,7 @@
/* transform, note the blender camera points along the negative z-axis */
cam->matrix = bcam->matrix * transform_scale(1.0f, 1.0f, -1.0f);
+ cam->matrix = transform_clear_scale(cam->matrix);
/* set update flag */
if(cam->modified(prevcam))
Modified: trunk/blender/intern/cycles/util/util_transform.h
===================================================================
--- trunk/blender/intern/cycles/util/util_transform.h 2011-12-19 14:23:19 UTC (rev 42730)
+++ trunk/blender/intern/cycles/util/util_transform.h 2011-12-19 14:23:24 UTC (rev 42731)
@@ -209,6 +209,13 @@
return make_float3(t->x[column], t->y[column], t->z[column]);
}
+__device_inline void transform_set_column(Transform *t, int column, float3 value)
+{
+ t->x[column] = value.x;
+ t->y[column] = value.y;
+ t->z[column] = value.z;
+}
+
Transform transform_inverse(const Transform& a);
__device_inline bool transform_uniform_scale(const Transform& tfm, float& scale)
@@ -244,6 +251,17 @@
return (dot(cross(c0, c1), c2) < 0.0f);
}
+__device_inline Transform transform_clear_scale(const Transform& tfm)
+{
+ Transform ntfm = tfm;
+
+ transform_set_column(&ntfm, 0, normalize(transform_get_column(&ntfm, 0)));
+ transform_set_column(&ntfm, 1, normalize(transform_get_column(&ntfm, 1)));
+ transform_set_column(&ntfm, 2, normalize(transform_get_column(&ntfm, 2)));
+
+ return ntfm;
+}
+
#endif
CCL_NAMESPACE_END
More information about the Bf-blender-cvs
mailing list