Cycles: MIS for lamps now loops over all lamps instead of picking one.

Probably will not be noticed in most scenes. This helps reduce noise when you
have multiple lamps with MIS enabled, at the cost of some performance, but from
testing some scenes this seems better.
This commit is contained in:
Brecht Van Lommel
2014-05-01 19:18:42 +02:00
parent 95b93b5d46
commit c806a8ce96
3 changed files with 28 additions and 27 deletions

View File

@@ -240,10 +240,9 @@ ccl_device void kernel_path_indirect(KernelGlobals *kg, RNG *rng, Ray ray, ccl_g
light_ray.dP = ray.dP;
/* intersect with lamp */
float light_t = path_state_rng_1D(kg, rng, &state, PRNG_LIGHT);
float3 emission;
if(indirect_lamp_emission(kg, &state, &light_ray, light_t, &emission))
if(indirect_lamp_emission(kg, &state, &light_ray, &emission))
path_radiance_accum_emission(L, throughput, emission, state.bounce);
}
#endif
@@ -624,10 +623,9 @@ ccl_device float4 kernel_path_integrate(KernelGlobals *kg, RNG *rng, int sample,
light_ray.dP = ray.dP;
/* intersect with lamp */
float light_t = path_state_rng_1D(kg, rng, &state, PRNG_LIGHT);
float3 emission;
if(indirect_lamp_emission(kg, &state, &light_ray, light_t, &emission))
if(indirect_lamp_emission(kg, &state, &light_ray, &emission))
path_radiance_accum_emission(&L, throughput, emission, state.bounce);
}
#endif