[Bf-blender-cvs] [4369c5817aa] master: Fix T94457: random result using sky texture in light object

Brecht Van Lommel noreply at git.blender.org
Thu Jan 20 21:45:54 CET 2022


Commit: 4369c5817aaadb8888afd697074bdadc85e1485c
Author: Brecht Van Lommel
Date:   Thu Jan 20 21:28:41 2022 +0100
Branches: master
https://developer.blender.org/rB4369c5817aaadb8888afd697074bdadc85e1485c

Fix T94457: random result using sky texture in light object

Still not well defined, but should not longer use uninitialized values that
gave different results between CPU/GPU and subsequent renders.

===================================================================

M	intern/cycles/kernel/svm/attribute.h

===================================================================

diff --git a/intern/cycles/kernel/svm/attribute.h b/intern/cycles/kernel/svm/attribute.h
index e9de0164c7a..17301028528 100644
--- a/intern/cycles/kernel/svm/attribute.h
+++ b/intern/cycles/kernel/svm/attribute.h
@@ -87,7 +87,9 @@ ccl_device_noinline void svm_node_attr(KernelGlobals kg,
   if (node.y == ATTR_STD_GENERATED && desc.element == ATTR_ELEMENT_NONE) {
     /* No generated attribute, fall back to object coordinates. */
     float3 f = sd->P;
-    object_inverse_position_transform(kg, sd, &f);
+    if (sd->object != OBJECT_NONE) {
+      object_inverse_position_transform(kg, sd, &f);
+    }
     if (type == NODE_ATTR_OUTPUT_FLOAT) {
       stack_store_float(stack, out_offset, average(f));
     }
@@ -179,7 +181,9 @@ ccl_device_noinline void svm_node_attr_bump_dx(KernelGlobals kg,
   if (node.y == ATTR_STD_GENERATED && desc.element == ATTR_ELEMENT_NONE) {
     /* No generated attribute, fall back to object coordinates. */
     float3 f = sd->P + sd->dP.dx;
-    object_inverse_position_transform(kg, sd, &f);
+    if (sd->object != OBJECT_NONE) {
+      object_inverse_position_transform(kg, sd, &f);
+    }
     if (type == NODE_ATTR_OUTPUT_FLOAT) {
       stack_store_float(stack, out_offset, average(f));
     }
@@ -275,7 +279,9 @@ ccl_device_noinline void svm_node_attr_bump_dy(KernelGlobals kg,
   if (node.y == ATTR_STD_GENERATED && desc.element == ATTR_ELEMENT_NONE) {
     /* No generated attribute, fall back to object coordinates. */
     float3 f = sd->P + sd->dP.dy;
-    object_inverse_position_transform(kg, sd, &f);
+    if (sd->object != OBJECT_NONE) {
+      object_inverse_position_transform(kg, sd, &f);
+    }
     if (type == NODE_ATTR_OUTPUT_FLOAT) {
       stack_store_float(stack, out_offset, average(f));
     }



More information about the Bf-blender-cvs mailing list