[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [57082] trunk/blender: Cycles: normal maps are now backwards compatible again after recent fix, with

Brecht Van Lommel brechtvanlommel at pandora.be
Tue May 28 16:24:03 CEST 2013


Revision: 57082
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=57082
Author:   blendix
Date:     2013-05-28 14:24:03 +0000 (Tue, 28 May 2013)
Log Message:
-----------
Cycles: normal maps are now backwards compatible again after recent fix, with
a separate Blender Object/World Space that is compatible with Blender render
baking and uses the 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/intern/cycles/kernel/svm/svm_types.h
    trunk/blender/intern/cycles/render/nodes.cpp
    trunk/blender/source/blender/makesdna/DNA_node_types.h
    trunk/blender/source/blender/makesrna/intern/rna_nodetree.c

Modified: trunk/blender/intern/cycles/kernel/shaders/node_normal_map.osl
===================================================================
--- trunk/blender/intern/cycles/kernel/shaders/node_normal_map.osl	2013-05-28 14:23:07 UTC (rev 57081)
+++ trunk/blender/intern/cycles/kernel/shaders/node_normal_map.osl	2013-05-28 14:24:03 UTC (rev 57082)
@@ -56,13 +56,19 @@
 		}
 	}
 	else if (space == "Object") {
+		Normal = normalize(transform("object", "world", vector(mcolor)));
+	}
+	else if (space == "World") {
+		Normal = normalize(vector(mcolor));
+	}
+	else if (space == "Blender 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 == "Blender World") {
 		/* strange blender convention */
 		mcolor[1] = -mcolor[1];
 		mcolor[2] = -mcolor[2];

Modified: trunk/blender/intern/cycles/kernel/svm/svm_tex_coord.h
===================================================================
--- trunk/blender/intern/cycles/kernel/svm/svm_tex_coord.h	2013-05-28 14:23:07 UTC (rev 57081)
+++ trunk/blender/intern/cycles/kernel/svm/svm_tex_coord.h	2013-05-28 14:24:03 UTC (rev 57082)
@@ -277,13 +277,15 @@
 	}
 	else {
 		/* strange blender convention */
-		color.y = -color.y;
-		color.z = -color.z;
+		if(space == NODE_NORMAL_MAP_BLENDER_OBJECT || space == NODE_NORMAL_MAP_BLENDER_WORLD) {
+			color.y = -color.y;
+			color.z = -color.z;
+		}
 	
 		/* object, world space */
 		N = color;
 
-		if(space == NODE_NORMAL_MAP_OBJECT)
+		if(space == NODE_NORMAL_MAP_OBJECT || space == NODE_NORMAL_MAP_BLENDER_OBJECT)
 			object_normal_transform(kg, sd, &N);
 		else
 			N = normalize(N);

Modified: trunk/blender/intern/cycles/kernel/svm/svm_types.h
===================================================================
--- trunk/blender/intern/cycles/kernel/svm/svm_types.h	2013-05-28 14:23:07 UTC (rev 57081)
+++ trunk/blender/intern/cycles/kernel/svm/svm_types.h	2013-05-28 14:24:03 UTC (rev 57082)
@@ -309,7 +309,9 @@
 typedef enum NodeNormalMapSpace {
 	NODE_NORMAL_MAP_TANGENT,
 	NODE_NORMAL_MAP_OBJECT,
-	NODE_NORMAL_MAP_WORLD
+	NODE_NORMAL_MAP_WORLD,
+	NODE_NORMAL_MAP_BLENDER_OBJECT,
+	NODE_NORMAL_MAP_BLENDER_WORLD,
 } NodeNormalMapSpace;
 
 typedef enum ShaderType {

Modified: trunk/blender/intern/cycles/render/nodes.cpp
===================================================================
--- trunk/blender/intern/cycles/render/nodes.cpp	2013-05-28 14:23:07 UTC (rev 57081)
+++ trunk/blender/intern/cycles/render/nodes.cpp	2013-05-28 14:24:03 UTC (rev 57082)
@@ -3344,6 +3344,8 @@
 	enm.insert("Tangent", NODE_NORMAL_MAP_TANGENT);
 	enm.insert("Object", NODE_NORMAL_MAP_OBJECT);
 	enm.insert("World", NODE_NORMAL_MAP_WORLD);
+	enm.insert("Blender Object", NODE_NORMAL_MAP_BLENDER_OBJECT);
+	enm.insert("Blender World", NODE_NORMAL_MAP_BLENDER_WORLD);
 
 	return enm;
 }

Modified: trunk/blender/source/blender/makesdna/DNA_node_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_node_types.h	2013-05-28 14:23:07 UTC (rev 57081)
+++ trunk/blender/source/blender/makesdna/DNA_node_types.h	2013-05-28 14:24:03 UTC (rev 57082)
@@ -944,9 +944,11 @@
 #define SHD_TANGENT_AXIS_Z			2
 
 /* normal map space */
-#define SHD_NORMAL_MAP_TANGENT		0
-#define SHD_NORMAL_MAP_OBJECT		1
-#define SHD_NORMAL_MAP_WORLD		2
+#define SHD_NORMAL_MAP_TANGENT			0
+#define SHD_NORMAL_MAP_OBJECT			1
+#define SHD_NORMAL_MAP_WORLD			2
+#define SHD_NORMAL_MAP_BLENDER_OBJECT	3
+#define SHD_NORMAL_MAP_BLENDER_WORLD	4
 
 /* blur node */
 #define CMP_NODE_BLUR_ASPECT_NONE		0

Modified: trunk/blender/source/blender/makesrna/intern/rna_nodetree.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_nodetree.c	2013-05-28 14:23:07 UTC (rev 57081)
+++ trunk/blender/source/blender/makesrna/intern/rna_nodetree.c	2013-05-28 14:24:03 UTC (rev 57082)
@@ -3460,6 +3460,8 @@
 		{SHD_NORMAL_MAP_TANGENT, "TANGENT", 0, "Tangent Space", "Tangent space normal mapping"},
 		{SHD_NORMAL_MAP_OBJECT, "OBJECT", 0, "Object Space", "Object space normal mapping"},
 		{SHD_NORMAL_MAP_WORLD, "WORLD", 0, "World Space", "World space normal mapping"},
+		{SHD_NORMAL_MAP_BLENDER_OBJECT, "BLENDER_OBJECT", 0, "Blender Object Space", "Object space normal mapping, compatible with Blender render baking"},
+		{SHD_NORMAL_MAP_BLENDER_WORLD, "BLENDER_WORLD", 0, "Blender World Space", "World space normal mapping, compatible with Blender render baking"},
 		{0, NULL, 0, NULL, NULL}
 	};
 




More information about the Bf-blender-cvs mailing list