use FABSF(fogCoord) to fix fog calculation problem (Soju Matsumoto)
authorBrian Paul <brian.paul@tungstengraphics.com>
Mon, 17 Jan 2005 16:16:35 +0000 (16:16 +0000)
committerBrian Paul <brian.paul@tungstengraphics.com>
Mon, 17 Jan 2005 16:16:35 +0000 (16:16 +0000)
src/mesa/swrast/s_fog.c

index 613759d1c1d8c0c124e8237cc42c843b2886fae6..0af9cd8f284fbd033267860e9434aebf2cc3a807 100644 (file)
@@ -2,7 +2,7 @@
  * Mesa 3-D graphics library
  * Version:  6.3
  *
- * Copyright (C) 1999-2004  Brian Paul   All Rights Reserved.
+ * Copyright (C) 1999-2005  Brian Paul   All Rights Reserved.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
  * copy of this software and associated documentation files (the "Software"),
@@ -109,7 +109,7 @@ _swrast_fog_rgba_span( const GLcontext *ctx, struct sw_span *span )
             GLuint i;
             for (i = 0; i < span->end; i++) {
                GLfloat f, oneMinusF;
-               f = (fogEnd - fogCoord / w) * fogScale;
+               f = (fogEnd - FABSF(fogCoord) / w) * fogScale;
                f = CLAMP(f, 0.0F, 1.0F);
                oneMinusF = 1.0F - f;
                rgba[i][RCOMP] = (GLchan) (f * rgba[i][RCOMP] + oneMinusF * rFog);
@@ -130,7 +130,7 @@ _swrast_fog_rgba_span( const GLcontext *ctx, struct sw_span *span )
             GLuint i;
             for (i = 0; i < span->end; i++) {
                GLfloat f, oneMinusF;
-               f = (GLfloat) exp(density * fogCoord / w);
+               f = (GLfloat) exp(density * FABSF(fogCoord) / w);
                f = CLAMP(f, 0.0F, 1.0F);
                oneMinusF = 1.0F - f;
                rgba[i][RCOMP] = (GLchan) (f * rgba[i][RCOMP] + oneMinusF * rFog);