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:
-rw-r--r--intern/cycles/kernel/shaders/node_normal_map.osl14
-rw-r--r--intern/cycles/kernel/svm/svm_tex_coord.h8
-rw-r--r--source/blender/gpu/shaders/gpu_shader_material.glsl5
3 files changed, 23 insertions, 4 deletions
diff --git a/intern/cycles/kernel/shaders/node_normal_map.osl b/intern/cycles/kernel/shaders/node_normal_map.osl
index c3d6e7bd391..9018cca1390 100644
--- a/intern/cycles/kernel/shaders/node_normal_map.osl
+++ b/intern/cycles/kernel/shaders/node_normal_map.osl
@@ -55,10 +55,20 @@ shader node_normal_map(
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));
diff --git a/intern/cycles/kernel/svm/svm_tex_coord.h b/intern/cycles/kernel/svm/svm_tex_coord.h
index c4cf0d95793..686b332a322 100644
--- a/intern/cycles/kernel/svm/svm_tex_coord.h
+++ b/intern/cycles/kernel/svm/svm_tex_coord.h
@@ -276,13 +276,17 @@ __device void svm_node_normal_map(KernelGlobals *kg, ShaderData *sd, float *stac
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);
diff --git a/source/blender/gpu/shaders/gpu_shader_material.glsl b/source/blender/gpu/shaders/gpu_shader_material.glsl
index fe54cd16b73..38a8d92a56a 100644
--- a/source/blender/gpu/shaders/gpu_shader_material.glsl
+++ b/source/blender/gpu/shaders/gpu_shader_material.glsl
@@ -2273,6 +2273,11 @@ void node_object_info(out vec3 location, out float object_index, out float mater
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;