[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [52411] trunk/blender/intern/cycles: Fix cycles OSL missing support for texture mapping paramaters found in texture

Brecht Van Lommel brechtvanlommel at pandora.be
Tue Nov 20 18:40:11 CET 2012


Revision: 52411
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=52411
Author:   blendix
Date:     2012-11-20 17:40:10 +0000 (Tue, 20 Nov 2012)
Log Message:
-----------
Fix cycles OSL missing support for texture mapping paramaters found in texture
properties tab.

Modified Paths:
--------------
    trunk/blender/intern/cycles/kernel/shaders/node_brick_texture.osl
    trunk/blender/intern/cycles/kernel/shaders/node_checker_texture.osl
    trunk/blender/intern/cycles/kernel/shaders/node_environment_texture.osl
    trunk/blender/intern/cycles/kernel/shaders/node_gradient_texture.osl
    trunk/blender/intern/cycles/kernel/shaders/node_image_texture.osl
    trunk/blender/intern/cycles/kernel/shaders/node_magic_texture.osl
    trunk/blender/intern/cycles/kernel/shaders/node_musgrave_texture.osl
    trunk/blender/intern/cycles/kernel/shaders/node_noise_texture.osl
    trunk/blender/intern/cycles/kernel/shaders/node_sky_texture.osl
    trunk/blender/intern/cycles/kernel/shaders/node_voronoi_texture.osl
    trunk/blender/intern/cycles/kernel/shaders/node_wave_texture.osl
    trunk/blender/intern/cycles/render/image.cpp
    trunk/blender/intern/cycles/render/image.h
    trunk/blender/intern/cycles/render/nodes.cpp
    trunk/blender/intern/cycles/render/nodes.h
    trunk/blender/intern/cycles/render/osl.cpp
    trunk/blender/intern/cycles/render/osl.h

Modified: trunk/blender/intern/cycles/kernel/shaders/node_brick_texture.osl
===================================================================
--- trunk/blender/intern/cycles/kernel/shaders/node_brick_texture.osl	2012-11-20 17:39:56 UTC (rev 52410)
+++ trunk/blender/intern/cycles/kernel/shaders/node_brick_texture.osl	2012-11-20 17:40:10 UTC (rev 52411)
@@ -58,6 +58,8 @@
 }
 
 shader node_brick_texture(
+	int use_mapping = 0,
+	matrix mapping = matrix(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
 	float Offset = 0.5,
 	int OffsetFrequency = 2,
 	float Squash = 1.0,
@@ -74,10 +76,15 @@
 	output float Fac = 0.0,
 	output color Color = color(0.2, 0.2, 0.2))
 {
+	point p = Vector;
+
+	if (use_mapping)
+		p = transform(mapping, p);
+
 	float tint = 0.0;
 	color Col = Color1;
 	
-	Fac = brick(Vector * Scale, MortarSize, Bias, BrickWidth, RowHeight,
+	Fac = brick(p * Scale, MortarSize, Bias, BrickWidth, RowHeight,
 		Offset, OffsetFrequency, Squash, SquashFrequency, tint);
 		
 	if (Fac != 1.0) {

Modified: trunk/blender/intern/cycles/kernel/shaders/node_checker_texture.osl
===================================================================
--- trunk/blender/intern/cycles/kernel/shaders/node_checker_texture.osl	2012-11-20 17:39:56 UTC (rev 52410)
+++ trunk/blender/intern/cycles/kernel/shaders/node_checker_texture.osl	2012-11-20 17:40:10 UTC (rev 52411)
@@ -40,6 +40,8 @@
 }
 
 shader node_checker_texture(
+	int use_mapping = 0,
+	matrix mapping = matrix(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
 	float Scale = 5.0,
 	point Vector = P,
 	color Color1 = color(0.8, 0.8, 0.8),
@@ -47,7 +49,12 @@
 	output float Fac = 0.0,
 	output color Color = color(0.0, 0.0, 0.0))
 {
-	Fac = checker(Vector * Scale);
+	point p = Vector;
+
+	if (use_mapping)
+		p = transform(mapping, p);
+
+	Fac = checker(p * Scale);
 	if (Fac == 1.0) {
 		Color = Color1;
 	}

Modified: trunk/blender/intern/cycles/kernel/shaders/node_environment_texture.osl
===================================================================
--- trunk/blender/intern/cycles/kernel/shaders/node_environment_texture.osl	2012-11-20 17:39:56 UTC (rev 52410)
+++ trunk/blender/intern/cycles/kernel/shaders/node_environment_texture.osl	2012-11-20 17:40:10 UTC (rev 52411)
@@ -40,6 +40,8 @@
 }
 
 shader node_environment_texture(
+	int use_mapping = 0,
+	matrix mapping = matrix(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
 	vector Vector = P,
 	string filename = "",
 	string projection = "Equirectangular",
@@ -47,17 +49,21 @@
 	output color Color = color(0.0, 0.0, 0.0),
 	output float Alpha = 1.0)
 {
-	vector Vec = normalize(Vector);
+	vector p = Vector;
 
-	if (projection == "Equirectangular") {
-		Vec = environment_texture_direction_to_equirectangular(Vec);
-	}
-	else {
-		Vec = environment_texture_direction_to_mirrorball(Vec);
-	}
+	if (use_mapping)
+		p = transform(mapping, p);
+	
+	p = normalize(p);
 
-	Color = (color)texture(filename, Vec[0], 1.0 - Vec[1], "wrap", "periodic", "alpha", Alpha);
+	if (projection == "Equirectangular")
+		p = environment_texture_direction_to_equirectangular(p);
+	else
+		p = environment_texture_direction_to_mirrorball(p);
 
+	/* todo: use environment for better texture filtering of equirectangular */
+	Color = (color)texture(filename, p[0], 1.0 - p[1], "wrap", "periodic", "alpha", Alpha);
+
 	if (color_space == "sRGB")
 		Color = color_srgb_to_scene_linear(Color);
 }

Modified: trunk/blender/intern/cycles/kernel/shaders/node_gradient_texture.osl
===================================================================
--- trunk/blender/intern/cycles/kernel/shaders/node_gradient_texture.osl	2012-11-20 17:39:56 UTC (rev 52410)
+++ trunk/blender/intern/cycles/kernel/shaders/node_gradient_texture.osl	2012-11-20 17:40:10 UTC (rev 52411)
@@ -63,12 +63,19 @@
 }
 
 shader node_gradient_texture(
+	int use_mapping = 0,
+	matrix mapping = matrix(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
 	string Type = "Linear",
 	point Vector = P,
 	output float Fac = 0.0,
 	output color Color = color(0.0, 0.0, 0.0))
 {
-	Fac = gradient(Vector, Type);
+	point p = Vector;
+
+	if (use_mapping)
+		p = transform(mapping, p);
+
+	Fac = gradient(p, Type);
 	Color = color(Fac, Fac, Fac);
 }
 

Modified: trunk/blender/intern/cycles/kernel/shaders/node_image_texture.osl
===================================================================
--- trunk/blender/intern/cycles/kernel/shaders/node_image_texture.osl	2012-11-20 17:39:56 UTC (rev 52410)
+++ trunk/blender/intern/cycles/kernel/shaders/node_image_texture.osl	2012-11-20 17:40:10 UTC (rev 52411)
@@ -30,6 +30,8 @@
 }
 
 shader node_image_texture(
+	int use_mapping = 0,
+	matrix mapping = matrix(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
 	point Vector = P,
 	string filename = "",
 	string color_space = "sRGB",
@@ -38,8 +40,13 @@
 	output color Color = color(0.0, 0.0, 0.0),
 	output float Alpha = 1.0)
 {
+	point p = Vector;
+
+	if (use_mapping)
+		p = transform(mapping, p);
+
 	if (projection == "Flat") {
-		Color = image_texture_lookup(filename, color_space, Vector[0], Vector[1], Alpha);
+		Color = image_texture_lookup(filename, color_space, p[0], p[1], Alpha);
 	}
 	else if (projection == "Box") {
 		/* object space normal */
@@ -104,15 +111,15 @@
 		float tmp_alpha;
 
 		if (weight[0] > 0.0) {
-			Color += weight[0]*image_texture_lookup(filename, color_space, Vector[1], Vector[2], tmp_alpha);
+			Color += weight[0]*image_texture_lookup(filename, color_space, p[1], p[2], tmp_alpha);
 			Alpha += weight[0]*tmp_alpha;
 		}
 		if (weight[1] > 0.0) {
-			Color += weight[1]*image_texture_lookup(filename, color_space, Vector[0], Vector[2], tmp_alpha);
+			Color += weight[1]*image_texture_lookup(filename, color_space, p[0], p[2], tmp_alpha);
 			Alpha += weight[1]*tmp_alpha;
 		}
 		if (weight[2] > 0.0) {
-			Color += weight[2]*image_texture_lookup(filename, color_space, Vector[1], Vector[0], tmp_alpha);
+			Color += weight[2]*image_texture_lookup(filename, color_space, p[1], p[0], tmp_alpha);
 			Alpha += weight[2]*tmp_alpha;
 		}
 	}

Modified: trunk/blender/intern/cycles/kernel/shaders/node_magic_texture.osl
===================================================================
--- trunk/blender/intern/cycles/kernel/shaders/node_magic_texture.osl	2012-11-20 17:39:56 UTC (rev 52410)
+++ trunk/blender/intern/cycles/kernel/shaders/node_magic_texture.osl	2012-11-20 17:40:10 UTC (rev 52411)
@@ -93,12 +93,19 @@
 }
 
 shader node_magic_texture(
+	int use_mapping = 0,
+	matrix mapping = matrix(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
 	int Depth = 2,
 	float Distortion = 5.0,
 	float Scale = 5.0,
 	point Vector = P,
 	output color Color = color(0.0, 0.0, 0.0))
 {
-	Color = magic(Vector * Scale, Depth, Distortion);
+	point p = Vector;
+
+	if (use_mapping)
+		p = transform(mapping, p);
+
+	Color = magic(p * Scale, Depth, Distortion);
 }
 

Modified: trunk/blender/intern/cycles/kernel/shaders/node_musgrave_texture.osl
===================================================================
--- trunk/blender/intern/cycles/kernel/shaders/node_musgrave_texture.osl	2012-11-20 17:39:56 UTC (rev 52410)
+++ trunk/blender/intern/cycles/kernel/shaders/node_musgrave_texture.osl	2012-11-20 17:40:10 UTC (rev 52411)
@@ -187,6 +187,8 @@
 /* Shader */
 
 shader node_musgrave_texture(
+	int use_mapping = 0,
+	matrix mapping = matrix(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
 	string Type = "fBM",
 	float Dimension = 2.0,
 	float Lacunarity = 1.0,
@@ -204,8 +206,13 @@
 	string Basis = "Perlin";
 	float intensity = 1.0;
 
-	point p = Vector * Scale;
+	point p = Vector;
 
+	if (use_mapping)
+		p = transform(mapping, p);
+
+	p = p * Scale;
+
 	if (Type == "Multifractal")
 		Fac = intensity * noise_musgrave_multi_fractal(p, Basis, dimension, lacunarity, octaves);
 	else if (Type == "fBM")

Modified: trunk/blender/intern/cycles/kernel/shaders/node_noise_texture.osl
===================================================================
--- trunk/blender/intern/cycles/kernel/shaders/node_noise_texture.osl	2012-11-20 17:39:56 UTC (rev 52410)
+++ trunk/blender/intern/cycles/kernel/shaders/node_noise_texture.osl	2012-11-20 17:40:10 UTC (rev 52411)
@@ -43,6 +43,8 @@
 }
 
 shader node_noise_texture(
+	int use_mapping = 0,
+	matrix mapping = matrix(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
 	float Distortion = 0.0,
 	float Scale = 5.0,
 	float Detail = 2.0,
@@ -50,7 +52,12 @@
 	output float Fac = 0.0,
 	output color Color = color(0.2, 0.2, 0.2))
 {
+	point p = Vector;
+
+	if (use_mapping)
+		p = transform(mapping, p);
+
 	string Basis = "Perlin";
-	Fac = noise(Vector * Scale, Basis, Distortion, Detail, Fac, Color);
+	Fac = noise(p * Scale, Basis, Distortion, Detail, Fac, Color);
 }
 

Modified: trunk/blender/intern/cycles/kernel/shaders/node_sky_texture.osl
===================================================================
--- trunk/blender/intern/cycles/kernel/shaders/node_sky_texture.osl	2012-11-20 17:39:56 UTC (rev 52410)
+++ trunk/blender/intern/cycles/kernel/shaders/node_sky_texture.osl	2012-11-20 17:40:10 UTC (rev 52411)
@@ -149,14 +149,21 @@
 }
 
 shader node_sky_texture(
+	int use_mapping = 0,
+	matrix mapping = matrix(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
 	vector Vector = P,
 	vector sun_direction = vector(0, 0, 1),
 	float turbidity = 2.2,
 	output color Color = color(0.0, 0.0, 0.0))
 {
+	vector p = Vector;
+
+	if (use_mapping)
+		p = transform(mapping, p);
+
 	KernelSunSky sunsky;
 
 	precompute_sunsky(sun_direction, turbidity, sunsky);
-	Color = sky_xyz_radiance(sunsky, Vector);
+	Color = sky_xyz_radiance(sunsky, p);
 }
 

Modified: trunk/blender/intern/cycles/kernel/shaders/node_voronoi_texture.osl
===================================================================
--- trunk/blender/intern/cycles/kernel/shaders/node_voronoi_texture.osl	2012-11-20 17:39:56 UTC (rev 52410)
+++ trunk/blender/intern/cycles/kernel/shaders/node_voronoi_texture.osl	2012-11-20 17:40:10 UTC (rev 52411)
@@ -22,17 +22,24 @@
 /* Voronoi */
 
 shader node_voronoi_texture(
+	int use_mapping = 0,
+	matrix mapping = matrix(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
 	string Coloring = "Intensity",
 	float Scale = 5.0,
 	point Vector = P,
 	output float Fac = 0.0,
 	output color Color = color(0.0, 0.0, 0.0))
 {
+	point p = Vector;
+
+	if (use_mapping)
+		p = transform(mapping, p);
+
 	/* compute distance and point coordinate of 4 nearest neighbours */
 	float da[4];
 	point pa[4];
 
-	voronoi(Vector * Scale, "Distance Squared", 1.0, da, pa);

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list