Commit: 3db0e1ef6a7171456535fb661753a416d7b13417
Author: Thomas Dinges
Date:   Fri Mar 13 00:09:13 2015 +0100
Branches: master
https://developer.blender.org/rB3db0e1ef6a7171456535fb661753a416d7b13417

Cycles: Simplify volume light connect code.

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

M       intern/cycles/kernel/kernel_path.h
M       intern/cycles/kernel/kernel_path_volume.h

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

diff --git a/intern/cycles/kernel/kernel_path.h 
b/intern/cycles/kernel/kernel_path.h
index 151e762..9b94956 100644
--- a/intern/cycles/kernel/kernel_path.h
+++ b/intern/cycles/kernel/kernel_path.h
@@ -117,7 +117,7 @@ ccl_device void kernel_path_indirect(KernelGlobals *kg, RNG 
*rng, Ray ray,
 
                                        /* direct light sampling */
                                        
kernel_branched_path_volume_connect_light(kg, rng, &volume_sd,
-                                               throughput, &state, L, 1.0f, 
all, &volume_ray, &volume_segment);
+                                               throughput, &state, L, all, 
&volume_ray, &volume_segment);
 
                                        /* indirect sample. if we use distance 
sampling and take just
                                         * one sample for direct and indirect 
light, we could share
@@ -562,7 +562,7 @@ ccl_device float4 kernel_path_integrate(KernelGlobals *kg, 
RNG *rng, int sample,
 
                                        /* direct light sampling */
                                        
kernel_branched_path_volume_connect_light(kg, rng, &volume_sd,
-                                               throughput, &state, &L, 1.0f, 
all, &volume_ray, &volume_segment);
+                                               throughput, &state, &L, all, 
&volume_ray, &volume_segment);
 
                                        /* indirect sample. if we use distance 
sampling and take just
                                         * one sample for direct and indirect 
light, we could share
@@ -937,7 +937,7 @@ ccl_device float4 
kernel_branched_path_integrate(KernelGlobals *kg, RNG *rng, in
                                bool all = 
kernel_data.integrator.sample_all_lights_direct;
 
                                kernel_branched_path_volume_connect_light(kg, 
rng, &volume_sd,
-                                       throughput, &state, &L, 1.0f, all, 
&volume_ray, &volume_segment);
+                                       throughput, &state, &L, all, 
&volume_ray, &volume_segment);
 
                                /* indirect light sampling */
                                int num_samples = 
kernel_data.integrator.volume_samples;
diff --git a/intern/cycles/kernel/kernel_path_volume.h 
b/intern/cycles/kernel/kernel_path_volume.h
index 10576ac..82dc0f9 100644
--- a/intern/cycles/kernel/kernel_path_volume.h
+++ b/intern/cycles/kernel/kernel_path_volume.h
@@ -107,7 +107,7 @@ bool kernel_path_volume_bounce(KernelGlobals *kg, RNG *rng,
 
 ccl_device void kernel_branched_path_volume_connect_light(KernelGlobals *kg, 
RNG *rng,
        ShaderData *sd, float3 throughput, PathState *state, PathRadiance *L,
-       float num_samples_adjust, bool sample_all_lights, Ray *ray, const 
VolumeSegment *segment)
+       bool sample_all_lights, Ray *ray, const VolumeSegment *segment)
 {
 #ifdef __EMISSION__
        if(!kernel_data.integrator.use_direct_light)
@@ -127,8 +127,8 @@ ccl_device void 
kernel_branched_path_volume_connect_light(KernelGlobals *kg, RNG
                        if(UNLIKELY(light_select_reached_max_bounces(kg, i, 
state->bounce)))
                                continue;
 
-                       int num_samples = 
ceil_to_int(num_samples_adjust*light_select_num_samples(kg, i));
-                       float num_samples_inv = 
num_samples_adjust/(num_samples*kernel_data.integrator.num_all_lights);
+                       int num_samples = light_select_num_samples(kg, i);
+                       float num_samples_inv = 
1.0f/(num_samples*kernel_data.integrator.num_all_lights);
                        RNG lamp_rng = cmj_hash(*rng, i);
 
                        if(kernel_data.integrator.pdf_triangles != 0.0f)
@@ -174,8 +174,8 @@ ccl_device void 
kernel_branched_path_volume_connect_light(KernelGlobals *kg, RNG
 
                /* mesh light sampling */
                if(kernel_data.integrator.pdf_triangles != 0.0f) {
-                       int num_samples = 
ceil_to_int(num_samples_adjust*kernel_data.integrator.mesh_light_samples);
-                       float num_samples_inv = num_samples_adjust/num_samples;
+                       int num_samples = 
kernel_data.integrator.mesh_light_samples;
+                       float num_samples_inv = 1.0f/num_samples;
 
                        if(kernel_data.integrator.num_all_lights)
                                num_samples_inv *= 0.5f;

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to