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; } } _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs