[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [57058] trunk/blender: Fix #35505: cycles object space normal mapping did not match blender internal.

Brecht Van Lommel brechtvanlommel at pandora.be
Mon May 27 19:48:02 CEST 2013


Revision: 57058
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=57058
Author:   blendix
Date:     2013-05-27 17:48:02 +0000 (Mon, 27 May 2013)
Log Message:
-----------
Fix #35505: cycles object space normal mapping did not match blender internal.
Now it uses the same (strange) YZ flipping convention.

Modified Paths:
--------------
    trunk/blender/intern/cycles/kernel/shaders/node_normal_map.osl
    trunk/blender/intern/cycles/kernel/svm/svm_tex_coord.h
    trunk/blender/source/blender/gpu/shaders/gpu_shader_material.glsl

Modified: trunk/blender/intern/cycles/kernel/shaders/node_normal_map.osl
===================================================================
--- trunk/blender/intern/cycles/kernel/shaders/node_normal_map.osl	2013-05-27 17:21:20 UTC (rev 57057)
+++ trunk/blender/intern/cycles/kernel/shaders/node_normal_map.osl	2013-05-27 17:48:02 UTC (rev 57058)
@@ -55,10 +55,20 @@
 			Normal = normal(0, 0, 0);
 		}
 	}
-	else if (space == "Object")
+	else if (space == "Object") {
+		/* strange blender convention */
+		mcolor[1] = -mcolor[1];
+		mcolor[2] = -mcolor[2];
+	
 		Normal = normalize(transform("object", "world", vector(mcolor)));
-	else if (space == "World")
+	}
+	else if (space == "World") {
+		/* strange blender convention */
+		mcolor[1] = -mcolor[1];
+		mcolor[2] = -mcolor[2];
+	
 		Normal = normalize(vector(mcolor));
+	}
 	
 	if (Strength != 1.0)
 		Normal = normalize(NormalIn + (Normal - NormalIn) * max(Strength, 0.0));

Modified: trunk/blender/intern/cycles/kernel/svm/svm_tex_coord.h
===================================================================
--- trunk/blender/intern/cycles/kernel/svm/svm_tex_coord.h	2013-05-27 17:21:20 UTC (rev 57057)
+++ trunk/blender/intern/cycles/kernel/svm/svm_tex_coord.h	2013-05-27 17:48:02 UTC (rev 57058)
@@ -276,13 +276,17 @@
 		object_normal_transform(kg, sd, &N);
 	}
 	else {
+		/* strange blender convention */
+		color.y = -color.y;
+		color.z = -color.z;
+	
 		/* object, world space */
 		N = color;
 
 		if(space == NODE_NORMAL_MAP_OBJECT)
 			object_normal_transform(kg, sd, &N);
-
-		N = normalize(N);
+		else
+			N = normalize(N);
 	}
 
 	float strength = stack_load_float(stack, strength_offset);

Modified: trunk/blender/source/blender/gpu/shaders/gpu_shader_material.glsl
===================================================================
--- trunk/blender/source/blender/gpu/shaders/gpu_shader_material.glsl	2013-05-27 17:21:20 UTC (rev 57057)
+++ trunk/blender/source/blender/gpu/shaders/gpu_shader_material.glsl	2013-05-27 17:48:02 UTC (rev 57058)
@@ -2273,6 +2273,11 @@
 	random = 0.0;
 }
 
+void node_normal_map(float strength, vec4 color, vec3 N, out vec3 result)
+{
+	result = N;
+}
+
 void node_bump(float strength, float dist, float height, vec3 N, out vec3 result)
 {
 	result = N;




More information about the Bf-blender-cvs mailing list