diff options
Diffstat (limited to 'source/sw_polyse.c')
-rw-r--r-- | source/sw_polyse.c | 151 |
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 |