diff options
author | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2012-02-07 21:32:01 +0400 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2012-02-07 21:32:01 +0400 |
commit | 4a427a441b37ad0539e3c758b31a384edf8b7c76 (patch) | |
tree | b8b4a69ec083d547068f2a30b76e13100f813e90 /intern/cycles/kernel/kernel_shader.h | |
parent | b67b1c8564cedfc425892f6b071210b724366523 (diff) |
Fix #30049: cycles noise texture producing nan values with some
texture coordinates, due to int overflow.
Also minor tweak in shader code to avoid copying uninitialized
values, should have no effect though because they were not used.
Diffstat (limited to 'intern/cycles/kernel/kernel_shader.h')
-rw-r--r-- | intern/cycles/kernel/kernel_shader.h | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/intern/cycles/kernel/kernel_shader.h b/intern/cycles/kernel/kernel_shader.h index 7e0b0ff4d0f..46ef5d2022a 100644 --- a/intern/cycles/kernel/kernel_shader.h +++ b/intern/cycles/kernel/kernel_shader.h @@ -368,12 +368,13 @@ __device int shader_bsdf_sample(KernelGlobals *kg, const ShaderData *sd, #else label = svm_bsdf_sample(sd, sc, randu, randv, &eval, omega_in, domega_in, pdf); #endif + if(*pdf != 0.0f) { + bsdf_eval_init(bsdf_eval, sc->type, eval*sc->weight, kernel_data.film.use_light_pass); - bsdf_eval_init(bsdf_eval, sc->type, eval*sc->weight, kernel_data.film.use_light_pass); - - if(sd->num_closure > 1 && *pdf != 0.0f) { - float sweight = sc->sample_weight; - _shader_bsdf_multi_eval(sd, *omega_in, pdf, sampled, bsdf_eval, *pdf*sweight, sweight); + if(sd->num_closure > 1) { + float sweight = sc->sample_weight; + _shader_bsdf_multi_eval(sd, *omega_in, pdf, sampled, bsdf_eval, *pdf*sweight, sweight); + } } return label; |