diff options
author | Brian <[email protected]> | 2007-05-18 07:46:27 -0600 |
---|---|---|
committer | Brian <[email protected]> | 2007-05-18 07:46:27 -0600 |
commit | 4fca6bfa5d211a093c54b0bbeadaa38081e8c141 (patch) | |
tree | 29e8e233386a5bcfa3c14168828aaca31801d2e5 | |
parent | 8452814ec6f536fc4177e6c34ff5b8b6d3102a3a (diff) |
fix STATE_HALF_VECTOR value (bug 10987)
-rw-r--r-- | src/mesa/shader/prog_statevars.c | 16 |
1 files changed, 8 insertions, 8 deletions
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: |