Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/intern
diff options
context:
space:
mode:
authorBrecht Van Lommel <brechtvanlommel@pandora.be>2012-02-07 21:32:01 +0400
committerBrecht Van Lommel <brechtvanlommel@pandora.be>2012-02-07 21:32:01 +0400
commit4a427a441b37ad0539e3c758b31a384edf8b7c76 (patch)
treeb8b4a69ec083d547068f2a30b76e13100f813e90 /intern
parentb67b1c8564cedfc425892f6b071210b724366523 (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')
-rw-r--r--intern/cycles/kernel/kernel_shader.h11
-rw-r--r--intern/cycles/kernel/svm/svm_noise.h5
2 files changed, 9 insertions, 7 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;
diff --git a/intern/cycles/kernel/svm/svm_noise.h b/intern/cycles/kernel/svm/svm_noise.h
index 28ad028ad0e..1d3ace061ab 100644
--- a/intern/cycles/kernel/svm/svm_noise.h
+++ b/intern/cycles/kernel/svm/svm_noise.h
@@ -84,8 +84,9 @@ __device uint phash(int kx, int ky, int kz, int3 p)
__device float floorfrac(float x, int* i)
{
- *i = quick_floor(x);
- return x - *i;
+ float f = floorf(x);
+ *i = (int)f;
+ return x - f;
}
__device float fade(float t)