[Bf-blender-cvs] [ba398d54c61] soc-2022-many-lights-sampling: Fix CUDA build error after recent changes
Brecht Van Lommel
noreply at git.blender.org
Wed Nov 16 19:27:31 CET 2022
Commit: ba398d54c6164acd4ca8e560a247a512004fc4f9
Author: Brecht Van Lommel
Date: Wed Nov 16 17:33:15 2022 +0100
Branches: soc-2022-many-lights-sampling
https://developer.blender.org/rBba398d54c6164acd4ca8e560a247a512004fc4f9
Fix CUDA build error after recent changes
===================================================================
M intern/cycles/kernel/light/tree.h
===================================================================
diff --git a/intern/cycles/kernel/light/tree.h b/intern/cycles/kernel/light/tree.h
index 5e2e1503ba5..ab4cbac326e 100644
--- a/intern/cycles/kernel/light/tree.h
+++ b/intern/cycles/kernel/light/tree.h
@@ -456,9 +456,8 @@ ccl_device int light_tree_cluster_select_emitter(KernelGlobals kg,
const ccl_global KernelLightTreeNode *knode,
ccl_private float *pdf_factor)
{
- float2 importance;
- float2 selected_importance = zero_float2();
- float2 total_importance = zero_float2();
+ float selected_importance[2] = {0.0f, 0.0f};
+ float total_importance[2] = {0.0f, 0.0f};
int selected_index = -1;
/* Mark emitters with zero importance. Used for resevoir when total minimum importance = 0 */
@@ -471,6 +470,7 @@ ccl_device int light_tree_cluster_select_emitter(KernelGlobals kg,
for (int i = 0; i < knode->num_prims; i++) {
int current_index = -knode->child_index + i;
/* maximum importance = importance[0], mininum importance = importance[1] */
+ float importance[2];
light_tree_emitter_importance<in_volume_segment>(
kg, P, N_or_D, t, has_transmission, current_index, importance[0], importance[1]);
@@ -510,18 +510,15 @@ ccl_device int light_tree_cluster_select_emitter(KernelGlobals kg,
rand);
has_importance >>= 1;
}
- light_tree_emitter_importance<in_volume_segment>(kg,
- P,
- N_or_D,
- t,
- has_transmission,
- selected_index,
- selected_importance[0],
- importance[1]);
+
+ float discard;
+ light_tree_emitter_importance<in_volume_segment>(
+ kg, P, N_or_D, t, has_transmission, selected_index, selected_importance[0], discard);
}
}
- *pdf_factor = average(selected_importance / total_importance);
+ *pdf_factor = 0.5f * (selected_importance[0] / total_importance[0] +
+ selected_importance[1] / total_importance[1]);
return selected_index;
}
More information about the Bf-blender-cvs
mailing list