[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