summaryrefslogtreecommitdiff
path: root/src/sw_poly.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/sw_poly.c')
-rw-r--r--src/sw_poly.c683
1 files changed, 300 insertions, 383 deletions
diff --git a/src/sw_poly.c b/src/sw_poly.c
index 16d1ee2..b26de62 100644
--- a/src/sw_poly.c
+++ b/src/sw_poly.c
@@ -8,7 +8,7 @@ of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.
@@ -22,8 +22,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#define AFFINE_SPANLET_SIZE 16
#define AFFINE_SPANLET_SIZE_BITS 4
-typedef struct
-{
+typedef struct {
byte *pbase, *pdest;
short *pz;
fixed16_t s, t;
@@ -46,31 +45,28 @@ mface_t *r_alpha_surfaces;
extern int *r_turb_turb;
static int clip_current;
-static vec5_t r_clip_verts[2][MAXWORKINGVERTS+2];
+static vec5_t r_clip_verts[2][MAXWORKINGVERTS + 2];
static int s_minindex, s_maxindex;
-static void R_DrawPoly( int iswater );
+static void R_DrawPoly(int iswater);
/*
** R_DrawSpanletOpaque
*/
-static void R_DrawSpanletOpaque( void )
+static void R_DrawSpanletOpaque(void)
{
unsigned btemp;
- do
- {
+ do {
unsigned ts, tt;
ts = s_spanletvars.s >> 16;
tt = s_spanletvars.t >> 16;
btemp = *(s_spanletvars.pbase + (ts) + (tt) * cachewidth);
- if (btemp != 255)
- {
- if (*s_spanletvars.pz <= (s_spanletvars.izi >> 16))
- {
+ if (btemp != 255) {
+ if (*s_spanletvars.pz <= (s_spanletvars.izi >> 16)) {
*s_spanletvars.pz = s_spanletvars.izi >> 16;
*s_spanletvars.pdest = btemp;
}
@@ -87,26 +83,24 @@ static void R_DrawSpanletOpaque( void )
/*
** R_DrawSpanletTurbulentStipple33
*/
-static void R_DrawSpanletTurbulentStipple33( void )
+static void R_DrawSpanletTurbulentStipple33(void)
{
unsigned btemp;
int sturb, tturb;
byte *pdest = s_spanletvars.pdest;
short *pz = s_spanletvars.pz;
int izi = s_spanletvars.izi;
-
- if ( s_spanletvars.v & 1 )
- {
+
+ if (s_spanletvars.v & 1) {
s_spanletvars.pdest += s_spanletvars.spancount;
s_spanletvars.pz += s_spanletvars.spancount;
- if ( s_spanletvars.spancount == AFFINE_SPANLET_SIZE )
+ if (s_spanletvars.spancount == AFFINE_SPANLET_SIZE)
s_spanletvars.izi += s_spanletvars.izistep << AFFINE_SPANLET_SIZE_BITS;
else
s_spanletvars.izi += s_spanletvars.izistep * s_spanletvars.izistep;
-
- if ( s_spanletvars.u & 1 )
- {
+
+ if (s_spanletvars.u & 1) {
izi += s_spanletvars.izistep;
s_spanletvars.s += s_spanletvars.sstep;
s_spanletvars.t += s_spanletvars.tstep;
@@ -119,23 +113,22 @@ static void R_DrawSpanletTurbulentStipple33( void )
s_spanletvars.sstep *= 2;
s_spanletvars.tstep *= 2;
- while ( s_spanletvars.spancount > 0 )
- {
- sturb = ((s_spanletvars.s + r_turb_turb[(s_spanletvars.t>>16)&(CYCLE-1)])>>16)&63;
- tturb = ((s_spanletvars.t + r_turb_turb[(s_spanletvars.s>>16)&(CYCLE-1)])>>16)&63;
-
- btemp = *( s_spanletvars.pbase + ( sturb ) + ( tturb << 6 ) );
-
- if ( *pz <= ( izi >> 16 ) )
+ while (s_spanletvars.spancount > 0) {
+ sturb = ((s_spanletvars.s + r_turb_turb[(s_spanletvars.t >> 16) & (CYCLE - 1)]) >> 16) & 63;
+ tturb = ((s_spanletvars.t + r_turb_turb[(s_spanletvars.s >> 16) & (CYCLE - 1)]) >> 16) & 63;
+
+ btemp = *(s_spanletvars.pbase + (sturb) + (tturb << 6));
+
+ if (*pz <= (izi >> 16))
*pdest = btemp;
-
+
izi += s_spanletvars.izistep_times_2;
s_spanletvars.s += s_spanletvars.sstep;
s_spanletvars.t += s_spanletvars.tstep;
-
+
pdest += 2;
pz += 2;
-
+
s_spanletvars.spancount -= 2;
}
}
@@ -144,26 +137,24 @@ static void R_DrawSpanletTurbulentStipple33( void )
/*
** R_DrawSpanletTurbulentStipple66
*/
-static void R_DrawSpanletTurbulentStipple66( void )
+static void R_DrawSpanletTurbulentStipple66(void)
{
unsigned btemp;
int sturb, tturb;
byte *pdest = s_spanletvars.pdest;
short *pz = s_spanletvars.pz;
int izi = s_spanletvars.izi;
-
- if ( !( s_spanletvars.v & 1 ) )
- {
+
+ if (!(s_spanletvars.v & 1)) {
s_spanletvars.pdest += s_spanletvars.spancount;
s_spanletvars.pz += s_spanletvars.spancount;
- if ( s_spanletvars.spancount == AFFINE_SPANLET_SIZE )
+ if (s_spanletvars.spancount == AFFINE_SPANLET_SIZE)
s_spanletvars.izi += s_spanletvars.izistep << AFFINE_SPANLET_SIZE_BITS;
else
s_spanletvars.izi += s_spanletvars.izistep * s_spanletvars.izistep;
-
- if ( s_spanletvars.u & 1 )
- {
+
+ if (s_spanletvars.u & 1) {
izi += s_spanletvars.izistep;
s_spanletvars.s += s_spanletvars.sstep;
s_spanletvars.t += s_spanletvars.tstep;
@@ -176,53 +167,49 @@ static void R_DrawSpanletTurbulentStipple66( void )
s_spanletvars.sstep *= 2;
s_spanletvars.tstep *= 2;
- while ( s_spanletvars.spancount > 0 )
- {
- sturb = ((s_spanletvars.s + r_turb_turb[(s_spanletvars.t>>16)&(CYCLE-1)])>>16)&63;
- tturb = ((s_spanletvars.t + r_turb_turb[(s_spanletvars.s>>16)&(CYCLE-1)])>>16)&63;
-
- btemp = *( s_spanletvars.pbase + ( sturb ) + ( tturb << 6 ) );
-
- if ( *pz <= ( izi >> 16 ) )
+ while (s_spanletvars.spancount > 0) {
+ sturb = ((s_spanletvars.s + r_turb_turb[(s_spanletvars.t >> 16) & (CYCLE - 1)]) >> 16) & 63;
+ tturb = ((s_spanletvars.t + r_turb_turb[(s_spanletvars.s >> 16) & (CYCLE - 1)]) >> 16) & 63;
+
+ btemp = *(s_spanletvars.pbase + (sturb) + (tturb << 6));
+
+ if (*pz <= (izi >> 16))
*pdest = btemp;
-
+
izi += s_spanletvars.izistep_times_2;
s_spanletvars.s += s_spanletvars.sstep;
s_spanletvars.t += s_spanletvars.tstep;
-
+
pdest += 2;
pz += 2;
-
+
s_spanletvars.spancount -= 2;
}
- }
- else
- {
+ } else {
s_spanletvars.pdest += s_spanletvars.spancount;
s_spanletvars.pz += s_spanletvars.spancount;
- if ( s_spanletvars.spancount == AFFINE_SPANLET_SIZE )
+ if (s_spanletvars.spancount == AFFINE_SPANLET_SIZE)
s_spanletvars.izi += s_spanletvars.izistep << AFFINE_SPANLET_SIZE_BITS;
else
s_spanletvars.izi += s_spanletvars.izistep * s_spanletvars.izistep;
-
- while ( s_spanletvars.spancount > 0 )
- {
- sturb = ((s_spanletvars.s + r_turb_turb[(s_spanletvars.t>>16)&(CYCLE-1)])>>16)&63;
- tturb = ((s_spanletvars.t + r_turb_turb[(s_spanletvars.s>>16)&(CYCLE-1)])>>16)&63;
-
- btemp = *( s_spanletvars.pbase + ( sturb ) + ( tturb << 6 ) );
-
- if ( *pz <= ( izi >> 16 ) )
+
+ while (s_spanletvars.spancount > 0) {
+ sturb = ((s_spanletvars.s + r_turb_turb[(s_spanletvars.t >> 16) & (CYCLE - 1)]) >> 16) & 63;
+ tturb = ((s_spanletvars.t + r_turb_turb[(s_spanletvars.s >> 16) & (CYCLE - 1)]) >> 16) & 63;
+
+ btemp = *(s_spanletvars.pbase + (sturb) + (tturb << 6));
+
+ if (*pz <= (izi >> 16))
*pdest = btemp;
-
+
izi += s_spanletvars.izistep;
s_spanletvars.s += s_spanletvars.sstep;
s_spanletvars.t += s_spanletvars.tstep;
-
+
pdest++;
pz++;
-
+
s_spanletvars.spancount--;
}
}
@@ -231,20 +218,19 @@ static void R_DrawSpanletTurbulentStipple66( void )
/*
** R_DrawSpanletTurbulentBlended
*/
-static void R_DrawSpanletTurbulentBlended66( void )
+static void R_DrawSpanletTurbulentBlended66(void)
{
unsigned btemp;
int sturb, tturb;
- do
- {
- sturb = ((s_spanletvars.s + r_turb_turb[(s_spanletvars.t>>16)&(CYCLE-1)])>>16)&63;
- tturb = ((s_spanletvars.t + r_turb_turb[(s_spanletvars.s>>16)&(CYCLE-1)])>>16)&63;
+ do {
+ sturb = ((s_spanletvars.s + r_turb_turb[(s_spanletvars.t >> 16) & (CYCLE - 1)]) >> 16) & 63;
+ tturb = ((s_spanletvars.t + r_turb_turb[(s_spanletvars.s >> 16) & (CYCLE - 1)]) >> 16) & 63;
- btemp = *( s_spanletvars.pbase + ( sturb ) + ( tturb << 6 ) );
+ btemp = *(s_spanletvars.pbase + (sturb) + (tturb << 6));
- if ( *s_spanletvars.pz <= ( s_spanletvars.izi >> 16 ) )
- *s_spanletvars.pdest = vid.alphamap[btemp*256+*s_spanletvars.pdest];
+ if (*s_spanletvars.pz <= (s_spanletvars.izi >> 16))
+ *s_spanletvars.pdest = vid.alphamap[btemp * 256 + *s_spanletvars.pdest];
s_spanletvars.izi += s_spanletvars.izistep;
s_spanletvars.pdest++;
@@ -252,23 +238,22 @@ static void R_DrawSpanletTurbulentBlended66( void )
s_spanletvars.s += s_spanletvars.sstep;
s_spanletvars.t += s_spanletvars.tstep;
- } while ( --s_spanletvars.spancount > 0 );
+ } while (--s_spanletvars.spancount > 0);
}
-static void R_DrawSpanletTurbulentBlended33( void )
+static void R_DrawSpanletTurbulentBlended33(void)
{
unsigned btemp;
int sturb, tturb;
- do
- {
- sturb = ((s_spanletvars.s + r_turb_turb[(s_spanletvars.t>>16)&(CYCLE-1)])>>16)&63;
- tturb = ((s_spanletvars.t + r_turb_turb[(s_spanletvars.s>>16)&(CYCLE-1)])>>16)&63;
+ do {
+ sturb = ((s_spanletvars.s + r_turb_turb[(s_spanletvars.t >> 16) & (CYCLE - 1)]) >> 16) & 63;
+ tturb = ((s_spanletvars.t + r_turb_turb[(s_spanletvars.s >> 16) & (CYCLE - 1)]) >> 16) & 63;
- btemp = *( s_spanletvars.pbase + ( sturb ) + ( tturb << 6 ) );
+ btemp = *(s_spanletvars.pbase + (sturb) + (tturb << 6));
- if ( *s_spanletvars.pz <= ( s_spanletvars.izi >> 16 ) )
- *s_spanletvars.pdest = vid.alphamap[btemp+*s_spanletvars.pdest*256];
+ if (*s_spanletvars.pz <= (s_spanletvars.izi >> 16))
+ *s_spanletvars.pdest = vid.alphamap[btemp + *s_spanletvars.pdest * 256];
s_spanletvars.izi += s_spanletvars.izistep;
s_spanletvars.pdest++;
@@ -276,18 +261,17 @@ static void R_DrawSpanletTurbulentBlended33( void )
s_spanletvars.s += s_spanletvars.sstep;
s_spanletvars.t += s_spanletvars.tstep;
- } while ( --s_spanletvars.spancount > 0 );
+ } while (--s_spanletvars.spancount > 0);
}
/*
** R_DrawSpanlet33
*/
-static void R_DrawSpanlet33( void )
+static void R_DrawSpanlet33(void)
{
unsigned btemp;
- do
- {
+ do {
unsigned ts, tt;
ts = s_spanletvars.s >> 16;
@@ -295,11 +279,9 @@ static void R_DrawSpanlet33( void )
btemp = *(s_spanletvars.pbase + (ts) + (tt) * cachewidth);
- if ( btemp != 255 )
- {
- if (*s_spanletvars.pz <= (s_spanletvars.izi >> 16))
- {
- *s_spanletvars.pdest = vid.alphamap[btemp+*s_spanletvars.pdest*256];
+ if (btemp != 255) {
+ if (*s_spanletvars.pz <= (s_spanletvars.izi >> 16)) {
+ *s_spanletvars.pdest = vid.alphamap[btemp + *s_spanletvars.pdest * 256];
}
}
@@ -311,13 +293,11 @@ static void R_DrawSpanlet33( void )
} while (--s_spanletvars.spancount > 0);
}
-static void R_DrawSpanletConstant33( void )
+static void R_DrawSpanletConstant33(void)
{
- do
- {
- if (*s_spanletvars.pz <= (s_spanletvars.izi >> 16))
- {
- *s_spanletvars.pdest = vid.alphamap[r_polyblendcolor+*s_spanletvars.pdest*256];
+ do {
+ if (*s_spanletvars.pz <= (s_spanletvars.izi >> 16)) {
+ *s_spanletvars.pdest = vid.alphamap[r_polyblendcolor + *s_spanletvars.pdest * 256];
}
s_spanletvars.izi += s_spanletvars.izistep;
@@ -329,12 +309,11 @@ static void R_DrawSpanletConstant33( void )
/*
** R_DrawSpanlet66
*/
-static void R_DrawSpanlet66( void )
+static void R_DrawSpanlet66(void)
{
unsigned btemp;
- do
- {
+ do {
unsigned ts, tt;
ts = s_spanletvars.s >> 16;
@@ -342,11 +321,9 @@ static void R_DrawSpanlet66( void )
btemp = *(s_spanletvars.pbase + (ts) + (tt) * cachewidth);
- if ( btemp != 255 )
- {
- if (*s_spanletvars.pz <= (s_spanletvars.izi >> 16))
- {
- *s_spanletvars.pdest = vid.alphamap[btemp*256+*s_spanletvars.pdest];
+ if (btemp != 255) {
+ if (*s_spanletvars.pz <= (s_spanletvars.izi >> 16)) {
+ *s_spanletvars.pdest = vid.alphamap[btemp * 256 + *s_spanletvars.pdest];
}
}
@@ -361,25 +338,23 @@ static void R_DrawSpanlet66( void )
/*
** R_DrawSpanlet33Stipple
*/
-static void R_DrawSpanlet33Stipple( void )
+static void R_DrawSpanlet33Stipple(void)
{
unsigned btemp;
byte *pdest = s_spanletvars.pdest;
short *pz = s_spanletvars.pz;
int izi = s_spanletvars.izi;
-
- if ( r_polydesc.stipple_parity ^ ( s_spanletvars.v & 1 ) )
- {
+
+ if (r_polydesc.stipple_parity ^(s_spanletvars.v & 1)) {
s_spanletvars.pdest += s_spanletvars.spancount;
s_spanletvars.pz += s_spanletvars.spancount;
- if ( s_spanletvars.spancount == AFFINE_SPANLET_SIZE )
+ if (s_spanletvars.spancount == AFFINE_SPANLET_SIZE)
s_spanletvars.izi += s_spanletvars.izistep << AFFINE_SPANLET_SIZE_BITS;
else
s_spanletvars.izi += s_spanletvars.izistep * s_spanletvars.izistep;
-
- if ( r_polydesc.stipple_parity ^ ( s_spanletvars.u & 1 ) )
- {
+
+ if (r_polydesc.stipple_parity ^(s_spanletvars.u & 1)) {
izi += s_spanletvars.izistep;
s_spanletvars.s += s_spanletvars.sstep;
s_spanletvars.t += s_spanletvars.tstep;
@@ -392,26 +367,24 @@ static void R_DrawSpanlet33Stipple( void )
s_spanletvars.sstep *= 2;
s_spanletvars.tstep *= 2;
- while ( s_spanletvars.spancount > 0 )
- {
+ while (s_spanletvars.spancount > 0) {
unsigned s = s_spanletvars.s >> 16;
unsigned t = s_spanletvars.t >> 16;
- btemp = *( s_spanletvars.pbase + ( s ) + ( t * cachewidth ) );
-
- if ( btemp != 255 )
- {
- if ( *pz <= ( izi >> 16 ) )
+ btemp = *(s_spanletvars.pbase + (s) + (t * cachewidth));
+
+ if (btemp != 255) {
+ if (*pz <= (izi >> 16))
*pdest = btemp;
}
-
+
izi += s_spanletvars.izistep_times_2;
s_spanletvars.s += s_spanletvars.sstep;
s_spanletvars.t += s_spanletvars.tstep;
-
+
pdest += 2;
pz += 2;
-
+
s_spanletvars.spancount -= 2;
}
}
@@ -420,7 +393,7 @@ static void R_DrawSpanlet33Stipple( void )
/*
** R_DrawSpanlet66Stipple
*/
-static void R_DrawSpanlet66Stipple( void )
+static void R_DrawSpanlet66Stipple(void)
{
unsigned btemp;
byte *pdest = s_spanletvars.pdest;
@@ -430,15 +403,13 @@ static void R_DrawSpanlet66Stipple( void )
s_spanletvars.pdest += s_spanletvars.spancount;
s_spanletvars.pz += s_spanletvars.spancount;
- if ( s_spanletvars.spancount == AFFINE_SPANLET_SIZE )
+ if (s_spanletvars.spancount == AFFINE_SPANLET_SIZE)
s_spanletvars.izi += s_spanletvars.izistep << AFFINE_SPANLET_SIZE_BITS;
else
s_spanletvars.izi += s_spanletvars.izistep * s_spanletvars.izistep;
- if ( r_polydesc.stipple_parity ^ ( s_spanletvars.v & 1 ) )
- {
- if ( r_polydesc.stipple_parity ^ ( s_spanletvars.u & 1 ) )
- {
+ if (r_polydesc.stipple_parity ^(s_spanletvars.v & 1)) {
+ if (r_polydesc.stipple_parity ^(s_spanletvars.u & 1)) {
izi += s_spanletvars.izistep;
s_spanletvars.s += s_spanletvars.sstep;
s_spanletvars.t += s_spanletvars.tstep;
@@ -451,51 +422,45 @@ static void R_DrawSpanlet66Stipple( void )
s_spanletvars.sstep *= 2;
s_spanletvars.tstep *= 2;
- while ( s_spanletvars.spancount > 0 )
- {
+ while (s_spanletvars.spancount > 0) {
unsigned s = s_spanletvars.s >> 16;
unsigned t = s_spanletvars.t >> 16;
-
- btemp = *( s_spanletvars.pbase + ( s ) + ( t * cachewidth ) );
- if ( btemp != 255 )
- {
- if ( *pz <= ( izi >> 16 ) )
+ btemp = *(s_spanletvars.pbase + (s) + (t * cachewidth));
+
+ if (btemp != 255) {
+ if (*pz <= (izi >> 16))
*pdest = btemp;
}
-
+
izi += s_spanletvars.izistep_times_2;
s_spanletvars.s += s_spanletvars.sstep;
s_spanletvars.t += s_spanletvars.tstep;
-
+
pdest += 2;
pz += 2;
-
+
s_spanletvars.spancount -= 2;
}
- }
- else
- {
- while ( s_spanletvars.spancount > 0 )
- {
+ } else {
+ while (s_spanletvars.spancount > 0) {
unsigned s = s_spanletvars.s >> 16;
unsigned t = s_spanletvars.t >> 16;
-
- btemp = *( s_spanletvars.pbase + ( s ) + ( t * cachewidth ) );
-
- if ( btemp != 255 )
- {
- if ( *pz <= ( izi >> 16 ) )
+
+ btemp = *(s_spanletvars.pbase + (s) + (t * cachewidth));
+
+ if (btemp != 255) {
+ if (*pz <= (izi >> 16))
*pdest = btemp;
}
-
+
izi += s_spanletvars.izistep;
s_spanletvars.s += s_spanletvars.sstep;
s_spanletvars.t += s_spanletvars.tstep;
-
+
pdest++;
pz++;
-
+
s_spanletvars.spancount--;
}
}
@@ -507,75 +472,69 @@ static void R_DrawSpanlet66Stipple( void )
** Clips the winding at clip_verts[clip_current] and changes clip_current
** Throws out the back side
*/
-static int R_ClipPolyFace (int nump, clipplane_t *pclipplane)
+static int R_ClipPolyFace(int nump, clipplane_t *pclipplane)
{
int i, outcount;
- float dists[MAXWORKINGVERTS+3];
+ float dists[MAXWORKINGVERTS + 3];
float frac, clipdist, *pclipnormal;
float *in, *instep, *outstep, *vert2;
clipdist = pclipplane->dist;
pclipnormal = pclipplane->normal;
-
+
// calc dists
- if (clip_current)
- {
+ if (clip_current) {
in = r_clip_verts[1][0];
outstep = r_clip_verts[0][0];
clip_current = 0;
- }
- else
- {
+ } else {
in = r_clip_verts[0][0];
outstep = r_clip_verts[1][0];
clip_current = 1;
}
-
+
instep = in;
- for (i=0 ; i<nump ; i++, instep += sizeof (vec5_t) / sizeof (float))
- {
- dists[i] = DotProduct (instep, pclipnormal) - clipdist;
+ for (i = 0; i < nump; i++, instep += sizeof(vec5_t) / sizeof(float)) {
+ dists[i] = DotProduct(instep, pclipnormal) - clipdist;
}
-
+
// handle wraparound case
dists[nump] = dists[0];
- memcpy (instep, in, sizeof (vec5_t));
+ memcpy(instep, in, sizeof(vec5_t));
// clip the winding
instep = in;
outcount = 0;
- for (i=0 ; i<nump ; i++, instep += sizeof (vec5_t) / sizeof (float))
- {
- if (dists[i] >= 0)
- {
- memcpy (outstep, instep, sizeof (vec5_t));
- outstep += sizeof (vec5_t) / sizeof (float);
+ for (i = 0; i < nump; i++, instep += sizeof(vec5_t) / sizeof(float)) {
+ if (dists[i] >= 0) {
+ memcpy(outstep, instep, sizeof(vec5_t));
+ outstep += sizeof(vec5_t) / sizeof(float);
outcount++;
}
- if (dists[i] == 0 || dists[i+1] == 0)
+ if (dists[i] == 0 || dists[i + 1] == 0)
continue;
- if ( (dists[i] > 0) == (dists[i+1] > 0) )
+ if ((dists[i] > 0) == (dists[i + 1] > 0))
continue;
-
- // split it into a new vertex
- frac = dists[i] / (dists[i] - dists[i+1]);
-
- vert2 = instep + sizeof (vec5_t) / sizeof (float);
-
- outstep[0] = instep[0] + frac*(vert2[0] - instep[0]);
- outstep[1] = instep[1] + frac*(vert2[1] - instep[1]);
- outstep[2] = instep[2] + frac*(vert2[2] - instep[2]);
- outstep[3] = instep[3] + frac*(vert2[3] - instep[3]);
- outstep[4] = instep[4] + frac*(vert2[4] - instep[4]);
-
- outstep += sizeof (vec5_t) / sizeof (float);
+
+ // split it into a new vertex
+ frac = dists[i] / (dists[i] - dists[i + 1]);
+
+ vert2 = instep + sizeof(vec5_t) / sizeof(float);
+
+ outstep[0] = instep[0] + frac * (vert2[0] - instep[0]);
+ outstep[1] = instep[1] + frac * (vert2[1] - instep[1]);
+ outstep[2] = instep[2] + frac * (vert2[2] - instep[2]);
+ outstep[3] = instep[3] + frac * (vert2[3] - instep[3]);
+ outstep[4] = instep[4] + frac * (vert2[4] - instep[4]);
+
+ outstep += sizeof(vec5_t) / sizeof(float);
outcount++;
- }
-
+ }
+
return outcount;
}
@@ -583,7 +542,7 @@ static int R_ClipPolyFace (int nump, clipplane_t *pclipplane)
** R_PolygonDrawSpans
*/
// PGM - iswater was qboolean. changed to allow passing more flags
-static void R_PolygonDrawSpans(espan_t *pspan, int iswater )
+static void R_PolygonDrawSpans(espan_t *pspan, int iswater)
{
int count;
fixed16_t snext, tnext;
@@ -593,8 +552,8 @@ static void R_PolygonDrawSpans(espan_t *pspan, int iswater )
s_spanletvars.pbase = cacheblock;
//PGM
- if ( iswater & SURF_WARP)
- r_turb_turb = sintable + ((int)(r_newrefdef.time*SPEED)&(CYCLE-1));
+ if (iswater & SURF_WARP)
+ r_turb_turb = sintable + ((int)(r_newrefdef.time * SPEED) & (CYCLE - 1));
else if (iswater & SURF_FLOWING)
r_turb_turb = blanktable;
//PGM
@@ -609,9 +568,8 @@ static void R_PolygonDrawSpans(espan_t *pspan, int iswater )
s_spanletvars.pz = 0;
- do
- {
- s_spanletvars.pdest = (byte *)d_viewbuffer + ( d_scantable[pspan->v] /*r_screenwidth * pspan->v*/) + pspan->u;
+ do {
+ s_spanletvars.pdest = (byte *)d_viewbuffer + (d_scantable[pspan->v] /*r_screenwidth * pspan->v*/) + pspan->u;
s_spanletvars.pz = d_pzbuffer + (d_zwidth * pspan->v) + pspan->u;
s_spanletvars.u = pspan->u;
s_spanletvars.v = pspan->v;
@@ -621,23 +579,22 @@ static void R_PolygonDrawSpans(espan_t *pspan, int iswater )
if (count <= 0)
goto NextSpan;
- // calculate the initial s/z, t/z, 1/z, s, and t and clamp
+ // calculate the initial s/z, t/z, 1/z, s, and t and clamp
du = (float)pspan->u;
dv = (float)pspan->v;
- sdivz = d_sdivzorigin + dv*d_sdivzstepv + du*d_sdivzstepu;
- tdivz = d_tdivzorigin + dv*d_tdivzstepv + du*d_tdivzstepu;
+ sdivz = d_sdivzorigin + dv * d_sdivzstepv + du * d_sdivzstepu;
+ tdivz = d_tdivzorigin + dv * d_tdivzstepv + du * d_tdivzstepu;
- zi = d_ziorigin + dv*d_zistepv + du*d_zistepu;
+ zi = d_ziorigin + dv * d_zistepv + du * d_zistepu;
z = (float)0x10000 / zi; // prescale to 16.16 fixed-point
- // we count on FP exceptions being turned off to avoid range problems
+ // we count on FP exceptions being turned off to avoid range problems
s_spanletvars.izi = (int)(zi * 0x8000 * 0x10000);
s_spanletvars.s = (int)(sdivz * z) + sadjust;
s_spanletvars.t = (int)(tdivz * z) + tadjust;
- if ( !iswater )
- {
+ if (!iswater) {
if (s_spanletvars.s > bbextents)
s_spanletvars.s = bbextents;
else if (s_spanletvars.s < 0)
@@ -649,20 +606,18 @@ static void R_PolygonDrawSpans(espan_t *pspan, int iswater )
s_spanletvars.t = 0;
}
- do
- {
- // calculate s and t at the far end of the span
- if (count >= AFFINE_SPANLET_SIZE )
+ do {
+ // calculate s and t at the far end of the span
+ if (count >= AFFINE_SPANLET_SIZE)
s_spanletvars.spancount = AFFINE_SPANLET_SIZE;
else
s_spanletvars.spancount = count;
count -= s_spanletvars.spancount;
- if (count)
- {
- // calculate s/z, t/z, zi->fixed s and t at far end of span,
- // calculate s and t steps across span by shifting
+ if (count) {
+ // calculate s/z, t/z, zi->fixed s and t at far end of span,
+ // calculate s and t steps across span by shifting
sdivz += sdivzspanletstepu;
tdivz += tdivzspanletstepu;
zi += zispanletstepu;
@@ -671,14 +626,13 @@ static void R_PolygonDrawSpans(espan_t *pspan, int iswater )
snext = (int)(sdivz * z) + sadjust;
tnext = (int)(tdivz * z) + tadjust;
- if ( !iswater )
- {
+ if (!iswater) {
if (snext > bbextents)
snext = bbextents;
else if (snext < AFFINE_SPANLET_SIZE)
snext = AFFINE_SPANLET_SIZE; // prevent round-off error on <0 steps from
- // from causing overstepping & running off the
- // edge of the texture
+ // from causing overstepping & running off the
+ // edge of the texture
if (tnext > bbextentt)
tnext = bbextentt;
@@ -688,13 +642,11 @@ static void R_PolygonDrawSpans(espan_t *pspan, int iswater )
s_spanletvars.sstep = (snext - s_spanletvars.s) >> AFFINE_SPANLET_SIZE_BITS;
s_spanletvars.tstep = (tnext - s_spanletvars.t) >> AFFINE_SPANLET_SIZE_BITS;
- }
- else
- {
- // calculate s/z, t/z, zi->fixed s and t at last pixel in span (so
- // can't step off polygon), clamp, calculate s and t steps across
- // span by division, biasing steps low so we don't run off the
- // texture
+ } else {
+ // calculate s/z, t/z, zi->fixed s and t at last pixel in span (so
+ // can't step off polygon), clamp, calculate s and t steps across
+ // span by division, biasing steps low so we don't run off the
+ // texture
spancountminus1 = (float)(s_spanletvars.spancount - 1);
sdivz += d_sdivzstepu * spancountminus1;
tdivz += d_tdivzstepu * spancountminus1;
@@ -703,14 +655,13 @@ static void R_PolygonDrawSpans(espan_t *pspan, int iswater )
snext = (int)(sdivz * z) + sadjust;
tnext = (int)(tdivz * z) + tadjust;
- if ( !iswater )
- {
+ if (!iswater) {
if (snext > bbextents)
snext = bbextents;
else if (snext < AFFINE_SPANLET_SIZE)
snext = AFFINE_SPANLET_SIZE; // prevent round-off error on <0 steps from
- // from causing overstepping & running off the
- // edge of the texture
+ // from causing overstepping & running off the
+ // edge of the texture
if (tnext > bbextentt)
tnext = bbextentt;
@@ -718,17 +669,15 @@ static void R_PolygonDrawSpans(espan_t *pspan, int iswater )
tnext = AFFINE_SPANLET_SIZE; // guard against round-off error on <0 steps
}
- if (s_spanletvars.spancount > 1)
- {
+ if (s_spanletvars.spancount > 1) {
s_spanletvars.sstep = (snext - s_spanletvars.s) / (s_spanletvars.spancount - 1);
s_spanletvars.tstep = (tnext - s_spanletvars.t) / (s_spanletvars.spancount - 1);
}
}
- if ( iswater )
- {
- s_spanletvars.s = s_spanletvars.s & ((CYCLE<<16)-1);
- s_spanletvars.t = s_spanletvars.t & ((CYCLE<<16)-1);
+ if (iswater) {
+ s_spanletvars.s = s_spanletvars.s & ((CYCLE << 16) - 1);
+ s_spanletvars.t = s_spanletvars.t & ((CYCLE << 16) - 1);
}
r_polydesc.drawspanlet();
@@ -748,10 +697,10 @@ NextSpan:
**
** R_PolygonScanLeftEdge
**
-** Goes through the polygon and scans the left edge, filling in
+** Goes through the polygon and scans the left edge, filling in
** screen coordinate data for the spans
*/
-static void R_PolygonScanLeftEdge (void)
+static void R_PolygonScanLeftEdge(void)
{
int i, v, itop, ibottom, lmaxindex;
emitpoint_t *pvert, *pnext;
@@ -768,30 +717,27 @@ static void R_PolygonScanLeftEdge (void)
if (lmaxindex == 0)
lmaxindex = r_polydesc.nump;
- vtop = ceil (r_polydesc.pverts[i].v);
+ vtop = ceil(r_polydesc.pverts[i].v);
- do
- {
+ do {
pvert = &r_polydesc.pverts[i];
pnext = pvert - 1;
- vbottom = ceil (pnext->v);
+ vbottom = ceil(pnext->v);
- if (vtop < vbottom)
- {
+ if (vtop < vbottom) {
du = pnext->u - pvert->u;
dv = pnext->v - pvert->v;
slope = du / dv;
u_step = (int)(slope * 0x10000);
- // adjust u to ceil the integer portion
+ // adjust u to ceil the integer portion
u = (int)((pvert->u + (slope * (vtop - pvert->v))) * 0x10000) +
- (0x10000 - 1);
+ (0x10000 - 1);
itop = (int)vtop;
ibottom = (int)vbottom;
- for (v=itop ; v<ibottom ; v++)
- {
+ for (v = itop; v < ibottom; v++) {
pspan->u = u >> 16;
pspan->v = v;
u += u_step;
@@ -814,7 +760,7 @@ static void R_PolygonScanLeftEdge (void)
** Goes through the polygon and scans the right edge, filling in
** count values.
*/
-static void R_PolygonScanRightEdge (void)
+static void R_PolygonScanRightEdge(void)
{
int i, v, itop, ibottom;
emitpoint_t *pvert, *pnext;
@@ -831,10 +777,9 @@ static void R_PolygonScanRightEdge (void)
if (vvert > r_refdef.fvrectbottom_adj)
vvert = r_refdef.fvrectbottom_adj;
- vtop = ceil (vvert);
+ vtop = ceil(vvert);
- do
- {
+ do {
pvert = &r_polydesc.pverts[i];
pnext = pvert + 1;
@@ -844,10 +789,9 @@ static void R_PolygonScanRightEdge (void)
if (vnext > r_refdef.fvrectbottom_adj)
vnext = r_refdef.fvrectbottom_adj;
- vbottom = ceil (vnext);
+ vbottom = ceil(vnext);
- if (vtop < vbottom)
- {
+ if (vtop < vbottom) {
uvert = pvert->u;
if (uvert < r_refdef.fvrectx_adj)
uvert = r_refdef.fvrectx_adj;
@@ -864,14 +808,13 @@ static void R_PolygonScanRightEdge (void)
dv = vnext - vvert;
slope = du / dv;
u_step = (int)(slope * 0x10000);
- // adjust u to ceil the integer portion
+ // adjust u to ceil the integer portion
u = (int)((uvert + (slope * (vtop - vvert))) * 0x10000) +
- (0x10000 - 1);
+ (0x10000 - 1);
itop = (int)vtop;
ibottom = (int)vbottom;
- for (v=itop ; v<ibottom ; v++)
- {
+ for (v = itop; v < ibottom; v++) {
pspan->count = (u >> 16) - pspan->u;
u += u_step;
pspan++;
@@ -887,70 +830,55 @@ static void R_PolygonScanRightEdge (void)
} while (i != s_maxindex);
- pspan->count = DS_SPAN_LIST_END; // mark the end of the span list
+ pspan->count = DS_SPAN_LIST_END; // mark the end of the span list
}
/*
** R_ClipAndDrawPoly
*/
// PGM - isturbulent was qboolean. changed to int to allow passing more flags
-static void R_ClipAndDrawPoly ( float alpha, int isturbulent, qboolean textured )
+static void R_ClipAndDrawPoly(float alpha, int isturbulent, qboolean textured)
{
- emitpoint_t outverts[MAXWORKINGVERTS+3], *pout;
+ emitpoint_t outverts[MAXWORKINGVERTS + 3], *pout;
float *pv;
int i, nump;
float scale;
vec3_t transformed, local;
- if ( !textured )
- {
+ if (!textured) {
r_polydesc.drawspanlet = R_DrawSpanletConstant33;
- }
- else
- {
+ } else {
/*
** choose the correct spanlet routine based on alpha
*/
- if ( alpha == 1 )
- {
+ if (alpha == 1) {
// isturbulent is ignored because we know that turbulent surfaces
// can't be opaque
r_polydesc.drawspanlet = R_DrawSpanletOpaque;
- }
- else
- {
- if ( sw_stipplealpha->integer )
- {
- if ( isturbulent )
- {
- if ( alpha > 0.33 )
+ } else {
+ if (sw_stipplealpha->integer) {
+ if (isturbulent) {
+ if (alpha > 0.33)
r_polydesc.drawspanlet = R_DrawSpanletTurbulentStipple66;
- else
+ else
r_polydesc.drawspanlet = R_DrawSpanletTurbulentStipple33;
- }
- else
- {
- if ( alpha > 0.33 )
+ } else {
+ if (alpha > 0.33)
r_polydesc.drawspanlet = R_DrawSpanlet66Stipple;
- else
+ else
r_polydesc.drawspanlet = R_DrawSpanlet33Stipple;
}
- }
- else
- {
- if ( isturbulent )
- {
- if ( alpha > 0.33 )
+ } else {
+ if (isturbulent) {
+ if (alpha > 0.33)
r_polydesc.drawspanlet = R_DrawSpanletTurbulentBlended66;
else
r_polydesc.drawspanlet = R_DrawSpanletTurbulentBlended33;
- }
- else
- {
- if ( alpha > 0.33 )
+ } else {
+ if (alpha > 0.33)
r_polydesc.drawspanlet = R_DrawSpanlet66;
- else
+ else
r_polydesc.drawspanlet = R_DrawSpanlet33;
}
}
@@ -961,22 +889,20 @@ static void R_ClipAndDrawPoly ( float alpha, int isturbulent, qboolean textured
nump = r_polydesc.nump;
clip_current = 0;
- for (i=0 ; i<4 ; i++)
- {
- nump = R_ClipPolyFace (nump, &view_clipplanes[i]);
+ for (i = 0; i < 4; i++) {
+ nump = R_ClipPolyFace(nump, &view_clipplanes[i]);
if (nump < 3)
return;
if (nump > MAXWORKINGVERTS)
- Com_Error(ERR_DROP, "R_ClipAndDrawPoly: too many points: %d", nump );
+ Com_Error(ERR_DROP, "R_ClipAndDrawPoly: too many points: %d", nump);
}
// transform vertices into viewspace and project
pv = &r_clip_verts[clip_current][0][0];
- for (i=0 ; i<nump ; i++)
- {
- VectorSubtract (pv, r_origin, local);
- TransformVector (local, transformed);
+ for (i = 0; i < nump; i++) {
+ VectorSubtract(pv, r_origin, local);
+ TransformVector(local, transformed);
if (transformed[2] < NEAR_CLIP)
transformed[2] = NEAR_CLIP;
@@ -986,21 +912,21 @@ static void R_ClipAndDrawPoly ( float alpha, int isturbulent, qboolean textured
pout->s = pv[3];
pout->t = pv[4];
-
+
scale = xscale * pout->zi;
pout->u = (xcenter + scale * transformed[0]);
scale = yscale * pout->zi;
pout->v = (ycenter - scale * transformed[1]);
- pv += sizeof (vec5_t) / sizeof (vec_t);
+ pv += sizeof(vec5_t) / sizeof(vec_t);
}
// draw it
r_polydesc.nump = nump;
r_polydesc.pverts = outverts;
- R_DrawPoly( isturbulent );
+ R_DrawPoly(isturbulent);
}
/*
@@ -1026,35 +952,31 @@ static void R_BuildPolygonFromSurface(mface_t *fa)
pverts = r_clip_verts[0];
surfedge = fa->firstsurfedge;
- for (i=0 ; i<lnumverts ; i++, surfedge++)
- {
+ for (i = 0; i < lnumverts; i++, surfedge++) {
vec = surfedge->edge->v[surfedge->vert]->point;
- VectorCopy (vec, pverts[i] );
+ VectorCopy(vec, pverts[i]);
}
- VectorCopy( fa->texinfo->axis[0], r_polydesc.vright );
- VectorCopy( fa->texinfo->axis[1], r_polydesc.vup );
- VectorCopy( fa->plane->normal, r_polydesc.vpn );
- VectorCopy( r_origin, r_polydesc.viewer_position );
+ VectorCopy(fa->texinfo->axis[0], r_polydesc.vright);
+ VectorCopy(fa->texinfo->axis[1], r_polydesc.vup);
+ VectorCopy(fa->plane->normal, r_polydesc.vpn);
+ VectorCopy(r_origin, r_polydesc.viewer_position);
- if ( fa->drawflags & DSURF_PLANEBACK )
- {
- VectorInverse( r_polydesc.vpn );
+ if (fa->drawflags & DSURF_PLANEBACK) {
+ VectorInverse(r_polydesc.vpn);
}
// PGM 09/16/98
- if ( fa->texinfo->c.flags & (SURF_WARP|SURF_FLOWING) )
- {
+ if (fa->texinfo->c.flags & (SURF_WARP | SURF_FLOWING)) {
r_polydesc.pixels = fa->texinfo->image->pixels[0];
r_polydesc.pixel_width = fa->texinfo->image->width;
r_polydesc.pixel_height = fa->texinfo->image->height;
}
// PGM 09/16/98
- else
- {
+ else {
surfcache_t *scache;
- scache = D_CacheSurface( fa, 0 );
+ scache = D_CacheSurface(fa, 0);
r_polydesc.pixels = scache->data;
r_polydesc.pixel_width = scache->width;
@@ -1064,15 +986,14 @@ static void R_BuildPolygonFromSurface(mface_t *fa)
tmins[1] = fa->texturemins[1];
}
- r_polydesc.dist = DotProduct( r_polydesc.vpn, pverts[0] );
+ r_polydesc.dist = DotProduct(r_polydesc.vpn, pverts[0]);
r_polydesc.s_offset = fa->texinfo->offset[0] - tmins[0];
r_polydesc.t_offset = fa->texinfo->offset[1] - tmins[1];
// scrolling texture addition
- if (fa->texinfo->c.flags & SURF_FLOWING)
- {
- r_polydesc.s_offset += -128 * ( (r_newrefdef.time*0.25) - (int)(r_newrefdef.time*0.25) );
+ if (fa->texinfo->c.flags & SURF_FLOWING) {
+ r_polydesc.s_offset += -128 * ((r_newrefdef.time * 0.25) - (int)(r_newrefdef.time * 0.25));
}
r_polydesc.nump = lnumverts;
@@ -1081,16 +1002,16 @@ static void R_BuildPolygonFromSurface(mface_t *fa)
/*
** R_PolygonCalculateGradients
*/
-static void R_PolygonCalculateGradients (void)
+static void R_PolygonCalculateGradients(void)
{
vec3_t p_normal, p_saxis, p_taxis;
float distinv;
- TransformVector (r_polydesc.vpn, p_normal);
- TransformVector (r_polydesc.vright, p_saxis);
- TransformVector (r_polydesc.vup, p_taxis);
+ TransformVector(r_polydesc.vpn, p_normal);
+ TransformVector(r_polydesc.vright, p_saxis);
+ TransformVector(r_polydesc.vup, p_taxis);
- distinv = 1.0 / (-(DotProduct (r_polydesc.viewer_position, r_polydesc.vpn)) + r_polydesc.dist );
+ distinv = 1.0 / (-(DotProduct(r_polydesc.viewer_position, r_polydesc.vpn)) + r_polydesc.dist);
d_sdivzstepu = p_saxis[0] * xscaleinv;
d_sdivzstepv = -p_saxis[1] * yscaleinv;
@@ -1104,8 +1025,8 @@ static void R_PolygonCalculateGradients (void)
d_zistepv = -p_normal[1] * yscaleinv * distinv;
d_ziorigin = p_normal[2] * distinv - xcenter * d_zistepu - ycenter * d_zistepv;
- sadjust = (fixed16_t) ( ( DotProduct( r_polydesc.viewer_position, r_polydesc.vright) + r_polydesc.s_offset ) * 0x10000 );
- tadjust = (fixed16_t) ( ( DotProduct( r_polydesc.viewer_position, r_polydesc.vup ) + r_polydesc.t_offset ) * 0x10000 );
+ sadjust = (fixed16_t)((DotProduct(r_polydesc.viewer_position, r_polydesc.vright) + r_polydesc.s_offset) * 0x10000);
+ tadjust = (fixed16_t)((DotProduct(r_polydesc.viewer_position, r_polydesc.vup) + r_polydesc.t_offset) * 0x10000);
// -1 (-epsilon) so we never wander off the edge of the texture
bbextents = (r_polydesc.pixel_width << 16) - 1;
@@ -1121,12 +1042,12 @@ static void R_PolygonCalculateGradients (void)
** This should NOT be called externally since it doesn't do clipping!
*/
// PGM - iswater was qboolean. changed to support passing more flags
-static void R_DrawPoly( int iswater )
+static void R_DrawPoly(int iswater)
{
int i, nump;
float ymin, ymax;
emitpoint_t *pverts;
- espan_t spans[MAXHEIGHT+1];
+ espan_t spans[MAXHEIGHT + 1];
s_polygon_spans = spans;
@@ -1136,16 +1057,13 @@ static void R_DrawPoly( int iswater )
ymax = -999999.9;
pverts = r_polydesc.pverts;
- for (i=0 ; i<r_polydesc.nump ; i++)
- {
- if (pverts->v < ymin)
- {
+ for (i = 0; i < r_polydesc.nump; i++) {
+ if (pverts->v < ymin) {
ymin = pverts->v;
s_minindex = i;
}
- if (pverts->v > ymax)
- {
+ if (pverts->v > ymax) {
ymax = pverts->v;
s_maxindex = i;
}
@@ -1153,8 +1071,8 @@ static void R_DrawPoly( int iswater )
pverts++;
}
- ymin = ceil (ymin);
- ymax = ceil (ymax);
+ ymin = ceil(ymin);
+ ymax = ceil(ymax);
if (ymin >= ymax)
return; // doesn't cross any scans at all
@@ -1168,17 +1086,17 @@ static void R_DrawPoly( int iswater )
pverts = r_polydesc.pverts;
pverts[nump] = pverts[0];
- R_PolygonCalculateGradients ();
- R_PolygonScanLeftEdge ();
- R_PolygonScanRightEdge ();
+ R_PolygonCalculateGradients();
+ R_PolygonScanLeftEdge();
+ R_PolygonScanRightEdge();
- R_PolygonDrawSpans( s_polygon_spans, iswater );
+ R_PolygonDrawSpans(s_polygon_spans, iswater);
}
/*
** R_DrawAlphaSurfaces
*/
-void R_DrawAlphaSurfaces( void )
+void R_DrawAlphaSurfaces(void)
{
mface_t *s = r_alpha_surfaces;
@@ -1188,45 +1106,44 @@ void R_DrawAlphaSurfaces( void )
modelorg[1] = -r_origin[1];
modelorg[2] = -r_origin[2];
- while ( s )
- {
- R_BuildPolygonFromSurface( s );
+ while (s) {
+ R_BuildPolygonFromSurface(s);
//=======
//PGM
// if (s->texinfo->flags & SURF_TRANS66)
-// R_ClipAndDrawPoly( 0.60f, ( s->texinfo->flags & SURF_WARP) != 0, qtrue );
+// R_ClipAndDrawPoly(0.60f, (s->texinfo->flags & SURF_WARP) != 0, qtrue);
// else
-// R_ClipAndDrawPoly( 0.30f, ( s->texinfo->flags & SURF_WARP) != 0, qtrue );
+// R_ClipAndDrawPoly(0.30f, (s->texinfo->flags & SURF_WARP) != 0, qtrue);
// PGM - pass down all the texinfo flags, not just SURF_WARP.
if (s->texinfo->c.flags & SURF_TRANS66)
- R_ClipAndDrawPoly( 0.60f, (s->texinfo->c.flags & (SURF_WARP|SURF_FLOWING)), qtrue );
+ R_ClipAndDrawPoly(0.60f, (s->texinfo->c.flags & (SURF_WARP | SURF_FLOWING)), qtrue);
else
- R_ClipAndDrawPoly( 0.30f, (s->texinfo->c.flags & (SURF_WARP|SURF_FLOWING)), qtrue );
+ R_ClipAndDrawPoly(0.30f, (s->texinfo->c.flags & (SURF_WARP | SURF_FLOWING)), qtrue);
//PGM
//=======
s = s->next;
}
-
+
r_alpha_surfaces = NULL;
}
/*
** R_IMFlatShadedQuad
*/
-void R_IMFlatShadedQuad( vec3_t a, vec3_t b, vec3_t c, vec3_t d, int color, float alpha )
+void R_IMFlatShadedQuad(vec3_t a, vec3_t b, vec3_t c, vec3_t d, int color, float alpha)
{
vec3_t s0, s1;
r_polydesc.nump = 4;
- VectorCopy( r_origin, r_polydesc.viewer_position );
+ VectorCopy(r_origin, r_polydesc.viewer_position);
- VectorCopy( a, r_clip_verts[0][0] );
- VectorCopy( b, r_clip_verts[0][1] );
- VectorCopy( c, r_clip_verts[0][2] );
- VectorCopy( d, r_clip_verts[0][3] );
+ VectorCopy(a, r_clip_verts[0][0]);
+ VectorCopy(b, r_clip_verts[0][1]);
+ VectorCopy(c, r_clip_verts[0][2]);
+ VectorCopy(d, r_clip_verts[0][3]);
r_clip_verts[0][0][3] = 0;
r_clip_verts[0][1][3] = 0;
@@ -1238,16 +1155,16 @@ void R_IMFlatShadedQuad( vec3_t a, vec3_t b, vec3_t c, vec3_t d, int color, floa
r_clip_verts[0][2][4] = 0;
r_clip_verts[0][3][4] = 0;
- VectorSubtract( d, c, s0 );
- VectorSubtract( c, b, s1 );
- CrossProduct( s0, s1, r_polydesc.vpn );
- VectorNormalize( r_polydesc.vpn );
+ VectorSubtract(d, c, s0);
+ VectorSubtract(c, b, s1);
+ CrossProduct(s0, s1, r_polydesc.vpn);
+ VectorNormalize(r_polydesc.vpn);
- r_polydesc.dist = DotProduct( r_polydesc.vpn, r_clip_verts[0][0] );
+ r_polydesc.dist = DotProduct(r_polydesc.vpn, r_clip_verts[0][0]);
r_polyblendcolor = color;
- R_ClipAndDrawPoly( alpha, qfalse, qfalse );
+ R_ClipAndDrawPoly(alpha, qfalse, qfalse);
}
/*
@@ -1256,14 +1173,14 @@ void R_IMFlatShadedQuad( vec3_t a, vec3_t b, vec3_t c, vec3_t d, int color, floa
** Draw currententity / currentmodel as a single texture
** mapped polygon
*/
-void R_DrawSprite (void)
+void R_DrawSprite(void)
{
vec5_t *pverts;
vec3_t left, up, right, down;
mspriteframe_t *frame;
frame = &currentmodel->spriteframes[
- currententity->frame % currentmodel->numframes];
+ currententity->frame % currentmodel->numframes];
r_polydesc.pixels = frame->image->pixels[0];
r_polydesc.pixel_width = frame->width;
@@ -1271,22 +1188,22 @@ void R_DrawSprite (void)
r_polydesc.dist = 0;
// generate the sprite's axes, completely parallel to the viewplane.
- VectorCopy (vup, r_polydesc.vup);
- VectorCopy (vright, r_polydesc.vright);
- VectorCopy (vpn, r_polydesc.vpn);
+ VectorCopy(vup, r_polydesc.vup);
+ VectorCopy(vright, r_polydesc.vright);
+ VectorCopy(vpn, r_polydesc.vpn);
// build the sprite poster in worldspace
- VectorScale (r_polydesc.vright,
- frame->width - frame->origin_x, right);
- VectorScale (r_polydesc.vup,
- frame->height - frame->origin_y, up);
- VectorScale (r_polydesc.vright,
- -frame->origin_x, left);
- VectorScale (r_polydesc.vup,
- -frame->origin_y, down);
+ VectorScale(r_polydesc.vright,
+ frame->width - frame->origin_x, right);
+ VectorScale(r_polydesc.vup,
+ frame->height - frame->origin_y, up);
+ VectorScale(r_polydesc.vright,
+ -frame->origin_x, left);
+ VectorScale(r_polydesc.vup,
+ -frame->origin_y, down);
// invert UP vector for sprites
- VectorNegate( r_polydesc.vup, r_polydesc.vup );
+ VectorNegate(r_polydesc.vup, r_polydesc.vup);
pverts = r_clip_verts[0];
@@ -1315,15 +1232,15 @@ void R_DrawSprite (void)
pverts[3][4] = frame->height;
r_polydesc.nump = 4;
- r_polydesc.s_offset = ( r_polydesc.pixel_width >> 1);
- r_polydesc.t_offset = ( r_polydesc.pixel_height >> 1);
- VectorCopy( modelorg, r_polydesc.viewer_position );
+ r_polydesc.s_offset = (r_polydesc.pixel_width >> 1);
+ r_polydesc.t_offset = (r_polydesc.pixel_height >> 1);
+ VectorCopy(modelorg, r_polydesc.viewer_position);
r_polydesc.stipple_parity = 1;
- if ( currententity->flags & RF_TRANSLUCENT )
- R_ClipAndDrawPoly ( currententity->alpha, qfalse, qtrue );
+ if (currententity->flags & RF_TRANSLUCENT)
+ R_ClipAndDrawPoly(currententity->alpha, qfalse, qtrue);
else
- R_ClipAndDrawPoly ( 1.0F, qfalse, qtrue );
+ R_ClipAndDrawPoly(1.0F, qfalse, qtrue);
r_polydesc.stipple_parity = 0;
}