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
path: root/intern
diff options
context:
space:
mode:
authorBrecht Van Lommel <brechtvanlommel@pandora.be>2012-11-29 20:11:37 +0400
committerBrecht Van Lommel <brechtvanlommel@pandora.be>2012-11-29 20:11:37 +0400
commitf1745706adcd2337fe183e30c1b026a05c198839 (patch)
treea31b88426796223cad48f863a25079e883dc7198 /intern
parentf23b6be620a0c43c9811a2242b6c97e271746ffb (diff)
Fix cycles motion blur + OSL + object texture coordinates issue.
Diffstat (limited to 'intern')
-rw-r--r--intern/cycles/kernel/osl/osl_services.cpp13
-rw-r--r--intern/cycles/kernel/osl/osl_shader.cpp1
2 files changed, 12 insertions, 2 deletions
diff --git a/intern/cycles/kernel/osl/osl_services.cpp b/intern/cycles/kernel/osl/osl_services.cpp
index e79c509b144..e593387093c 100644
--- a/intern/cycles/kernel/osl/osl_services.cpp
+++ b/intern/cycles/kernel/osl/osl_services.cpp
@@ -80,7 +80,12 @@ bool OSLRenderServices::get_matrix(OSL::Matrix44 &result, OSL::TransformationPtr
if (object != ~0) {
#ifdef __OBJECT_MOTION__
- Transform tfm = object_fetch_transform_motion_test(kg, object, time, NULL);
+ Transform tfm;
+
+ if(time == sd->time)
+ tfm = sd->ob_tfm;
+ else
+ tfm = object_fetch_transform_motion_test(kg, object, time, NULL);
#else
Transform tfm = object_fetch_transform(kg, object, OBJECT_TRANSFORM);
#endif
@@ -106,7 +111,11 @@ bool OSLRenderServices::get_inverse_matrix(OSL::Matrix44 &result, OSL::Transform
if (object != ~0) {
#ifdef __OBJECT_MOTION__
Transform itfm;
- object_fetch_transform_motion_test(kg, object, time, &itfm);
+
+ if(time == sd->time)
+ itfm = sd->ob_itfm;
+ else
+ object_fetch_transform_motion_test(kg, object, time, &itfm);
#else
Transform itfm = object_fetch_transform(kg, object, OBJECT_INVERSE_TRANSFORM);
#endif
diff --git a/intern/cycles/kernel/osl/osl_shader.cpp b/intern/cycles/kernel/osl/osl_shader.cpp
index abf7c041cb3..2d025f12055 100644
--- a/intern/cycles/kernel/osl/osl_shader.cpp
+++ b/intern/cycles/kernel/osl/osl_shader.cpp
@@ -106,6 +106,7 @@ static void shaderdata_to_shaderglobals(KernelGlobals *kg, ShaderData *sd,
globals->dPdu = TO_VEC3(sd->dPdu);
globals->dPdv = TO_VEC3(sd->dPdv);
globals->surfacearea = (sd->object == ~0) ? 1.0f : object_surface_area(kg, sd->object);
+ globals->time = sd->time;
/* booleans */
globals->raytype = path_flag; /* todo: add our own ray types */