[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