[Bf-blender-cvs] [aa191c7ac1d] soc-2022-many-lights-sampling: Cleanup: renaming a few confusing variables

Weizhen Huang noreply at git.blender.org
Fri Nov 11 17:42:00 CET 2022


Commit: aa191c7ac1ddc544f815ea7b0ba24681766db77d
Author: Weizhen Huang
Date:   Fri Nov 11 17:41:29 2022 +0100
Branches: soc-2022-many-lights-sampling
https://developer.blender.org/rBaa191c7ac1ddc544f815ea7b0ba24681766db77d

Cleanup: renaming a few confusing variables

===================================================================

M	intern/cycles/kernel/light/area.h
M	intern/cycles/kernel/light/background.h
M	intern/cycles/kernel/light/spot.h
M	intern/cycles/kernel/types.h
M	intern/cycles/scene/light.cpp

===================================================================

diff --git a/intern/cycles/kernel/light/area.h b/intern/cycles/kernel/light/area.h
index 2e863cf81c2..7d6f2a5bef9 100644
--- a/intern/cycles/kernel/light/area.h
+++ b/intern/cycles/kernel/light/area.h
@@ -15,18 +15,18 @@ CCL_NAMESPACE_BEGIN
  * NOTE: light_p is modified when sample_coord is true. */
 ccl_device_inline float area_light_rect_sample(float3 P,
                                                ccl_private float3 *light_p,
-                                               float3 axisu,
-                                               float3 axisv,
+                                               float3 extentu,
+                                               float3 extentv,
                                                float randu,
                                                float randv,
                                                bool sample_coord)
 {
   /* In our name system we're using P for the center, which is o in the paper. */
-  float3 corner = *light_p - axisu * 0.5f - axisv * 0.5f;
-  float axisu_len, axisv_len;
+  float3 corner = *light_p - extentu * 0.5f - extentv * 0.5f;
+  float extentu_len, extentv_len;
   /* Compute local reference system R. */
-  float3 x = normalize_len(axisu, &axisu_len);
-  float3 y = normalize_len(axisv, &axisv_len);
+  float3 x = normalize_len(extentu, &extentu_len);
+  float3 y = normalize_len(extentv, &extentv_len);
   float3 z = cross(x, y);
   /* Compute rectangle coords in local reference system. */
   float3 dir = corner - P;
@@ -38,8 +38,8 @@ ccl_device_inline float area_light_rect_sample(float3 P,
   }
   float x0 = dot(dir, x);
   float y0 = dot(dir, y);
-  float x1 = x0 + axisu_len;
-  float y1 = y0 + axisv_len;
+  float x1 = x0 + extentu_len;
+  float y1 = y0 + extentv_len;
   /* Compute internal angles (gamma_i). */
   float4 diff = make_float4(x0, y1, x1, y0) - make_float4(x1, y0, x0, y1);
   float4 nz = make_float4(y0, x1, y1, x0) * diff;
@@ -106,8 +106,8 @@ ccl_device float area_light_spread_attenuation(const float3 D,
 ccl_device bool area_light_spread_clamp_area_light(const float3 P,
                                                    const float3 lightNg,
                                                    ccl_private float3 *lightP,
-                                                   ccl_private float3 *axisu,
-                                                   ccl_private float3 *axisv,
+                                                   ccl_private float3 *extentu,
+                                                   ccl_private float3 *extentv,
                                                    const float tan_spread)
 {
   /* Closest point in area light plane and distance to that plane. */
@@ -120,8 +120,8 @@ ccl_device bool area_light_spread_clamp_area_light(const float3 P,
   /* TODO: would be faster to store as normalized vector + length, also in area_light_rect_sample.
    */
   float len_u, len_v;
-  const float3 u = normalize_len(*axisu, &len_u);
-  const float3 v = normalize_len(*axisv, &len_v);
+  const float3 u = normalize_len(*extentu, &len_u);
+  const float3 v = normalize_len(*extentv, &len_v);
 
   /* Local uv coordinates of closest point. */
   const float closest_u = dot(u, closest_P - *lightP);
@@ -147,8 +147,8 @@ ccl_device bool area_light_spread_clamp_area_light(const float3 P,
   const float new_len_v = max_v - min_v;
 
   *lightP = *lightP + new_center_u * u + new_center_v * v;
-  *axisu = u * new_len_u;
-  *axisv = v * new_len_v;
+  *extentu = u * new_len_u;
+  *extentv = v * new_len_v;
 
   return true;
 }
@@ -164,8 +164,10 @@ ccl_device_inline bool area_light_sample(const ccl_global KernelLight *klight,
 {
   ls->P = make_float3(klight->co[0], klight->co[1], klight->co[2]);
 
-  float3 axisu = make_float3(klight->area.axisu[0], klight->area.axisu[1], klight->area.axisu[2]);
-  float3 axisv = make_float3(klight->area.axisv[0], klight->area.axisv[1], klight->area.axisv[2]);
+  float3 extentu = make_float3(
+      klight->area.extentu[0], klight->area.extentu[1], klight->area.extentu[2]);
+  float3 extentv = make_float3(
+      klight->area.extentv[0], klight->area.extentv[1], klight->area.extentv[2]);
   float3 Ng = make_float3(klight->area.dir[0], klight->area.dir[1], klight->area.dir[2]);
   float invarea = fabsf(klight->area.invarea);
   bool is_round = (klight->area.invarea < 0.0f);
@@ -179,29 +181,30 @@ ccl_device_inline bool area_light_sample(const ccl_global KernelLight *klight,
   float3 inplane;
 
   if (is_round || in_volume_segment) {
-    inplane = ellipse_sample(axisu * 0.5f, axisv * 0.5f, randu, randv);
+    inplane = ellipse_sample(extentu * 0.5f, extentv * 0.5f, randu, randv);
     ls->P += inplane;
     ls->pdf = invarea;
   }
   else {
     inplane = ls->P;
 
-    float3 sample_axisu = axisu;
-    float3 sample_axisv = axisv;
+    float3 sample_extentu = extentu;
+    float3 sample_extentv = extentv;
 
     if (!in_volume_segment && klight->area.tan_spread > 0.0f) {
       if (!area_light_spread_clamp_area_light(
-              P, Ng, &ls->P, &sample_axisu, &sample_axisv, klight->area.tan_spread)) {
+              P, Ng, &ls->P, &sample_extentu, &sample_extentv, klight->area.tan_spread)) {
         return false;
       }
     }
 
-    ls->pdf = area_light_rect_sample(P, &ls->P, sample_axisu, sample_axisv, randu, randv, true);
+    ls->pdf = area_light_rect_sample(
+        P, &ls->P, sample_extentu, sample_extentv, randu, randv, true);
     inplane = ls->P - inplane;
   }
 
-  const float light_u = dot(inplane, axisu) * (1.0f / dot(axisu, axisu));
-  const float light_v = dot(inplane, axisv) * (1.0f / dot(axisv, axisv));
+  const float light_u = dot(inplane, extentu) * (1.0f / dot(extentu, extentu));
+  const float light_v = dot(inplane, extentv) * (1.0f / dot(extentv, extentv));
 
   /* NOTE: Return barycentric coordinates in the same notation as Embree and OptiX. */
   ls->u = light_v + 0.5f;
@@ -253,10 +256,10 @@ ccl_device_inline bool area_light_intersect(const ccl_global KernelLight *klight
     return false;
   }
 
-  const float3 axisu = make_float3(
-      klight->area.axisu[0], klight->area.axisu[1], klight->area.axisu[2]);
-  const float3 axisv = make_float3(
-      klight->area.axisv[0], klight->area.axisv[1], klight->area.axisv[2]);
+  const float3 extentu = make_float3(
+      klight->area.extentu[0], klight->area.extentu[1], klight->area.extentu[2]);
+  const float3 extentv = make_float3(
+      klight->area.extentv[0], klight->area.extentv[1], klight->area.extentv[2]);
   const float3 Ng = make_float3(klight->area.dir[0], klight->area.dir[1], klight->area.dir[2]);
 
   /* One sided. */
@@ -268,7 +271,7 @@ ccl_device_inline bool area_light_intersect(const ccl_global KernelLight *klight
 
   float3 P;
   return ray_quad_intersect(
-      ray->P, ray->D, ray->tmin, ray->tmax, light_P, axisu, axisv, Ng, &P, t, u, v, is_round);
+      ray->P, ray->D, ray->tmin, ray->tmax, light_P, extentu, extentv, Ng, &P, t, u, v, is_round);
 }
 
 ccl_device_inline bool area_light_sample_from_intersection(
@@ -282,8 +285,10 @@ ccl_device_inline bool area_light_sample_from_intersection(
   /* area light */
   float invarea = fabsf(klight->area.invarea);
 
-  float3 axisu = make_float3(klight->area.axisu[0], klight->area.axisu[1], klight->area.axisu[2]);
-  float3 axisv = make_float3(klight->area.axisv[0], klight->area.axisv[1], klight->area.axisv[2]);
+  float3 extentu = make_float3(
+      klight->area.extentu[0], klight->area.extentu[1], klight->area.extentu[2]);
+  float3 extentv = make_float3(
+      klight->area.extentv[0], klight->area.extentv[1], klight->area.extentv[2]);
   float3 Ng = make_float3(klight->area.dir[0], klight->area.dir[1], klight->area.dir[2]);
   float3 light_P = make_float3(klight->co[0], klight->co[1], klight->co[2]);
 
@@ -297,17 +302,17 @@ ccl_device_inline bool area_light_sample_from_intersection(
     ls->pdf = invarea * lamp_light_pdf(Ng, -ray_D, ls->t);
   }
   else {
-    float3 sample_axisu = axisu;
-    float3 sample_axisv = axisv;
+    float3 sample_extentu = extentu;
+    float3 sample_extentv = extentv;
 
     if (klight->area.tan_spread > 0.0f) {
       if (!area_light_spread_clamp_area_light(
-              ray_P, Ng, &light_P, &sample_axisu, &sample_axisv, klight->area.tan_spread)) {
+              ray_P, Ng, &light_P, &sample_extentu, &sample_extentv, klight->area.tan_spread)) {
         return false;
       }
     }
 
-    ls->pdf = area_light_rect_sample(ray_P, &light_P, sample_axisu, sample_axisv, 0, 0, false);
+    ls->pdf = area_light_rect_sample(ray_P, &light_P, sample_extentu, sample_extentv, 0, 0, false);
   }
   ls->eval_fac = 0.25f * invarea;
 
@@ -329,8 +334,10 @@ ccl_device_inline float area_light_tree_weight(const ccl_global KernelLight *kli
 {
   float3 light_P = make_float3(klight->co[0], klight->co[1], klight->co[2]);
 
-  float3 axisu = make_float3(klight->area.axisu[0], klight->area.axisu[1], klight->area.axisu[2]);
-  float3 axisv = make_float3(klight->area.axisv[0], klight->area.axisv[1], klight->area.axisv[2]);
+  float3 extentu = make_float3(
+      klight->area.extentu[0], klight->area.extentu[1], klight->area.extentu[2]);
+  float3 extentv = make_float3(
+      klight->area.extentv[0], klight->area.extentv[1], klight->area.extentv[2]);
   float3 Ng = make_float3(klight->area.dir[0], klight->area.dir[1], klight->area.dir[2]);
   bool is_round = (klight->area.invarea < 0.0f);
 
@@ -341,7 +348,7 @@ ccl_device_inline float area_light_tree_weight(const ccl_global KernelLight *kli
   if (!is_round) {
     if (klight->area.tan_spread > 0.0f) {
       if (!area_light_spread_clamp_area_light(
-              P, Ng, &light_P, &axisu, &axisv, klight->area.tan_spread)) {
+              P, Ng, &light_P, &extentu, &extentv, klight->area.tan_spread)) {
         return 0.0f;
       }
     }
diff --git a/intern/cycles/kernel/light/background.h b/intern/cycles/kernel/light/background.h
index 0cf88f63551..9bb6d105340 100644
--- a/intern/cycles/kernel/light/background.h
+++ b/intern/cycles/kernel/light/background.h
@@ -166,10 +166,10 @@ ccl_device_inline float background_portal_pdf(
 
     int portal = kernel_data.background.portal_offset + p;
     const ccl_global KernelLight *klight = &kern

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list