[Bf-blender-cvs] [28a98a7eec4] cycles_path_guiding: Cycles-X: Path Guiding: Fixing regression for random walk SSS and RR

Sebastian Herholz noreply at git.blender.org
Wed Jun 29 14:31:10 CEST 2022


Commit: 28a98a7eec4e2d34421a4a9e86150890699b4fb4
Author: Sebastian Herholz
Date:   Tue Jun 28 14:07:16 2022 +0200
Branches: cycles_path_guiding
https://developer.blender.org/rB28a98a7eec4e2d34421a4a9e86150890699b4fb4

Cycles-X: Path Guiding: Fixing regression for random walk SSS and RR

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

M	intern/cycles/kernel/integrator/subsurface_random_walk.h

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

diff --git a/intern/cycles/kernel/integrator/subsurface_random_walk.h b/intern/cycles/kernel/integrator/subsurface_random_walk.h
index e6655d03002..0b8b00a513b 100644
--- a/intern/cycles/kernel/integrator/subsurface_random_walk.h
+++ b/intern/cycles/kernel/integrator/subsurface_random_walk.h
@@ -229,6 +229,8 @@ ccl_device_inline bool subsurface_random_walk(KernelGlobals kg,
   // we need to add a new segment or add the direction
   // or at lease the sampling direction to the new path segment
   const bool use_guiding = kernel_data.integrator.guiding;
+  float3 rr_throughput = INTEGRATOR_STATE(state, path, rr_throughput);
+  rr_throughput = safe_divide_color(rr_throughput, albedo);
   bssrdf_weight = safe_divide_color(bssrdf_weight, albedo);
   float3 initial_throughput = throughput;
   if (use_guiding) {
@@ -462,8 +464,7 @@ ccl_device_inline bool subsurface_random_walk(KernelGlobals kg,
     throughput *= transmittance_weight;
 
 #ifdef __PATH_GUIDING__
-    // set the transmittance weight for the current random walk segment
-    // TODO: when we start guiding SSS
+    rr_throughput *= transmittance_weight;
 #endif
 
     if (hit) {
@@ -482,8 +483,7 @@ ccl_device_inline bool subsurface_random_walk(KernelGlobals kg,
     kernel_assert(isfinite3_safe(throughput));
     INTEGRATOR_STATE_WRITE(state, path, throughput) = throughput;
 #if defined(__PATH_GUIDING__) && PATH_GUIDING_LEVEL >= 4
-    INTEGRATOR_STATE_WRITE(state, path, rr_throughput) *= safe_divide_color(throughput,
-                                                                            initial_throughput);
+    INTEGRATOR_STATE_WRITE(state, path, rr_throughput) = rr_throughput;
 #endif
   }
 #if defined(__PATH_GUIDING__) && PATH_GUIDING_LEVEL >= 1



More information about the Bf-blender-cvs mailing list