Commit: fac6a9e8deba92e9a8edd195f9235922b1f42a6c
Author: Alexander Romanov
Date: Fri May 27 14:25:39 2016 +0300
Branches: compositor-2016
https://developer.blender.org/rBfac6a9e8deba92e9a8edd195f9235922b1f42a6c
more correct Normal Map node behavior for tangent mapping in Cycles Viewport
===================================================================
M source/blender/nodes/shader/nodes/node_shader_normal_map.c
===================================================================
diff --git a/source/blender/nodes/shader/nodes/node_shader_normal_map.c
b/source/blender/nodes/shader/nodes/node_shader_normal_map.c
index d269560..85e2c77 100644
--- a/source/blender/nodes/shader/nodes/node_shader_normal_map.c
+++ b/source/blender/nodes/shader/nodes/node_shader_normal_map.c
@@ -133,29 +133,33 @@ static int gpu_shader_normal_map(GPUMaterial *mat, bNode
*node, bNodeExecData *U
/* **************** CYCLES ******************** */
- GPU_link(mat, "direction_transform_m4v3", negnorm,
GPU_builtin(GPU_INVERSE_VIEW_MATRIX), &negnorm);
-
switch (nm->space) {
case SHD_NORMAL_MAP_TANGENT:
GPU_link(mat, "color_to_normal_new_shading",
realnorm, &realnorm);
GPU_link(mat, "node_normal_map",
GPU_attribute(CD_TANGENT, nm->uv_map), negnorm, realnorm, &realnorm);
- break;
+ GPU_link(mat, "vec_math_mix", strength,
realnorm, GPU_builtin(GPU_VIEW_NORMAL), &out[0].link);
+ /* for uniform scale this is sufficient to
match Cycles */
+ GPU_link(mat, "direction_transform_m4v3",
out[0].link, GPU_builtin(GPU_INVERSE_VIEW_MATRIX), &out[0].link);
+ GPU_link(mat, "vect_normalize", out[0].link,
&out[0].link);
+ return true;
case SHD_NORMAL_MAP_OBJECT:
+ GPU_link(mat, "direction_transform_m4v3",
negnorm, GPU_builtin(GPU_INVERSE_VIEW_MATRIX), &negnorm);
GPU_link(mat, "color_to_normal_new_shading",
realnorm, &realnorm);
GPU_link(mat, "direction_transform_m4v3",
realnorm, GPU_builtin(GPU_OBJECT_MATRIX), &realnorm);
break;
case SHD_NORMAL_MAP_BLENDER_OBJECT:
+ GPU_link(mat, "direction_transform_m4v3",
negnorm, GPU_builtin(GPU_INVERSE_VIEW_MATRIX), &negnorm);
GPU_link(mat,
"color_to_blender_normal_new_shading", realnorm, &realnorm);
GPU_link(mat, "direction_transform_m4v3",
realnorm, GPU_builtin(GPU_OBJECT_MATRIX), &realnorm);
break;
case SHD_NORMAL_MAP_WORLD:
+ GPU_link(mat, "direction_transform_m4v3",
negnorm, GPU_builtin(GPU_INVERSE_VIEW_MATRIX), &negnorm);
GPU_link(mat, "color_to_normal_new_shading",
realnorm, &realnorm);
break;
case SHD_NORMAL_MAP_BLENDER_WORLD:
+ GPU_link(mat, "direction_transform_m4v3",
negnorm, GPU_builtin(GPU_INVERSE_VIEW_MATRIX), &negnorm);
GPU_link(mat,
"color_to_blender_normal_new_shading", realnorm, &realnorm);
break;
-
- GPU_link(mat, "vect_normalize", realnorm, &realnorm);
}
} else {
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs