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:
Diffstat (limited to 'intern/cycles/kernel/svm')
-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;
}