mesa: Branch 'master'

Haihao Xiang haihao at kemper.freedesktop.org
Sun Mar 11 14:48:33 UTC 2007


 src/mesa/drivers/dri/i965/brw_vs_tnl.c |    9 ++++++++-
 src/mesa/tnl/t_vp_build.c              |    9 ++++++++-
 2 files changed, 16 insertions(+), 2 deletions(-)

New commits:
diff-tree 61ec23cc63a040a2edf1bc466917e85362514c89 (from 69e57cf6ae0af823e903926bafa8daa46b11352c)
Author: Xiang, Haihao <haihao.xiang at intel.com>
Date:   Sun Mar 11 22:41:26 2007 +0800

    fix for bug#10196
    
    Compute half if LOCAL_VIEWER is enabled and the light is
    a directional source.

diff --git a/src/mesa/drivers/dri/i965/brw_vs_tnl.c b/src/mesa/drivers/dri/i965/brw_vs_tnl.c
index 0d61092..c05a9b5 100644
--- a/src/mesa/drivers/dri/i965/brw_vs_tnl.c
+++ b/src/mesa/drivers/dri/i965/brw_vs_tnl.c
@@ -988,7 +988,14 @@ static void build_lighting( struct tnl_p
 	     */
 	    VPpli = register_param3(p, STATE_LIGHT, i, 
 				    STATE_POSITION_NORMALIZED); 
-	    half = register_param3(p, STATE_LIGHT, i, STATE_HALF);
+            if (p->state->light_local_viewer) {
+                struct ureg eye_hat = get_eye_position_normalized(p);
+                half = get_temp(p);
+                emit_op2(p, OPCODE_SUB, half, 0, VPpli, eye_hat);
+                emit_normalize_vec3(p, half, half);
+            } else {
+                half = register_param3(p, STATE_LIGHT, i, STATE_HALF);
+            }
 	 } 
 	 else {
 	    struct ureg Ppli = register_param3(p, STATE_LIGHT, i, 
diff --git a/src/mesa/tnl/t_vp_build.c b/src/mesa/tnl/t_vp_build.c
index 81266f3..2a97a1c 100644
--- a/src/mesa/tnl/t_vp_build.c
+++ b/src/mesa/tnl/t_vp_build.c
@@ -939,7 +939,14 @@ static void build_lighting( struct tnl_p
 	     */
 	    VPpli = register_param3(p, STATE_LIGHT, i, 
 				    STATE_POSITION_NORMALIZED); 
-	    half = register_param3(p, STATE_LIGHT, i, STATE_HALF);
+            if (p->state->light_local_viewer) {
+                struct ureg eye_hat = get_eye_position_normalized(p);
+                half = get_temp(p);
+                emit_op2(p, OPCODE_SUB, half, 0, VPpli, eye_hat);
+                emit_normalize_vec3(p, half, half);
+            } else {
+                half = register_param3(p, STATE_LIGHT, i, STATE_HALF);
+            }
 	 } 
 	 else {
 	    struct ureg Ppli = register_param3(p, STATE_LIGHT, i, 



More information about the mesa-commit mailing list