[Bf-blender-cvs] [86646dab7c4] master: Fix T62621 object scale changes tangent node output in Eevee
Clément Foucault
noreply at git.blender.org
Fri Mar 15 22:33:17 CET 2019
Commit: 86646dab7c455e739e5d648d0857bf30fd81afb9
Author: Clément Foucault
Date: Fri Mar 15 22:28:18 2019 +0100
Branches: master
https://developer.blender.org/rB86646dab7c455e739e5d648d0857bf30fd81afb9
Fix T62621 object scale changes tangent node output in Eevee
Normal Matrices were not normalized, leading to non-normalized vector
rotations results.
===================================================================
M source/blender/draw/engines/eevee/shaders/lit_surface_vert.glsl
M source/blender/draw/engines/eevee/shaders/shadow_vert.glsl
M source/blender/draw/intern/draw_manager_exec.c
===================================================================
diff --git a/source/blender/draw/engines/eevee/shaders/lit_surface_vert.glsl b/source/blender/draw/engines/eevee/shaders/lit_surface_vert.glsl
index ef7213cd21e..5438da1c007 100644
--- a/source/blender/draw/engines/eevee/shaders/lit_surface_vert.glsl
+++ b/source/blender/draw/engines/eevee/shaders/lit_surface_vert.glsl
@@ -66,8 +66,8 @@ void main()
gl_Position = ModelViewProjectionMatrix * vec4(pos, 1.0);
viewPosition = (ModelViewMatrix * vec4(pos, 1.0)).xyz;
worldPosition = (ModelMatrix * vec4(pos, 1.0)).xyz;
- worldNormal = normalize(WorldNormalMatrix * nor);
- viewNormal = normalize(NormalMatrix * nor);
+ worldNormal = WorldNormalMatrix * nor;
+ viewNormal = NormalMatrix * nor;
#endif
/* Used for planar reflections */
diff --git a/source/blender/draw/engines/eevee/shaders/shadow_vert.glsl b/source/blender/draw/engines/eevee/shaders/shadow_vert.glsl
index 2583c7c8765..a014135742f 100644
--- a/source/blender/draw/engines/eevee/shaders/shadow_vert.glsl
+++ b/source/blender/draw/engines/eevee/shaders/shadow_vert.glsl
@@ -24,8 +24,8 @@ void main() {
#ifdef MESH_SHADER
viewPosition = (ModelViewMatrix * vec4(pos, 1.0)).xyz;
worldPosition = (ModelMatrix * vec4(pos, 1.0)).xyz;
- viewNormal = normalize(NormalMatrix * nor);
- worldNormal = normalize(WorldNormalMatrix * nor);
+ viewNormal = NormalMatrix * nor;
+ worldNormal = WorldNormalMatrix * nor;
#ifdef USE_ATTR
pass_attr(pos);
#endif
diff --git a/source/blender/draw/intern/draw_manager_exec.c b/source/blender/draw/intern/draw_manager_exec.c
index 2e8ba259a31..8e04b9eddfd 100644
--- a/source/blender/draw/intern/draw_manager_exec.c
+++ b/source/blender/draw/intern/draw_manager_exec.c
@@ -803,6 +803,7 @@ static void draw_matrices_model_prepare(DRWCallState *st)
copy_m3_m4(st->normalview, st->modelview);
invert_m3(st->normalview);
transpose_m3(st->normalview);
+ normalize_m3(st->normalview);
}
if (st->matflag & DRW_CALL_EYEVEC) {
/* Used by orthographic wires */
@@ -821,6 +822,7 @@ static void draw_matrices_model_prepare(DRWCallState *st)
copy_m3_m4(st->normalworld, st->model);
invert_m3(st->normalworld);
transpose_m3(st->normalworld);
+ normalize_m3(st->normalworld);
st->matflag &= ~DRW_CALL_NORMALWORLD;
}
}
More information about the Bf-blender-cvs
mailing list