From: Brian Paul Date: Tue, 17 Oct 2006 22:22:42 +0000 (+0000) Subject: fix fog color bug X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=32c3243e4d8237ecfeccd5a554abefaa0679e94b;p=mesa.git fix fog color bug --- 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. */