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-10-13 16:11:01 +0400
committerBrecht Van Lommel <brechtvanlommel@pandora.be>2012-10-13 16:11:01 +0400
commit51105bb2bd57b1a56517b30384304326b6bc75fb (patch)
tree385cc582092dc53042273f64ea9586754d4c2f8a /intern/cycles/kernel/svm/svm_geometry.h
parentee67123748c80463164278e1f295c5ae6ff728f7 (diff)
Fix for wrong cycles tangent in some cases, was missing transform.
Diffstat (limited to 'intern/cycles/kernel/svm/svm_geometry.h')
-rw-r--r--intern/cycles/kernel/svm/svm_geometry.h16
1 files changed, 11 insertions, 5 deletions
diff --git a/intern/cycles/kernel/svm/svm_geometry.h b/intern/cycles/kernel/svm/svm_geometry.h
index 582c079fd6a..30afd6322a7 100644
--- a/intern/cycles/kernel/svm/svm_geometry.h
+++ b/intern/cycles/kernel/svm/svm_geometry.h
@@ -29,12 +29,18 @@ __device void svm_node_geometry(KernelGlobals *kg, ShaderData *sd, float *stack,
case NODE_GEOM_N: data = sd->N; break;
#ifdef __DPDU__
case NODE_GEOM_T: {
- int attr_offset = find_attribute(kg, sd, ATTR_STD_TANGENT);
-
- if(attr_offset == ATTR_STD_NOT_FOUND)
- data = normalize(sd->dPdu);
+ if(sd->object != ~0) {
+ int attr_offset = find_attribute(kg, sd, ATTR_STD_TANGENT);
+
+ if(attr_offset != ATTR_STD_NOT_FOUND) {
+ data = triangle_attribute_float3(kg, sd, ATTR_ELEMENT_VERTEX, attr_offset, NULL, NULL);
+ object_normal_transform(kg, sd, &data);
+ }
+ else
+ data = normalize(sd->dPdu);
+ }
else
- data = triangle_attribute_float3(kg, sd, ATTR_ELEMENT_VERTEX, attr_offset, NULL, NULL);
+ data = normalize(sd->dPdu);
break;
}