[Bf-blender-cvs] [9c6ef48315c] soc-2020-production-ready-light-tree-2: Cycles: Removed some unused light tree code

Sam Kottler noreply at git.blender.org
Mon Aug 17 20:39:02 CEST 2020


Commit: 9c6ef48315c47a39caf53bd2a8ed6bd6542287da
Author: Sam Kottler
Date:   Mon Aug 17 13:38:50 2020 -0500
Branches: soc-2020-production-ready-light-tree-2
https://developer.blender.org/rB9c6ef48315c47a39caf53bd2a8ed6bd6542287da

Cycles: Removed some unused light tree code

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

M	intern/cycles/kernel/kernel_bake.h
M	intern/cycles/kernel/kernel_emission.h
M	intern/cycles/kernel/kernel_path.h
M	intern/cycles/kernel/kernel_path_surface.h
M	intern/cycles/kernel/kernel_path_volume.h
M	intern/cycles/kernel/kernel_types.h

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

diff --git a/intern/cycles/kernel/kernel_bake.h b/intern/cycles/kernel/kernel_bake.h
index 4bd6fa84c3a..3a4c705a886 100644
--- a/intern/cycles/kernel/kernel_bake.h
+++ b/intern/cycles/kernel/kernel_bake.h
@@ -64,8 +64,7 @@ ccl_device_noinline void compute_light_pass(
 
     /* sample emission */
     if ((pass_filter & BAKE_FILTER_EMISSION) && (sd->flag & SD_EMISSION)) {
-      float3 emission = indirect_primitive_emission(
-          kg, sd, 0.0f, sd->P_pick, sd->N_pick, state.flag, state.ray_pdf);
+      float3 emission = indirect_primitive_emission(kg, sd, 0.0f, state.flag, state.ray_pdf);
       path_radiance_accum_emission(kg, L, &state, throughput, emission);
     }
 
@@ -123,8 +122,7 @@ ccl_device_noinline void compute_light_pass(
 
     /* sample emission */
     if ((pass_filter & BAKE_FILTER_EMISSION) && (sd->flag & SD_EMISSION)) {
-      float3 emission = indirect_primitive_emission(
-          kg, sd, 0.0f, sd->P_pick, sd->N_pick, state.flag, state.ray_pdf);
+      float3 emission = indirect_primitive_emission(kg, sd, 0.0f, state.flag, state.ray_pdf);
       path_radiance_accum_emission(kg, L, &state, throughput, emission);
     }
 
diff --git a/intern/cycles/kernel/kernel_emission.h b/intern/cycles/kernel/kernel_emission.h
index 2a864ab24d0..6c6d8808753 100644
--- a/intern/cycles/kernel/kernel_emission.h
+++ b/intern/cycles/kernel/kernel_emission.h
@@ -207,7 +207,7 @@ ccl_device_noinline_cpu bool direct_emission(KernelGlobals *kg,
 /* Indirect Primitive Emission */
 
 ccl_device_noinline_cpu float3 indirect_primitive_emission(
-    KernelGlobals *kg, ShaderData *sd, float t, float3 P, float3 N, int path_flag, float bsdf_pdf)
+    KernelGlobals *kg, ShaderData *sd, float t, int path_flag, float bsdf_pdf)
 {
   /* evaluate emissive closure */
   float3 L = shader_emissive_eval(sd);
@@ -222,12 +222,7 @@ ccl_device_noinline_cpu float3 indirect_primitive_emission(
     /* multiple importance sampling, get triangle light pdf,
      * and compute weight with respect to BSDF pdf */
     float pdf = triangle_light_pdf(kg, sd, t);
-    if ((path_flag & PATH_RAY_VOLUME_SCATTER) && sd->t_pick > 0.0f) {
-      pdf *= light_distribution_pdf(kg, sd->P_pick, sd->N_pick, sd->t_pick, sd->prim, sd->object);
-    }
-    else {
-      pdf *= light_distribution_pdf(kg, P, N, -1.0f, sd->prim, sd->object);
-    }
+    pdf *= light_distribution_pdf(kg, sd->P_pick, sd->N_pick, sd->t_pick, sd->prim, sd->object);
     float mis_weight = power_heuristic(bsdf_pdf, pdf);
 
     return L * mis_weight;
@@ -241,7 +236,6 @@ ccl_device_noinline_cpu float3 indirect_primitive_emission(
 ccl_device_noinline_cpu void indirect_lamp_emission(KernelGlobals *kg,
                                                     ShaderData *emission_sd,
                                                     ccl_addr_space PathState *state,
-                                                    float3 N,
                                                     PathRadiance *L,
                                                     Ray *ray,
                                                     float3 throughput)
@@ -285,13 +279,8 @@ ccl_device_noinline_cpu void indirect_lamp_emission(KernelGlobals *kg,
        * and compute weight with respect to BSDF pdf */
 
       /* multiply with light picking probablity to pdf */
-      if ((state->flag & PATH_RAY_VOLUME_SCATTER) && emission_sd->t_pick > 0.0f) {
-        ls.pdf *= light_distribution_pdf(
-            kg, emission_sd->P_pick, emission_sd->N_pick, emission_sd->t_pick, ~ls.lamp, -1);
-      }
-      else {
-        ls.pdf *= light_distribution_pdf(kg, ray->P, N, -1.0f, ~ls.lamp, -1);
-      }
+      ls.pdf *= light_distribution_pdf(
+          kg, emission_sd->P_pick, emission_sd->N_pick, emission_sd->t_pick, ~ls.lamp, -1);
       float mis_weight = power_heuristic(state->ray_pdf, ls.pdf);
       lamp_L *= mis_weight;
     }
@@ -304,7 +293,6 @@ ccl_device_noinline_cpu void indirect_lamp_emission(KernelGlobals *kg,
 
 ccl_device_noinline_cpu float3 indirect_background(KernelGlobals *kg,
                                                    ShaderData *emission_sd,
-                                                   float3 N,
                                                    ccl_addr_space PathState *state,
                                                    ccl_global float *buffer,
                                                    ccl_addr_space Ray *ray)
@@ -343,22 +331,15 @@ ccl_device_noinline_cpu float3 indirect_background(KernelGlobals *kg,
 
   /* Background MIS weights. */
 #  ifdef __BACKGROUND_MIS__
+  /* Check if background light exists or if we should skip pdf. */
 
   /* consider shading point at previous non-transparent bounce */
-  float3 P_pick;
-  float3 N_pick;
-
-  P_pick = ray->P - state->ray_t * ray->D;
-  N_pick = state->ray_N;
-
-  /* check if background light exists or if we should skip pdf */
+  float3 P_pick = ray->P - state->ray_t * ray->D;
 
   if (!(state->flag & PATH_RAY_MIS_SKIP) && kernel_data.background.use_mis) {
     /* multiple importance sampling, get background light pdf for ray
      * direction, and compute weight with respect to BSDF pdf */
     float pdf = background_light_pdf(kg, P_pick, ray->D);
-    int background_index = kernel_data.integrator.background_light_index;
-    pdf *= light_distribution_pdf(kg, P_pick, N_pick, 1.0f, ~background_index, -1);
     float mis_weight = power_heuristic(state->ray_pdf, pdf);
 
     return L * mis_weight;
diff --git a/intern/cycles/kernel/kernel_path.h b/intern/cycles/kernel/kernel_path.h
index b2f207bc41f..871004db769 100644
--- a/intern/cycles/kernel/kernel_path.h
+++ b/intern/cycles/kernel/kernel_path.h
@@ -97,9 +97,8 @@ ccl_device_forceinline void kernel_path_lamp_emission(KernelGlobals *kg,
   if (kernel_data.integrator.use_lamp_mis && !(state->flag & PATH_RAY_CAMERA)) {
     /* ray starting from previous non-transparent bounce */
     Ray light_ray ccl_optional_struct_init;
-    float3 N_pick;
+
     light_ray.P = ray->P - state->ray_t * ray->D;
-    N_pick = state->ray_N;
 
     state->ray_t += isect->t;
     light_ray.D = ray->D;
@@ -109,7 +108,7 @@ ccl_device_forceinline void kernel_path_lamp_emission(KernelGlobals *kg,
     light_ray.dP = ray->dP;
 
     /* intersect with lamp */
-    indirect_lamp_emission(kg, emission_sd, state, N_pick, L, &light_ray, throughput);
+    indirect_lamp_emission(kg, emission_sd, state, L, &light_ray, throughput);
   }
 #endif /* __LAMP_MIS__ */
 }
@@ -140,7 +139,7 @@ ccl_device_forceinline void kernel_path_background(KernelGlobals *kg,
 
 #ifdef __BACKGROUND__
   /* sample background shader */
-  float3 L_background = indirect_background(kg, sd, sd->N_pick, state, buffer, ray);
+  float3 L_background = indirect_background(kg, sd, state, buffer, ray);
   path_radiance_accum_background(kg, L, state, throughput, L_background);
 #endif /* __BACKGROUND__ */
 }
@@ -275,7 +274,7 @@ ccl_device_forceinline bool kernel_path_shader_apply(KernelGlobals *kg,
 
       float3 bg = make_float3(0.0f, 0.0f, 0.0f);
       if (!kernel_data.background.transparent) {
-        bg = indirect_background(kg, emission_sd, sd->N_pick, state, NULL, ray);
+        bg = indirect_background(kg, emission_sd, state, NULL, ray);
       }
       path_radiance_accum_shadowcatcher(L, throughput, bg);
     }
@@ -317,25 +316,12 @@ ccl_device_forceinline bool kernel_path_shader_apply(KernelGlobals *kg,
 #ifdef __EMISSION__
   /* emission */
   if (sd->flag & SD_EMISSION) {
-
-    /* ray starting from previous non-transparent bounce */
-    float3 P_pick;
-    float3 N_pick;
-    P_pick = ray->P - state->ray_t * ray->D;
-    N_pick = state->ray_N;
-
-    float ray_length = state->ray_t + sd->ray_length;
-
     float3 emission = indirect_primitive_emission(
-        kg, sd, ray_length, P_pick, N_pick, state->flag, state->ray_pdf);
+        kg, sd, sd->ray_length, state->flag, state->ray_pdf);
     path_radiance_accum_emission(kg, L, state, throughput, emission);
   }
 #endif /* __EMISSION__ */
 
-#if defined(__LAMP_MIS__) || defined(__EMISSION__) || defined(__BACKGROUND_MIS__)
-  state->ray_t += sd->ray_length;
-#endif
-
   return true;
 }
 
diff --git a/intern/cycles/kernel/kernel_path_surface.h b/intern/cycles/kernel/kernel_path_surface.h
index 71275bda499..576b307bec2 100644
--- a/intern/cycles/kernel/kernel_path_surface.h
+++ b/intern/cycles/kernel/kernel_path_surface.h
@@ -327,7 +327,7 @@ ccl_device_noinline_cpu void kernel_branched_path_surface_connect_light(
   else {
     int num_lights = 0;
     if (kernel_data.integrator.use_direct_light) {
-      if (sample_all_lights && !use_light_tree) {
+      if (sample_all_lights) {
         num_lights = kernel_data.integrator.num_all_lights;
         if (kernel_data.integrator.pdf_triangles != 0.0f) {
           num_lights += 1;
@@ -346,7 +346,7 @@ ccl_device_noinline_cpu void kernel_branched_path_surface_connect_light(
       bool is_mesh_light = false;
       bool is_lamp = false;
 
-      if (sample_all_lights && !use_light_tree) {
+      if (sample_all_lights) {
         /* lamp sampling */
         is_lamp = i < kernel_data.integrator.num_all_lights;
         if (is_lamp) {
@@ -374,13 +374,12 @@ ccl_device_noinline_cpu void kernel_branched_path_surface_connect_light(
 #    ifdef __OBJECT_MOTION__
         light_ray.time = sd->time;
 #    endif
-        float light_u, light_v;
-        float terminate;
 
         if (kernel_data.integrator.use_direct_light && (sd->flag & SD_BSDF_HAS_EVAL)) {
+          float light_u, light_v;
           path_branched_rng_2D(
               kg, lamp_rng_hash, state, j, num_samples, PRNG_LIGHT_U, &light_u, &light_v);
-          terminate = path_branched_rng_light_termination(
+          float terminate = path_branched_rng_light_termination(
               kg, lamp_rng_hash, state, j, num_samples);
 
           /* only sample triangle lights */
@@ -591,7 +590,7 @@ ccl_device bool kernel_path_surface_bounce(KernelGlobals *kg,
     /* set labels */
     if (!(label & LABEL_TRANSPARENT)) {
       state->ray_pdf = bsdf_pdf;
-#if defined(__LAMP_MIS__) || defined(__EMISSION__) || defined(__BACKGROUND_MIS__)
+#ifdef __LAMP_MIS__
       state->ray_t = 0.0f;
 #endif
       state->min_ray_pdf =

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list