Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrecht Van Lommel <brechtvanlommel@pandora.be>2013-05-28 18:24:03 +0400
committerBrecht Van Lommel <brechtvanlommel@pandora.be>2013-05-28 18:24:03 +0400
commit33d609144ef60c0223b2925cd39a713ed8c9060c (patch)
tree2e1ce05df337214010bef1d1844f265fb0685814 /intern/cycles/kernel/svm
parentef4db04da848a9790e502300285ccd17d71b4646 (diff)
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.
Diffstat (limited to 'intern/cycles/kernel/svm')
-rw-r--r--intern/cycles/kernel/svm/svm_tex_coord.h8
-rw-r--r--intern/cycles/kernel/svm/svm_types.h4
2 files changed, 8 insertions, 4 deletions
diff --git a/intern/cycles/kernel/svm/svm_tex_coord.h b/intern/cycles/kernel/svm/svm_tex_coord.h
index 686b332a322..98f99a91bc6 100644
--- a/intern/cycles/kernel/svm/svm_tex_coord.h
+++ b/intern/cycles/kernel/svm/svm_tex_coord.h
@@ -277,13 +277,15 @@ __device void svm_node_normal_map(KernelGlobals *kg, ShaderData *sd, float *stac
}
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);
diff --git a/intern/cycles/kernel/svm/svm_types.h b/intern/cycles/kernel/svm/svm_types.h
index fd440c9bf91..af188477a73 100644
--- a/intern/cycles/kernel/svm/svm_types.h
+++ b/intern/cycles/kernel/svm/svm_types.h
@@ -309,7 +309,9 @@ typedef enum NodeTangentAxis {
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 {