diff options
author | Keith Whitwell <[email protected]> | 2005-04-15 12:57:23 +0000 |
---|---|---|
committer | Keith Whitwell <[email protected]> | 2005-04-15 12:57:23 +0000 |
commit | 78803b2667c1dfe1dc47e09b61a4c29303e09d0b (patch) | |
tree | e77fb3e2816280155e7bcbf1c8283d0ad4a2c62c /src | |
parent | a131d50fb76cfa4c129c2a9d6ec2a0c83d51b85a (diff) |
Fix alpha value of STATE_LIGHTMODEL_SCENECOLOR. From the spec:
The "w" component of the program parameter variable is filled with
the alpha component of the front diffuse material color.
Make sure matrix inverses are uptodate also.
Diffstat (limited to 'src')
-rw-r--r-- | src/mesa/shader/program.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/mesa/shader/program.c b/src/mesa/shader/program.c index 2d398212ebb..e406e1090c5 100644 --- a/src/mesa/shader/program.c +++ b/src/mesa/shader/program.c @@ -648,20 +648,22 @@ _mesa_fetch_state(GLcontext *ctx, const enum state_index state[], if (state[1] == 0) { /* front */ GLint i; - for (i = 0; i < 4; i++) { + for (i = 0; i < 3; i++) { value[i] = ctx->Light.Model.Ambient[i] * ctx->Light.Material.Attrib[MAT_ATTRIB_FRONT_AMBIENT][i] + ctx->Light.Material.Attrib[MAT_ATTRIB_FRONT_EMISSION][i]; } + value[3] = ctx->Light.Material.Attrib[MAT_ATTRIB_FRONT_DIFFUSE][3]; } else { /* back */ GLint i; - for (i = 0; i < 4; i++) { + for (i = 0; i < 3; i++) { value[i] = ctx->Light.Model.Ambient[i] * ctx->Light.Material.Attrib[MAT_ATTRIB_BACK_AMBIENT][i] + ctx->Light.Material.Attrib[MAT_ATTRIB_BACK_EMISSION][i]; } + value[3] = ctx->Light.Material.Attrib[MAT_ATTRIB_BACK_DIFFUSE][3]; } return; case STATE_LIGHTPROD: @@ -806,7 +808,9 @@ _mesa_fetch_state(GLcontext *ctx, const enum state_index state[], } if (modifier == STATE_MATRIX_INVERSE || modifier == STATE_MATRIX_INVTRANS) { - /* XXX be sure inverse is up to date */ + /* Be sure inverse is up to date: + */ + _math_matrix_analyse( matrix ); m = matrix->inv; } else { |