diff options
3 files changed, 6 insertions, 4 deletions
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; } } |