[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [50320] trunk/blender/intern/cycles/kernel /osl/nodes: Cycles / OSL:

Thomas Dinges blender at dingto.org
Sun Sep 2 18:06:19 CEST 2012


Revision: 50320
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=50320
Author:   dingto
Date:     2012-09-02 16:06:18 +0000 (Sun, 02 Sep 2012)
Log Message:
-----------
Cycles / OSL:
* Updates for noise_turbulence, to match svm function. 

Modified Paths:
--------------
    trunk/blender/intern/cycles/kernel/osl/nodes/node_noise_texture.osl
    trunk/blender/intern/cycles/kernel/osl/nodes/node_texture.h
    trunk/blender/intern/cycles/kernel/osl/nodes/node_wave_texture.osl

Modified: trunk/blender/intern/cycles/kernel/osl/nodes/node_noise_texture.osl
===================================================================
--- trunk/blender/intern/cycles/kernel/osl/nodes/node_noise_texture.osl	2012-09-02 15:41:35 UTC (rev 50319)
+++ trunk/blender/intern/cycles/kernel/osl/nodes/node_noise_texture.osl	2012-09-02 16:06:18 UTC (rev 50320)
@@ -35,7 +35,7 @@
 		p += r;
 	}
 
-	fac = noise_turbulence(p, basis, (int)detail, hard);
+	fac = noise_turbulence(p, basis, detail, hard);
 	
 	return fac;
     

Modified: trunk/blender/intern/cycles/kernel/osl/nodes/node_texture.h
===================================================================
--- trunk/blender/intern/cycles/kernel/osl/nodes/node_texture.h	2012-09-02 15:41:35 UTC (rev 50319)
+++ trunk/blender/intern/cycles/kernel/osl/nodes/node_texture.h	2012-09-02 16:06:18 UTC (rev 50320)
@@ -217,9 +217,12 @@
 	float fscale = 1.0;
 	float amp = 1.0;
 	float sum = 0.0;
-	int i;
+	int i, n;
+	
+	octaves = clamp(octaves, 0.0f, 16.0f);
+	n = (int)octaves;
 
-	for (i = 0; i <= octaves; i++) {
+	for (i = 0; i <= n; i++) {
 		float t = noise_basis(fscale * p, basis);
 
 		if (hard)
@@ -229,10 +232,26 @@
 		amp *= 0.5;
 		fscale *= 2.0;
 	}
+	
+	float rmd = octaves - floor(octaves)
 
-	sum *= ((float)(1 << octaves) / (float)((1 << (octaves + 1)) - 1));
+	if(rmd != 0.0f) {
+		float t = noise_basis(fscale*p, basis);
 
-	return sum;
+		if(hard)
+			t = fabsf(2.0f*t - 1.0f);
+
+		float sum2 = sum + t*amp;
+
+		sum *= ((float)(1 << n)/(float)((1 << (n+1)) - 1));
+		sum2 *= ((float)(1 << (n+1))/(float)((1 << (n+2)) - 1));
+
+		return (1.0f - rmd)*sum + rmd*sum2;
+	}
+	else {
+		sum *= ((float)(1 << n)/(float)((1 << (n+1)) - 1));
+		return sum;
+	}
 }
 
 /* Utility */

Modified: trunk/blender/intern/cycles/kernel/osl/nodes/node_wave_texture.osl
===================================================================
--- trunk/blender/intern/cycles/kernel/osl/nodes/node_wave_texture.osl	2012-09-02 15:41:35 UTC (rev 50319)
+++ trunk/blender/intern/cycles/kernel/osl/nodes/node_wave_texture.osl	2012-09-02 16:06:18 UTC (rev 50320)
@@ -38,7 +38,7 @@
 	}
 	
 	if(distortion != 0.0) {
-		n = n +(distortion * noise_turbulence(p*dscale, "Perlin", (int)detail, 0));
+		n = n +(distortion * noise_turbulence(p*dscale, "Perlin", detail, 0));
 	}
 	result = noise_wave("Sine", n);
 	




More information about the Bf-blender-cvs mailing list