On Tue, Nov 15, 2011 at 07:22:29AM -0700, Brian Paul wrote: > On 11/15/2011 12:11 AM, Yuanhan Liu wrote: > >glspec doesn't say that we should skip the attenuation and spot > >calculation for infinite light(Ppli.w == 0). Instead, it gives a same > >formula to do the light calculation for both finite light and infinite > >light(see page 62 of glspec 2.1.pdf) > > > >Also from the formula (2.4) at page 62 of glspec 2.1.pdf, we can skip > >attenuation calculation if Ppli.w == 0. > > > >This would fix all the intel oglc l_sed fail subcases and introduces no > >intel oglc regressions. > > > >Signed-off-by: Yuanhan Liu<yuanhan....@linux.intel.com> > >--- > > src/mesa/main/ffvertex_prog.c | 115 > > ++++++++++++++++++----------------------- > > 1 files changed, 51 insertions(+), 64 deletions(-) > > > >diff --git a/src/mesa/main/ffvertex_prog.c b/src/mesa/main/ffvertex_prog.c > >index 8469078..fd53bc4 100644 > >--- a/src/mesa/main/ffvertex_prog.c > >+++ b/src/mesa/main/ffvertex_prog.c
[snip].. > >+ /* Calculate viewer direction, or use infinite viewer: > >+ */ > >+ if (!p->state->material_shininess_is_zero) { > >+ 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 if (p->state->unit[i].light_eyepos3_is_zero) { > >+ half = register_param3(p, STATE_INTERNAL, > >+ STATE_LIGHT_HALF_VECTOR, i); > >+ } else { > >+ struct ureg z_dir = swizzle(get_identity_param(p),X,Y,W,Z); > >+ half = get_temp(p); > >+ emit_op2(p, OPCODE_ADD, half, 0, VPpli, z_dir); > > emit_normalize_vec3(p, half, half); > > } > > The indentation of 'else' above looks wrong. Oh, right. Fixed. Thanks, Yuanhan Liu > > >- > >- release_temp(p, dist); > > } > > > > /* Calculate dot products: > > Acked-by: Brian Paul <bri...@vmware.com> _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev