From: Brian Date: Fri, 18 May 2007 13:46:27 +0000 (-0600) Subject: fix STATE_HALF_VECTOR value (bug 10987) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=4fca6bfa5d211a093c54b0bbeadaa38081e8c141;p=mesa.git fix STATE_HALF_VECTOR value (bug 10987) --- diff --git a/src/mesa/shader/prog_statevars.c b/src/mesa/shader/prog_statevars.c index 953fbb9b9f7..975a617ac89 100644 --- a/src/mesa/shader/prog_statevars.c +++ b/src/mesa/shader/prog_statevars.c @@ -1,6 +1,6 @@ /* * Mesa 3-D graphics library - * Version: 6.5.3 + * Version: 7.0 * * Copyright (C) 1999-2007 Brian Paul All Rights Reserved. * @@ -121,17 +121,17 @@ _mesa_fetch_state(GLcontext *ctx, const gl_state_index state[], return; case STATE_HALF_VECTOR: { - GLfloat eye_z[] = {0, 0, 1}; - + static const GLfloat eye_z[] = {0, 0, 1}; + GLfloat p[3]; /* Compute infinite half angle vector: - * half-vector = light_position + (0, 0, 1) - * and then normalize. w = 0 - * + * halfVector = normalize(normalize(lightPos) + (0, 0, 1)) * light.EyePosition.w should be 0 for infinite lights. */ - ADD_3V(value, eye_z, ctx->Light.Light[ln].EyePosition); + COPY_3V(p, ctx->Light.Light[ln].EyePosition); + NORMALIZE_3FV(p); + ADD_3V(value, p, eye_z); NORMALIZE_3FV(value); - value[3] = 0; + value[3] = 1.0; } return; case STATE_POSITION_NORMALIZED: