[Bf-blender-cvs] [e9918d67e2e] soc-2022-many-lights-sampling: Fix address of vector element requested error
Weizhen Huang
noreply at git.blender.org
Tue Nov 29 18:45:08 CET 2022
Commit: e9918d67e2e09226636cdeae300ad4f73fb6fb8f
Author: Weizhen Huang
Date: Tue Nov 29 18:43:43 2022 +0100
Branches: soc-2022-many-lights-sampling
https://developer.blender.org/rBe9918d67e2e09226636cdeae300ad4f73fb6fb8f
Fix address of vector element requested error
===================================================================
M intern/cycles/kernel/light/area.h
M intern/cycles/kernel/light/point.h
M intern/cycles/kernel/light/triangle.h
===================================================================
diff --git a/intern/cycles/kernel/light/area.h b/intern/cycles/kernel/light/area.h
index 8daadebe67d..2108073c199 100644
--- a/intern/cycles/kernel/light/area.h
+++ b/intern/cycles/kernel/light/area.h
@@ -335,8 +335,9 @@ ccl_device_forceinline bool area_light_tree_parameters(const ccl_global KernelLi
if (!in_volume_segment) {
/* TODO: a cheap substitute for minimal distance between point and primitive. Does it
* worth the overhead to compute the accurate minimal distance? */
- point_to_centroid = safe_normalize_len(centroid - P, &distance.y);
- distance.x = distance.y;
+ float min_distance;
+ point_to_centroid = safe_normalize_len(centroid - P, &min_distance);
+ distance = make_float2(min_distance, min_distance);
}
const float3 extentu = klight->area.extentu;
diff --git a/intern/cycles/kernel/light/point.h b/intern/cycles/kernel/light/point.h
index 7597bc12b84..bf85877e373 100644
--- a/intern/cycles/kernel/light/point.h
+++ b/intern/cycles/kernel/light/point.h
@@ -121,13 +121,14 @@ ccl_device_forceinline bool point_light_tree_parameters(const ccl_global KernelL
cos_theta_u = 1.0f; /* Any value in [-1, 1], irrelevant since theta = 0 */
return true;
}
- point_to_centroid = safe_normalize_len(centroid - P, &distance.y);
+ float min_distance;
+ point_to_centroid = safe_normalize_len(centroid - P, &min_distance);
const float radius = klight->spot.radius;
const float hypotenus = sqrtf(sqr(radius) + sqr(distance.y));
cos_theta_u = distance.y / hypotenus;
- distance.x = hypotenus;
+ distance = make_float2(hypotenus, min_distance);
return true;
}
diff --git a/intern/cycles/kernel/light/triangle.h b/intern/cycles/kernel/light/triangle.h
index af40b05e70b..fa9327b8ac6 100644
--- a/intern/cycles/kernel/light/triangle.h
+++ b/intern/cycles/kernel/light/triangle.h
@@ -298,8 +298,9 @@ ccl_device_forceinline bool triangle_light_tree_parameters(
if (!in_volume_segment) {
/* TODO: a cheap substitute for minimal distance between point and primitive. Does it
* worth the overhead to compute the accurate minimal distance? */
- point_to_centroid = safe_normalize_len(centroid - P, &distance.y);
- distance.x = distance.y;
+ float min_distance;
+ point_to_centroid = safe_normalize_len(centroid - P, &min_distance);
+ distance = make_float2(min_distance, min_distance);
}
const int object = kemitter->mesh_light.object_id;
More information about the Bf-blender-cvs
mailing list