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;
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
List details, subscription details or unsubscribe:
https://lists.blender.org/mailman/listinfo/bf-blender-cvs