From 32c3243e4d8237ecfeccd5a554abefaa0679e94b Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Tue, 17 Oct 2006 22:22:42 +0000 Subject: fix fog color bug --- src/mesa/swrast/s_fog.c | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) (limited to 'src/mesa/swrast') diff --git a/src/mesa/swrast/s_fog.c b/src/mesa/swrast/s_fog.c index 1d6c4cd024a..39611858249 100644 --- a/src/mesa/swrast/s_fog.c +++ b/src/mesa/swrast/s_fog.c @@ -110,15 +110,30 @@ void _swrast_fog_rgba_span( const GLcontext *ctx, SWspan *span ) { const SWcontext *swrast = SWRAST_CONTEXT(ctx); - const GLfloat rFog = ctx->Fog.Color[RCOMP] * CHAN_MAX; - const GLfloat gFog = ctx->Fog.Color[GCOMP] * CHAN_MAX; - const GLfloat bFog = ctx->Fog.Color[BCOMP] * CHAN_MAX; + GLfloat rFog, gFog, bFog; const GLuint haveW = (span->interpMask & SPAN_W); ASSERT(swrast->_FogEnabled); ASSERT((span->interpMask | span->arrayMask) & SPAN_FOG); ASSERT(span->arrayMask & SPAN_RGBA); + if (span->array->ChanType == GL_UNSIGNED_BYTE) { + rFog = ctx->Fog.Color[RCOMP] * 255.0; + gFog = ctx->Fog.Color[GCOMP] * 255.0; + bFog = ctx->Fog.Color[BCOMP] * 255.0; + } + else if (span->array->ChanType == GL_UNSIGNED_SHORT) { + rFog = ctx->Fog.Color[RCOMP] * 65535.0; + gFog = ctx->Fog.Color[GCOMP] * 65535.0; + bFog = ctx->Fog.Color[BCOMP] * 65535.0; + } + else { + rFog = ctx->Fog.Color[RCOMP]; + gFog = ctx->Fog.Color[GCOMP]; + bFog = ctx->Fog.Color[BCOMP]; + } + + /* NOTE: if haveW is true, that means the fog start/step values are * perspective-corrected and we have to divide each fog coord by W. */ -- cgit v1.2.3