[Bf-blender-cvs] [794de3a222d] soc-2022-many-lights-sampling: Fix: light tree pdf uses wrong index
Jeffrey Liu
noreply at git.blender.org
Sun Sep 4 09:35:18 CEST 2022
Commit: 794de3a222d9bb1eb77b894a808f767f777512d2
Author: Jeffrey Liu
Date: Sun Sep 4 02:34:34 2022 -0500
Branches: soc-2022-many-lights-sampling
https://developer.blender.org/rB794de3a222d9bb1eb77b894a808f767f777512d2
Fix: light tree pdf uses wrong index
===================================================================
M intern/cycles/kernel/light/light_tree.h
===================================================================
diff --git a/intern/cycles/kernel/light/light_tree.h b/intern/cycles/kernel/light/light_tree.h
index b265530e5e8..0e41f83bd05 100644
--- a/intern/cycles/kernel/light/light_tree.h
+++ b/intern/cycles/kernel/light/light_tree.h
@@ -513,8 +513,9 @@ ccl_device float light_tree_pdf(KernelGlobals kg,
kernel_data_fetch(light_to_tree, ~prim);
ccl_global const KernelLightTreeEmitter *kemitter = &kernel_data_fetch(light_tree_emitters,
emitter);
+ const int target_leaf = kemitter->parent_index;
ccl_global const KernelLightTreeNode *kleaf = &kernel_data_fetch(light_tree_nodes,
- kemitter->parent_index);
+ target_leaf);
/* We generate a random number to use for selecting a light. */
RNGState rng_state;
@@ -551,7 +552,7 @@ ccl_device float light_tree_pdf(KernelGlobals kg,
/* If we're at the leaf node containing the light we need,
* then we iterate through the lights to find the target emitter.
* Otherwise, we randomly select one. */
- if (index == emitter) {
+ if (index == target_leaf) {
light_tree_pdf = pdf;
float target_emitter_importance = 0.0f;
More information about the Bf-blender-cvs
mailing list