diff options
author | Brecht Van Lommel <brecht@blender.org> | 2022-05-04 20:53:56 +0300 |
---|---|---|
committer | Brecht Van Lommel <brecht@blender.org> | 2022-05-04 21:01:04 +0300 |
commit | 54f447ecde72ab97c058d3b81f616751ef1677e1 (patch) | |
tree | 714dc5c8415ce36c2f84804c87d56769925d8790 /intern/cycles/kernel/svm/svm.h | |
parent | ac9ebc9de31fc923f3e867e6741298a1e1eb175f (diff) |
Fix T96718: Cycles invalid pixels when using bump normal for light emission
A shader node setup accidentally used the bump normal as emission. Bump
mapping nodes are excluded from light shader evaluation to reduce kernel size
and register pressure, but in that case should write zero instead of leaving
memory uninitialized.
Thanks to Lukas for helping identify the cause.
Diffstat (limited to 'intern/cycles/kernel/svm/svm.h')
-rw-r--r-- | intern/cycles/kernel/svm/svm.h | 20 |
1 files changed, 4 insertions, 16 deletions
diff --git a/intern/cycles/kernel/svm/svm.h b/intern/cycles/kernel/svm/svm.h index 6b969da7e52..08352a6231f 100644 --- a/intern/cycles/kernel/svm/svm.h +++ b/intern/cycles/kernel/svm/svm.h @@ -304,22 +304,13 @@ ccl_device void svm_eval_nodes(KernelGlobals kg, } break; case NODE_SET_DISPLACEMENT: - IF_KERNEL_NODES_FEATURE(BUMP) - { - svm_node_set_displacement(kg, sd, stack, node.y); - } + svm_node_set_displacement<node_feature_mask>(kg, sd, stack, node.y); break; case NODE_DISPLACEMENT: - IF_KERNEL_NODES_FEATURE(BUMP) - { - svm_node_displacement(kg, sd, stack, node); - } + svm_node_displacement<node_feature_mask>(kg, sd, stack, node); break; case NODE_VECTOR_DISPLACEMENT: - IF_KERNEL_NODES_FEATURE(BUMP) - { - offset = svm_node_vector_displacement(kg, sd, stack, node, offset); - } + offset = svm_node_vector_displacement<node_feature_mask>(kg, sd, stack, node, offset); break; case NODE_TEX_IMAGE: offset = svm_node_tex_image(kg, sd, stack, node, offset); @@ -331,10 +322,7 @@ ccl_device void svm_eval_nodes(KernelGlobals kg, offset = svm_node_tex_noise(kg, sd, stack, node.y, node.z, node.w, offset); break; case NODE_SET_BUMP: - IF_KERNEL_NODES_FEATURE(BUMP) - { - svm_node_set_bump(kg, sd, stack, node); - } + svm_node_set_bump<node_feature_mask>(kg, sd, stack, node); break; case NODE_ATTR_BUMP_DX: IF_KERNEL_NODES_FEATURE(BUMP) |