[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