diff options
author | Keith Whitwell <[email protected]> | 2000-10-28 11:42:12 +0000 |
---|---|---|
committer | Keith Whitwell <[email protected]> | 2000-10-28 11:42:12 +0000 |
commit | a897b335bec7465ab688ef369c75b468b7251b05 (patch) | |
tree | ac5f60b7e2bb1a3a5bdbe8dc4d4a69ac0f961781 /src/mesa | |
parent | 1aa958bc9cbca2d2274124d131968b51ee72d7ed (diff) |
Do per-pixel fog when GL_FOG_HINT is GL_NICEST.
Fix scaling bug in per-pixel fog calculations.
Diffstat (limited to 'src/mesa')
-rw-r--r-- | src/mesa/main/fog.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/src/mesa/main/fog.c b/src/mesa/main/fog.c index 8c473b3fc7f..1353631adc4 100644 --- a/src/mesa/main/fog.c +++ b/src/mesa/main/fog.c @@ -1,4 +1,4 @@ -/* $Id: fog.c,v 1.22 2000/10/27 18:38:35 brianp Exp $ */ +/* $Id: fog.c,v 1.23 2000/10/28 11:42:12 keithw Exp $ */ /* * Mesa 3-D graphics library @@ -271,7 +271,6 @@ _mesa_fog_rgba_pixels( const GLcontext *ctx, for (i=0;i<n;i++) { GLfixed f = CLAMP(fog[i], 0, FIXED_ONE); GLfixed g = FIXED_ONE - f; -/* fprintf(stderr, "f %d/%f g %d ONE %d\n", f, f/(float)FIXED_ONE, g, FIXED_ONE); */ rgba[i][0] = (f*rgba[i][0] + g*rFog) >> FIXED_SHIFT; rgba[i][1] = (f*rgba[i][1] + g*gFog) >> FIXED_SHIFT; rgba[i][2] = (f*rgba[i][2] + g*bFog) >> FIXED_SHIFT; @@ -329,12 +328,13 @@ _mesa_win_fog_coords_from_z( const GLcontext *ctx, case GL_LINEAR: { GLfloat fogEnd = ctx->Fog.End; - GLfloat fogScale = 1.0F / (ctx->Fog.End - ctx->Fog.Start); + GLfloat fogScale = (GLfloat) FIXED_ONE / (ctx->Fog.End - + ctx->Fog.Start); for (i=0;i<n;i++) { GLfloat ndcz = ((GLfloat) z[i] - tz) * szInv; GLfloat eyez = -d / (c+ndcz); if (eyez < 0.0) eyez = -eyez; - fogcoord[i] = (fogEnd - eyez) * fogScale; + fogcoord[i] = (GLint)(fogEnd - eyez) * fogScale; } } break; @@ -343,7 +343,7 @@ _mesa_win_fog_coords_from_z( const GLcontext *ctx, GLfloat ndcz = ((GLfloat) z[i] - tz) * szInv; GLfloat eyez = d / (c+ndcz); if (eyez < 0.0) eyez = -eyez; - fogcoord[i] = exp( -ctx->Fog.Density * eyez ); + fogcoord[i] = FloatToFixed(exp( -ctx->Fog.Density * eyez )); } break; case GL_EXP2: @@ -358,7 +358,7 @@ _mesa_win_fog_coords_from_z( const GLcontext *ctx, if (tmp < FLT_MIN_10_EXP) tmp = FLT_MIN_10_EXP; #endif - fogcoord[i] = exp( tmp ); + fogcoord[i] = FloatToFixed(exp( tmp )); } } break; |