Commit: f7062ff3ed55faa6c40c1de19113746b221a7a8f
Author: Sergey Sharybin
Date:   Wed Sep 3 21:23:07 2014 +0600
Branches: master
https://developer.blender.org/rBf7062ff3ed55faa6c40c1de19113746b221a7a8f

Fix T41693: Volumes get brightened with extra volume samples on GPU + BPT

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

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 65755f0..b74822b 100644
--- a/intern/cycles/kernel/kernel_path.h
+++ b/intern/cycles/kernel/kernel_path.h
@@ -154,7 +154,7 @@ ccl_device void kernel_path_indirect(KernelGlobals *kg, RNG 
*rng, Ray ray,
 #ifdef __VOLUME_SCATTER__
                                if(result == VOLUME_PATH_SCATTERED) {
                                        /* direct lighting */
-                                       kernel_path_volume_connect_light(kg, 
rng, &volume_sd, throughput, &state, L, 1.0f);
+                                       kernel_path_volume_connect_light(kg, 
rng, &volume_sd, throughput, &state, L);
 
                                        /* indirect light bounce */
                                        if(kernel_path_volume_bounce(kg, rng, 
&volume_sd, &throughput, &state, L, &ray))
@@ -541,7 +541,7 @@ ccl_device float4 kernel_path_integrate(KernelGlobals *kg, 
RNG *rng, int sample,
 #ifdef __VOLUME_SCATTER__
                                if(result == VOLUME_PATH_SCATTERED) {
                                        /* direct lighting */
-                                       kernel_path_volume_connect_light(kg, 
rng, &volume_sd, throughput, &state, &L, 1.0f);
+                                       kernel_path_volume_connect_light(kg, 
rng, &volume_sd, throughput, &state, &L);
 
                                        /* indirect light bounce */
                                        if(kernel_path_volume_bounce(kg, rng, 
&volume_sd, &throughput, &state, &L, &ray))
@@ -897,7 +897,7 @@ ccl_device float4 
kernel_branched_path_integrate(KernelGlobals *kg, RNG *rng, in
                                PathState ps = state;
                                Ray pray = ray;
                                ShaderData volume_sd;
-                               float3 tp = throughput;
+                               float3 tp = throughput * num_samples_inv;
 
                                /* branch RNG state */
                                path_state_branch(&ps, j, num_samples);
@@ -909,10 +909,10 @@ ccl_device float4 
kernel_branched_path_integrate(KernelGlobals *kg, RNG *rng, in
                                if(result == VOLUME_PATH_SCATTERED) {
                                        /* todo: support equiangular, MIS and 
all light sampling.
                                         * alternatively get decoupled ray 
marching working on the GPU */
-                                       kernel_path_volume_connect_light(kg, 
rng, &volume_sd, tp, &state, &L, num_samples_inv);
+                                       kernel_path_volume_connect_light(kg, 
rng, &volume_sd, tp, &state, &L);
 
                                        if(kernel_path_volume_bounce(kg, rng, 
&volume_sd, &tp, &ps, &L, &pray)) {
-                                               kernel_path_indirect(kg, rng, 
pray, tp*num_samples_inv, num_samples, ps, &L);
+                                               kernel_path_indirect(kg, rng, 
pray, tp, num_samples, ps, &L);
 
                                                /* for render passes, sum and 
reset indirect light pass variables
                                                 * for the next samples */
diff --git a/intern/cycles/kernel/kernel_path_volume.h 
b/intern/cycles/kernel/kernel_path_volume.h
index 9da1cfe..da2d5e6 100644
--- a/intern/cycles/kernel/kernel_path_volume.h
+++ b/intern/cycles/kernel/kernel_path_volume.h
@@ -19,8 +19,7 @@ CCL_NAMESPACE_BEGIN
 #ifdef __VOLUME_SCATTER__
 
 ccl_device void kernel_path_volume_connect_light(KernelGlobals *kg, RNG *rng,
-       ShaderData *sd, float3 throughput, PathState *state, PathRadiance *L,
-       float num_samples_adjust)
+       ShaderData *sd, float3 throughput, PathState *state, PathRadiance *L)
 {
 #ifdef __EMISSION__
        if(!kernel_data.integrator.use_direct_light)
@@ -51,7 +50,7 @@ ccl_device void 
kernel_path_volume_connect_light(KernelGlobals *kg, RNG *rng,
 
                if(!shadow_blocked(kg, state, &light_ray, &shadow)) {
                        /* accumulate */
-                       path_radiance_accum_light(L, throughput * 
num_samples_adjust, &L_light, shadow, 1.0f, state->bounce, is_lamp);
+                       path_radiance_accum_light(L, throughput, &L_light, 
shadow, 1.0f, state->bounce, is_lamp);
                }
        }
 #endif

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

Reply via email to