[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [43966] trunk/blender/intern/cycles/kernel : Fix #30049: cycles noise texture producing nan values with some

Brecht Van Lommel brechtvanlommel at pandora.be
Tue Feb 7 18:32:03 CET 2012


Revision: 43966
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=43966
Author:   blendix
Date:     2012-02-07 17:32:01 +0000 (Tue, 07 Feb 2012)
Log Message:
-----------
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.

Modified Paths:
--------------
    trunk/blender/intern/cycles/kernel/kernel_shader.h
    trunk/blender/intern/cycles/kernel/svm/svm_noise.h

Modified: trunk/blender/intern/cycles/kernel/kernel_shader.h
===================================================================
--- trunk/blender/intern/cycles/kernel/kernel_shader.h	2012-02-07 17:22:47 UTC (rev 43965)
+++ trunk/blender/intern/cycles/kernel/kernel_shader.h	2012-02-07 17:32:01 UTC (rev 43966)
@@ -368,12 +368,13 @@
 #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;

Modified: trunk/blender/intern/cycles/kernel/svm/svm_noise.h
===================================================================
--- trunk/blender/intern/cycles/kernel/svm/svm_noise.h	2012-02-07 17:22:47 UTC (rev 43965)
+++ trunk/blender/intern/cycles/kernel/svm/svm_noise.h	2012-02-07 17:32:01 UTC (rev 43966)
@@ -84,8 +84,9 @@
 
 __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)




More information about the Bf-blender-cvs mailing list