[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