summaryrefslogtreecommitdiff
path: root/source/sw_polyse.c
diff options
context:
space:
mode:
Diffstat (limited to 'source/sw_polyse.c')
-rw-r--r--source/sw_polyse.c151
1 files changed, 18 insertions, 133 deletions
diff --git a/source/sw_polyse.c b/source/sw_polyse.c
index 560004c..03ca7da 100644
--- a/source/sw_polyse.c
+++ b/source/sw_polyse.c
@@ -287,7 +287,7 @@ void R_PolysetScanLeftEdge_C(int height)
d_aspancount += d_countextrastep;
d_ptex += d_ptexextrastep;
d_sfrac += d_sfracextrastep;
- d_ptex += ( d_sfrac >> 16 ) << VID_SHIFT;
+ d_ptex += d_sfrac >> 16;
d_sfrac &= 0xFFFF;
d_tfrac += d_tfracextrastep;
@@ -307,7 +307,7 @@ void R_PolysetScanLeftEdge_C(int height)
d_aspancount += ubasestep;
d_ptex += d_ptexbasestep;
d_sfrac += d_sfracbasestep;
- d_ptex += ( d_sfrac >> 16 ) << VID_SHIFT;
+ d_ptex += d_sfrac >> 16;
d_sfrac &= 0xFFFF;
d_tfrac += d_tfracbasestep;
if (d_tfrac & 0x10000)
@@ -466,122 +466,9 @@ void R_PolysetCalcGradients (int skinwidth)
a_tstepxfrac = r_tstepx & 0xFFFF;
}
- a_ststepxwhole = skinwidth * (r_tstepx >> 16) + VID_BYTES * (r_sstepx >> 16);
+ a_ststepxwhole = skinwidth * (r_tstepx >> 16) + (r_sstepx >> 16);
}
-#ifdef TRUECOLOR_RENDERER
-
-void R_PolysetDrawSpansTranslucent( spanpackage_t *pspanpackage ) {
- int lcount;
- byte *lpdest;
- byte *lptex;
- int lsfrac, ltfrac;
- int llight;
- int lzi;
- short *lpz;
-
- do {
- lcount = d_aspancount - pspanpackage->count;
-
- errorterm += erroradjustup;
- if (errorterm >= 0) {
- d_aspancount += d_countextrastep;
- errorterm -= erroradjustdown;
- } else {
- d_aspancount += ubasestep;
- }
-
- if (lcount) {
- lpdest = pspanpackage->pdest;
- lptex = pspanpackage->ptex;
- lpz = pspanpackage->pz;
- lsfrac = pspanpackage->sfrac;
- ltfrac = pspanpackage->tfrac;
- llight = pspanpackage->light;
- lzi = pspanpackage->zi;
-
- do {
- if ((lzi >> 16) >= *lpz) {
- lpdest[0] = r_aliasOneMinusAlphaTable[lpdest[0]] + r_aliasAlphaTable[lptex[0]];
- lpdest[1] = r_aliasOneMinusAlphaTable[lpdest[1]] + r_aliasAlphaTable[lptex[1]];
- lpdest[2] = r_aliasOneMinusAlphaTable[lpdest[2]] + r_aliasAlphaTable[lptex[2]];
- }
- lpdest += VID_BYTES;
- lzi += r_zistepx;
- lpz++;
- llight += r_lstepx;
- lptex += a_ststepxwhole;
- lsfrac += a_sstepxfrac;
- lptex += ( lsfrac >> 16 ) << VID_SHIFT;
- lsfrac &= 0xFFFF;
- ltfrac += a_tstepxfrac;
- if (ltfrac & 0x10000) {
- lptex += r_affinetridesc.skinwidth;
- ltfrac &= 0xFFFF;
- }
- } while (--lcount);
- }
-
- pspanpackage++;
- } while (pspanpackage->count != -999999);
-}
-
-void R_PolysetDrawSpansOpaque( spanpackage_t *pspanpackage ) {
- int lcount;
- byte *lpdest;
- byte *lptex;
- int lsfrac, ltfrac;
- int llight;
- int lzi;
- short *lpz;
-
- do {
- lcount = d_aspancount - pspanpackage->count;
-
- errorterm += erroradjustup;
- if (errorterm >= 0) {
- d_aspancount += d_countextrastep;
- errorterm -= erroradjustdown;
- } else {
- d_aspancount += ubasestep;
- }
-
- if (lcount) {
- lpdest = pspanpackage->pdest;
- lptex = pspanpackage->ptex;
- lpz = pspanpackage->pz;
- lsfrac = pspanpackage->sfrac;
- ltfrac = pspanpackage->tfrac;
- llight = pspanpackage->light;
- lzi = pspanpackage->zi;
-
- do {
- if ((lzi >> 16) >= *lpz) {
- *lpz = lzi >> 16;
- *( uint32_t * )lpdest = *( uint32_t * )lptex;
- }
- lpdest += VID_BYTES;
- lzi += r_zistepx;
- lpz++;
- llight += r_lstepx;
- lptex += a_ststepxwhole;
- lsfrac += a_sstepxfrac;
- lptex += ( lsfrac >> 16 ) << VID_SHIFT;
- lsfrac &= 0xFFFF;
- ltfrac += a_tstepxfrac;
- if (ltfrac & 0x10000) {
- lptex += r_affinetridesc.skinwidth;
- ltfrac &= 0xFFFF;
- }
- } while (--lcount);
- }
-
- pspanpackage++;
- } while (pspanpackage->count != -999999);
-}
-
-#else /* TRUECOLOR_RENDERER */
-
/*
================
R_PolysetDrawThreshSpans8
@@ -923,13 +810,13 @@ void R_PolysetDrawSpans8_Opaque (spanpackage_t *pspanpackage)
if ((lzi >> 16) >= *lpz)
{
//PGM
- if(r_newrefdef.rdflags & RDF_IRGOGGLES && currententity->flags & RF_IR_VISIBLE)
+ if(iractive)
*lpdest = ((byte *)vid.colormap)[irtable[*lptex]];
else
- *lpdest = ((byte *)vid.colormap)[*lptex + (llight & 0xFF00)];
+ *lpdest = ((byte *)vid.colormap)[*lptex + (llight & 0xFF00)];
//PGM
*lpz = lzi >> 16;
- }
+ }
lpdest++;
lzi += r_zistepx;
lpz++;
@@ -990,8 +877,6 @@ void R_PolysetFillSpans8 (spanpackage_t *pspanpackage)
}
}
-#endif /* !TRUECOLOR_RENDERER */
-
/*
================
R_RasterizeAliasPolySmooth
@@ -1029,7 +914,7 @@ void R_RasterizeAliasPolySmooth (void)
ystart = plefttop[1];
d_aspancount = plefttop[0] - prighttop[0];
- d_ptex = (byte *)r_affinetridesc.pskin + (plefttop[2] >> 16) * VID_BYTES +
+ d_ptex = (byte *)r_affinetridesc.pskin + (plefttop[2] >> 16) +
(plefttop[3] >> 16) * r_affinetridesc.skinwidth;
#if USE_ASM
if ( d_pdrawspans == R_PolysetDrawSpans8_Opaque )
@@ -1047,7 +932,7 @@ void R_RasterizeAliasPolySmooth (void)
d_zi = plefttop[5];
d_pdest = (byte *)d_viewbuffer +
- ystart * r_screenwidth + plefttop[0] * VID_BYTES;
+ ystart * r_screenwidth + plefttop[0];
d_pz = d_pzbuffer + ystart * d_zwidth + plefttop[0];
if (initialleftheight == 1)
@@ -1084,8 +969,8 @@ void R_RasterizeAliasPolySmooth (void)
d_pzextrastep = d_pzbasestep + 1;
}
- d_pdestbasestep = r_screenwidth + ( ubasestep << VID_SHIFT );
- d_pdestextrastep = d_pdestbasestep + VID_BYTES;
+ d_pdestbasestep = r_screenwidth + ubasestep;
+ d_pdestextrastep = d_pdestbasestep + 1;
// TODO: can reuse partial expressions here
@@ -1098,7 +983,7 @@ void R_RasterizeAliasPolySmooth (void)
working_lstepx = r_lstepx;
d_countextrastep = ubasestep + 1;
- d_ptexbasestep = ((r_sstepy + r_sstepx * ubasestep) >> 16) * VID_BYTES +
+ d_ptexbasestep = ((r_sstepy + r_sstepx * ubasestep) >> 16) +
((r_tstepy + r_tstepx * ubasestep) >> 16) *
r_affinetridesc.skinwidth;
#if USE_ASM
@@ -1116,7 +1001,7 @@ void R_RasterizeAliasPolySmooth (void)
d_lightbasestep = r_lstepy + working_lstepx * ubasestep;
d_zibasestep = r_zistepy + r_zistepx * ubasestep;
- d_ptexextrastep = ((r_sstepy + r_sstepx * d_countextrastep) >> 16) * VID_BYTES +
+ d_ptexextrastep = ((r_sstepy + r_sstepx * d_countextrastep) >> 16) +
((r_tstepy + r_tstepx * d_countextrastep) >> 16) *
r_affinetridesc.skinwidth;
#if USE_ASM
@@ -1162,14 +1047,14 @@ void R_RasterizeAliasPolySmooth (void)
ystart = plefttop[1];
d_aspancount = plefttop[0] - prighttop[0];
- d_ptex = (byte *)r_affinetridesc.pskin + (plefttop[2] >> 16) * VID_BYTES +
+ d_ptex = (byte *)r_affinetridesc.pskin + (plefttop[2] >> 16) +
(plefttop[3] >> 16) * r_affinetridesc.skinwidth;
d_sfrac = 0;
d_tfrac = 0;
d_light = plefttop[4];
d_zi = plefttop[5];
- d_pdest = (byte *)d_viewbuffer + ystart * r_screenwidth + ( plefttop[0] << VID_SHIFT );
+ d_pdest = (byte *)d_viewbuffer + ystart * r_screenwidth + plefttop[0];
d_pz = d_pzbuffer + ystart * d_zwidth + plefttop[0];
if (height == 1)
@@ -1193,8 +1078,8 @@ void R_RasterizeAliasPolySmooth (void)
R_PolysetSetUpForLineScan(plefttop[0], plefttop[1],
pleftbottom[0], pleftbottom[1]);
- d_pdestbasestep = r_screenwidth + ( ubasestep << VID_SHIFT );
- d_pdestextrastep = d_pdestbasestep + VID_BYTES;
+ d_pdestbasestep = r_screenwidth + ubasestep;
+ d_pdestextrastep = d_pdestbasestep + 1;
#if USE_ASM
if ( d_pdrawspans == R_PolysetDrawSpans8_Opaque )
@@ -1215,7 +1100,7 @@ void R_RasterizeAliasPolySmooth (void)
working_lstepx = r_lstepx;
d_countextrastep = ubasestep + 1;
- d_ptexbasestep = ((r_sstepy + r_sstepx * ubasestep) >> 16) * VID_BYTES +
+ d_ptexbasestep = ((r_sstepy + r_sstepx * ubasestep) >> 16) +
((r_tstepy + r_tstepx * ubasestep) >> 16) *
r_affinetridesc.skinwidth;
#if USE_ASM
@@ -1233,7 +1118,7 @@ void R_RasterizeAliasPolySmooth (void)
d_lightbasestep = r_lstepy + working_lstepx * ubasestep;
d_zibasestep = r_zistepy + r_zistepx * ubasestep;
- d_ptexextrastep = ((r_sstepy + r_sstepx * d_countextrastep) >> 16) * VID_BYTES +
+ d_ptexextrastep = ((r_sstepy + r_sstepx * d_countextrastep) >> 16) +
((r_tstepy + r_tstepx * d_countextrastep) >> 16) *
r_affinetridesc.skinwidth;
#if USE_ASM