improved solve_plane_chan() (Evgeny Kotsuba)
authorBrian Paul <brian.paul@tungstengraphics.com>
Wed, 22 Jan 2003 15:03:09 +0000 (15:03 +0000)
committerBrian Paul <brian.paul@tungstengraphics.com>
Wed, 22 Jan 2003 15:03:09 +0000 (15:03 +0000)
src/mesa/swrast/s_aatriangle.c

index 95cab18a17bdd82bfdc7fdc51215ba4f857b2ec1..d3d44d4e54a2cef72f008d60deb4240a2b1050cc 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: s_aatriangle.c,v 1.27 2003/01/20 15:20:27 brianp Exp $ */
+/* $Id: s_aatriangle.c,v 1.28 2003/01/22 15:03:09 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -132,12 +132,16 @@ solve_plane_recip(GLfloat x, GLfloat y, const GLfloat plane[4])
 static INLINE GLchan
 solve_plane_chan(GLfloat x, GLfloat y, const GLfloat plane[4])
 {
-   GLfloat z = (plane[3] + plane[0] * x + plane[1] * y) / -plane[2] + 0.5F;
-   if (z < 0.0F)
+   const GLfloat z = (plane[3] + plane[0] * x + plane[1] * y) / -plane[2];
+#if CHAN_TYPE == GL_FLOAT
+   return CLAMP(z, 0.0F, CHAN_MAXF);
+#else
+   if (z < 0)
       return 0;
-   else if (z > CHAN_MAXF)
-      return (GLchan) CHAN_MAXF;
-   return (GLchan) (GLint) z;
+   else if (z > CHAN_MAX)
+      return CHAN_MAX;
+   return (GLchan) IROUND_POS(z);
+#endif
 }