mirror of
https://git.do.srb2.org/STJr/SRB2.git
synced 2025-02-21 11:21:11 +00:00
Slight refactor
This commit is contained in:
parent
b00740066e
commit
edb2cb505e
4 changed files with 117 additions and 114 deletions
129
src/r_draw.c
129
src/r_draw.c
|
@ -107,6 +107,12 @@ UINT8 *blendtables[NUMBLENDMAPS];
|
|||
UINT8 *dc_transmap; // one of the translucency tables
|
||||
UINT8 dc_alpha; // column alpha
|
||||
|
||||
static INT32 multtable[0x10000];
|
||||
static INT32 multtableinv[0x10000];
|
||||
|
||||
static INT32 *dp_multtable = NULL;
|
||||
static INT32 *dp_multtableinv = NULL;
|
||||
|
||||
UINT32 (*R_BlendModeMix)(UINT32, UINT32, UINT8) = NULL;
|
||||
|
||||
// ----------------------
|
||||
|
@ -210,8 +216,7 @@ void R_InitTranslucencyTables(void)
|
|||
// Load here the transparency lookup tables 'TRANSx0'
|
||||
// NOTE: the TRANSx0 resources MUST BE aligned on 64k for the asm
|
||||
// optimised code (in other words, transtables pointer low word is 0)
|
||||
transtables = Z_MallocAlign(NUMTRANSTABLES*0x10000, PU_STATIC,
|
||||
NULL, 16);
|
||||
transtables = Z_MallocAlign(NUMTRANSTABLES*0x10000, PU_STATIC, NULL, 16);
|
||||
|
||||
W_ReadLump(W_GetNumForName("TRANS10"), transtables);
|
||||
W_ReadLump(W_GetNumForName("TRANS20"), transtables+0x10000);
|
||||
|
@ -223,6 +228,15 @@ void R_InitTranslucencyTables(void)
|
|||
W_ReadLump(W_GetNumForName("TRANS80"), transtables+0x70000);
|
||||
W_ReadLump(W_GetNumForName("TRANS90"), transtables+0x80000);
|
||||
|
||||
for (unsigned alpha = 0; alpha < 0x100; alpha++)
|
||||
{
|
||||
for (unsigned color = 0; color < 0x100; color++)
|
||||
{
|
||||
multtable[alpha << 8 | color] = (alpha * color) >> 8;
|
||||
multtableinv[alpha << 8 | color] = (((int)alpha ^ 0xFF) * color) >> 8;
|
||||
}
|
||||
}
|
||||
|
||||
R_GenerateBlendTables();
|
||||
}
|
||||
|
||||
|
@ -1011,42 +1025,38 @@ static inline UINT32 Blend_Copy(UINT32 fg, UINT32 bg, UINT8 alpha)
|
|||
{
|
||||
(void)bg;
|
||||
(void)alpha;
|
||||
return (0xFF000000 | fg);
|
||||
return 0xFF000000 | fg;
|
||||
}
|
||||
|
||||
static inline UINT32 Blend_Translucent(UINT32 fg, UINT32 bg, UINT8 alpha)
|
||||
{
|
||||
fg = R_TranslucentMix(bg, fg, alpha);
|
||||
return (0xFF000000 | fg);
|
||||
(void)alpha;
|
||||
|
||||
return 0xFF000000 | R_PutRgbaRGB(
|
||||
(dp_multtable[R_GetRgbaR(fg)] + dp_multtableinv[R_GetRgbaR(bg)]),
|
||||
(dp_multtable[R_GetRgbaG(fg)] + dp_multtableinv[R_GetRgbaG(bg)]),
|
||||
(dp_multtable[R_GetRgbaB(fg)] + dp_multtableinv[R_GetRgbaB(bg)]));
|
||||
}
|
||||
|
||||
static inline UINT32 Blend_Additive(UINT32 fg, UINT32 bg, UINT8 alpha)
|
||||
{
|
||||
UINT8 r = clamp(R_GetRgbaR(bg) + R_GetRgbaR(fg));
|
||||
UINT8 g = clamp(R_GetRgbaG(bg) + R_GetRgbaG(fg));
|
||||
UINT8 b = clamp(R_GetRgbaB(bg) + R_GetRgbaB(fg));
|
||||
(void)alpha;
|
||||
|
||||
fg = R_PutRgbaRGB(r, g, b);
|
||||
fg = R_TranslucentMix(bg, fg, alpha);
|
||||
UINT8 r = clamp(dp_multtable[R_GetRgbaR(fg)] + R_GetRgbaR(bg));
|
||||
UINT8 g = clamp(dp_multtable[R_GetRgbaG(fg)] + R_GetRgbaG(bg));
|
||||
UINT8 b = clamp(dp_multtable[R_GetRgbaB(fg)] + R_GetRgbaB(bg));
|
||||
|
||||
return (0xFF000000 | fg);
|
||||
return 0xFF000000 | R_PutRgbaRGB(
|
||||
(dp_multtable[r] + dp_multtableinv[R_GetRgbaR(bg)]),
|
||||
(dp_multtable[g] + dp_multtableinv[R_GetRgbaG(bg)]),
|
||||
(dp_multtable[b] + dp_multtableinv[R_GetRgbaB(bg)]));
|
||||
}
|
||||
|
||||
static inline UINT32 Blend_Subtractive(UINT32 fg, UINT32 bg, UINT8 alpha)
|
||||
{
|
||||
INT32 mixR, mixG, mixB;
|
||||
UINT8 r, g, b;
|
||||
|
||||
if (alpha == 0)
|
||||
return 0xFF000000;
|
||||
|
||||
mixR = R_GetRgbaR(fg);
|
||||
mixG = R_GetRgbaG(fg);
|
||||
mixB = R_GetRgbaB(fg);
|
||||
|
||||
r = clamp((INT32)(-R_GetRgbaR(bg) + mixR));
|
||||
g = clamp((INT32)(-R_GetRgbaG(bg) + mixG));
|
||||
b = clamp((INT32)(-R_GetRgbaB(bg) + mixB));
|
||||
UINT8 r = clamp((INT32)(-R_GetRgbaR(bg) + R_GetRgbaR(fg)));
|
||||
UINT8 g = clamp((INT32)(-R_GetRgbaG(bg) + R_GetRgbaG(fg)));
|
||||
UINT8 b = clamp((INT32)(-R_GetRgbaB(bg) + R_GetRgbaB(fg)));
|
||||
|
||||
alpha = (0xFF - alpha);
|
||||
|
||||
|
@ -1054,44 +1064,34 @@ static inline UINT32 Blend_Subtractive(UINT32 fg, UINT32 bg, UINT8 alpha)
|
|||
g = clamp((INT32)(g - alpha));
|
||||
b = clamp((INT32)(b - alpha));
|
||||
|
||||
return (0xFF000000 | R_PutRgbaRGB(r, g, b));
|
||||
return 0xFF000000 | R_PutRgbaRGB(r, g, b);
|
||||
}
|
||||
|
||||
static inline UINT32 Blend_ReverseSubtractive(UINT32 fg, UINT32 bg, UINT8 alpha)
|
||||
{
|
||||
INT32 mixR, mixG, mixB;
|
||||
UINT8 r, g, b;
|
||||
(void)alpha;
|
||||
|
||||
if (alpha == 0)
|
||||
return bg;
|
||||
INT32 bgr = R_GetRgbaR(bg);
|
||||
INT32 bgg = R_GetRgbaG(bg);
|
||||
INT32 bgb = R_GetRgbaB(bg);
|
||||
|
||||
mixR = R_GetRgbaR(fg);
|
||||
mixG = R_GetRgbaG(fg);
|
||||
mixB = R_GetRgbaB(fg);
|
||||
UINT8 r = clamp((INT32)(bgr - R_GetRgbaR(fg)));
|
||||
UINT8 g = clamp((INT32)(bgg - R_GetRgbaG(fg)));
|
||||
UINT8 b = clamp((INT32)(bgb - R_GetRgbaB(fg)));
|
||||
|
||||
r = clamp((INT32)(R_GetRgbaR(bg) - mixR));
|
||||
g = clamp((INT32)(R_GetRgbaG(bg) - mixG));
|
||||
b = clamp((INT32)(R_GetRgbaB(bg) - mixB));
|
||||
|
||||
fg = R_PutRgbaRGB(r, g, b);
|
||||
fg = R_TranslucentMix(bg, fg, alpha);
|
||||
|
||||
return (0xFF000000 | fg);
|
||||
return 0xFF000000 | R_PutRgbaRGB(
|
||||
(dp_multtable[r] + dp_multtableinv[bgr]),
|
||||
(dp_multtable[g] + dp_multtableinv[bgg]),
|
||||
(dp_multtable[b] + dp_multtableinv[bgb]));
|
||||
}
|
||||
|
||||
static inline UINT32 Blend_Multiplicative(UINT32 fg, UINT32 bg, UINT8 alpha)
|
||||
{
|
||||
float mixR = ((float)R_GetRgbaR(fg) / 256.0f);
|
||||
float mixG = ((float)R_GetRgbaG(fg) / 256.0f);
|
||||
float mixB = ((float)R_GetRgbaB(fg) / 256.0f);
|
||||
|
||||
UINT8 r = clamp((int)(R_GetRgbaR(bg) * mixR));
|
||||
UINT8 g = clamp((int)(R_GetRgbaG(bg) * mixG));
|
||||
UINT8 b = clamp((int)(R_GetRgbaB(bg) * mixB));
|
||||
|
||||
(void)alpha;
|
||||
|
||||
return (0xFF000000 | R_PutRgbaRGB(r, g, b));
|
||||
UINT8 r = ((INT32)R_GetRgbaR(bg) * (INT32)R_GetRgbaR(fg)) >> 8;
|
||||
UINT8 g = ((INT32)R_GetRgbaG(bg) * (INT32)R_GetRgbaG(fg)) >> 8;
|
||||
UINT8 b = ((INT32)R_GetRgbaB(bg) * (INT32)R_GetRgbaB(fg)) >> 8;
|
||||
return 0xFF000000 | R_PutRgbaRGB(r, g, b);
|
||||
}
|
||||
|
||||
static inline void R_SetBlendingFunction(INT32 blendmode)
|
||||
|
@ -1120,11 +1120,11 @@ static inline void R_SetBlendingFunction(INT32 blendmode)
|
|||
}
|
||||
}
|
||||
|
||||
static void R_AlphaBlend_8(UINT8 src, UINT8 alpha, UINT8 *dest)
|
||||
static UINT8 R_AlphaBlend_8(UINT8 src, UINT8 alpha, UINT8 *dest)
|
||||
{
|
||||
RGBA_t result;
|
||||
result.rgba = R_BlendModeMix(GetTrueColor(src), GetTrueColor(*dest), alpha);
|
||||
*dest = GetColorLUT(&r_draw_lut, result.s.red, result.s.green, result.s.blue);
|
||||
return GetColorLUT(&r_draw_lut, result.s.red, result.s.green, result.s.blue);
|
||||
}
|
||||
|
||||
static UINT8 R_AlphaBlend_s8d8(UINT8 src, UINT8 alpha, UINT8 dest)
|
||||
|
@ -1146,6 +1146,9 @@ void R_SetColumnBlendingFunction(INT32 blendmode)
|
|||
else
|
||||
#endif
|
||||
R_SetBlendingFunction(blendmode);
|
||||
|
||||
dp_multtable = &multtable[dc_alpha << 8];
|
||||
dp_multtableinv = &multtableinv[dc_alpha << 8];
|
||||
}
|
||||
|
||||
void R_SetSpanBlendingFunction(INT32 blendmode)
|
||||
|
@ -1156,6 +1159,9 @@ void R_SetSpanBlendingFunction(INT32 blendmode)
|
|||
else
|
||||
#endif
|
||||
R_SetBlendingFunction(blendmode);
|
||||
|
||||
dp_multtable = &multtable[ds_alpha << 8];
|
||||
dp_multtableinv = &multtableinv[ds_alpha << 8];
|
||||
}
|
||||
|
||||
void R_InitAlphaLUT(void)
|
||||
|
@ -1216,7 +1222,7 @@ static UINT32 TC_ColorMix(UINT32 fg, UINT32 bg)
|
|||
// Apply the color cube
|
||||
fg = ColorCube_ApplyRGBA(fg);
|
||||
|
||||
cache->result = (0xFF000000 | fg);
|
||||
cache->result = 0xFF000000 | fg;
|
||||
return cache->result;
|
||||
}
|
||||
|
||||
|
@ -1250,7 +1256,7 @@ static UINT32 TC_ColorMix2(UINT32 fg, UINT32 bg)
|
|||
// Apply the color cube
|
||||
fg = ColorCube_ApplyRGBA(fg);
|
||||
|
||||
cache->result = (0xFF000000 | fg);
|
||||
cache->result = 0xFF000000 | fg;
|
||||
return cache->result;
|
||||
}
|
||||
|
||||
|
@ -1306,15 +1312,12 @@ static inline UINT32 TC_Colormap32Mix(UINT32 color)
|
|||
static inline UINT32 Blend_ColorMix_Copy(UINT32 fg, UINT32 bg, UINT8 alpha)
|
||||
{
|
||||
(void)alpha;
|
||||
fg = TC_ColorMix(fg, bg);
|
||||
return (0xFF000000 | fg);
|
||||
return TC_ColorMix(fg, bg);
|
||||
}
|
||||
|
||||
static inline UINT32 Blend_ColorMix_Translucent(UINT32 fg, UINT32 bg, UINT8 alpha)
|
||||
{
|
||||
fg = TC_ColorMix(fg, bg);
|
||||
fg = R_TranslucentMix(bg, fg, alpha);
|
||||
return (0xFF000000 | fg);
|
||||
return Blend_Translucent(fg, TC_ColorMix(fg, bg), alpha);
|
||||
}
|
||||
|
||||
static inline UINT32 Blend_ColorMix_Additive(UINT32 fg, UINT32 bg, UINT8 alpha)
|
||||
|
@ -1419,15 +1422,15 @@ static inline void R_SetBlendingFunction_ColorMix(INT32 blendmode)
|
|||
|
||||
#undef clamp
|
||||
|
||||
#define WriteTranslucentColumn(idx) *dest = R_BlendModeMix(GetTrueColor(idx), *(UINT32 *)dest, dc_alpha)
|
||||
#define WriteTranslucentColumn32(idx) *dest = R_BlendModeMix(idx, *(UINT32 *)dest, dc_alpha)
|
||||
#define WriteTranslucentColumn(idx) *dest = R_AlphaBlend_8(idx, dc_alpha, dest)
|
||||
#define WriteTranslucentColumn32(idx) *dest = R_BlendModeMix(idx, dc_alpha, (UINT32 *)dest)
|
||||
|
||||
#define WriteTranslucentSpan(idx) *dest = R_BlendModeMix(GetTrueColor(idx), *(UINT32 *)dest, ds_alpha)
|
||||
#define WriteTranslucentSpan(idx) *dest = R_AlphaBlend_8(idx, ds_alpha, dest)
|
||||
#define WriteTranslucentSpan32(idx) *dest = R_BlendModeMix(idx, *(UINT32 *)dest, ds_alpha)
|
||||
#define WriteTranslucentSpanIdx(idx, destidx) dest[destidx] = R_BlendModeMix(GetTrueColor(idx), dest[destidx], ds_alpha)
|
||||
#define WriteTranslucentSpanIdx32(idx, destidx) dest[destidx] = R_BlendModeMix(idx, dest[destidx], ds_alpha)
|
||||
|
||||
#define WriteTranslucentWaterSpan(idx) *dest = R_BlendModeMix(GetTrueColor(idx), *(UINT32 *)dsrc, ds_alpha); dsrc++
|
||||
#define WriteTranslucentWaterSpan(idx) *dest = R_AlphaBlend_8(idx, ds_alpha, dsrc); dsrc++
|
||||
#define WriteTranslucentWaterSpan32(idx) *dest = R_BlendModeMix(idx, *(UINT32 *)dsrc, ds_alpha); dsrc++
|
||||
#define WriteTranslucentWaterSpanIdx(idx, destidx) dest[destidx] = R_BlendModeMix(GetTrueColor(idx), *(UINT32 *)dsrc, ds_alpha); dsrc++
|
||||
#define WriteTranslucentWaterSpanIdx32(idx, destidx) dest[destidx] = R_BlendModeMix(idx, *(UINT32 *)dsrc, ds_alpha); dsrc++
|
||||
|
|
|
@ -355,7 +355,7 @@ void R_Draw2sMultiPatchAlphaColumn_8(void)
|
|||
val = source[frac>>FRACBITS];
|
||||
|
||||
if (val != TRANSPARENTPIXEL)
|
||||
R_AlphaBlend_8(colormap[val], dc_alpha, dest);
|
||||
*dest = R_AlphaBlend_8(colormap[val], dc_alpha, dest);
|
||||
|
||||
dest += vid.width;
|
||||
|
||||
|
@ -375,12 +375,12 @@ void R_Draw2sMultiPatchAlphaColumn_8(void)
|
|||
{
|
||||
val = source[(frac>>FRACBITS) & heightmask];
|
||||
if (val != TRANSPARENTPIXEL)
|
||||
R_AlphaBlend_8(colormap[val], dc_alpha, dest);
|
||||
*dest = R_AlphaBlend_8(colormap[val], dc_alpha, dest);
|
||||
dest += vid.width;
|
||||
frac += fracstep;
|
||||
val = source[(frac>>FRACBITS) & heightmask];
|
||||
if (val != TRANSPARENTPIXEL)
|
||||
R_AlphaBlend_8(colormap[val], dc_alpha, dest);
|
||||
*dest = R_AlphaBlend_8(colormap[val], dc_alpha, dest);
|
||||
dest += vid.width;
|
||||
frac += fracstep;
|
||||
}
|
||||
|
@ -388,7 +388,7 @@ void R_Draw2sMultiPatchAlphaColumn_8(void)
|
|||
{
|
||||
val = source[(frac>>FRACBITS) & heightmask];
|
||||
if (val != TRANSPARENTPIXEL)
|
||||
R_AlphaBlend_8(colormap[val], dc_alpha, dest);
|
||||
*dest = R_AlphaBlend_8(colormap[val], dc_alpha, dest);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -535,13 +535,13 @@ void R_DrawDropShadowColumn_8(void)
|
|||
{
|
||||
while ((count -= 2) >= 0)
|
||||
{
|
||||
R_AlphaBlend_8(DSCOLOR, dc_alpha, dest);
|
||||
*dest = R_AlphaBlend_8(DSCOLOR, dc_alpha, dest);
|
||||
dest += vid.width;
|
||||
R_AlphaBlend_8(DSCOLOR, dc_alpha, dest);
|
||||
*dest = R_AlphaBlend_8(DSCOLOR, dc_alpha, dest);
|
||||
dest += vid.width;
|
||||
}
|
||||
if (count & 1)
|
||||
R_AlphaBlend_8(DSCOLOR, dc_alpha, dest);
|
||||
*dest = R_AlphaBlend_8(DSCOLOR, dc_alpha, dest);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -608,7 +608,7 @@ void R_DrawAlphaColumn_8(void)
|
|||
// Re-map color indices from wall texture column
|
||||
// using a lighting/special effects LUT.
|
||||
// heightmask is the Tutti-Frutti fix
|
||||
R_AlphaBlend_8(colormap[source[frac>>FRACBITS]], dc_alpha, dest);
|
||||
*dest = R_AlphaBlend_8(colormap[source[frac>>FRACBITS]], dc_alpha, dest);
|
||||
dest += vid.width;
|
||||
if ((frac += fracstep) >= heightmask)
|
||||
frac -= heightmask;
|
||||
|
@ -619,15 +619,15 @@ void R_DrawAlphaColumn_8(void)
|
|||
{
|
||||
while ((count -= 2) >= 0) // texture height is a power of 2
|
||||
{
|
||||
R_AlphaBlend_8(colormap[source[(frac>>FRACBITS)&heightmask]], dc_alpha, dest);
|
||||
*dest = R_AlphaBlend_8(colormap[source[(frac>>FRACBITS)&heightmask]], dc_alpha, dest);
|
||||
dest += vid.width;
|
||||
frac += fracstep;
|
||||
R_AlphaBlend_8(colormap[source[(frac>>FRACBITS)&heightmask]], dc_alpha, dest);
|
||||
*dest = R_AlphaBlend_8(colormap[source[(frac>>FRACBITS)&heightmask]], dc_alpha, dest);
|
||||
dest += vid.width;
|
||||
frac += fracstep;
|
||||
}
|
||||
if (count & 1)
|
||||
R_AlphaBlend_8(colormap[source[(frac>>FRACBITS)&heightmask]], dc_alpha, dest);
|
||||
*dest = R_AlphaBlend_8(colormap[source[(frac>>FRACBITS)&heightmask]], dc_alpha, dest);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -744,7 +744,7 @@ void R_DrawTranslatedAlphaColumn_8(void)
|
|||
// Re-map color indices from wall texture column
|
||||
// using a lighting/special effects LUT.
|
||||
// heightmask is the Tutti-Frutti fix
|
||||
R_AlphaBlend_8(dc_colormap[dc_translation[dc_source[frac>>FRACBITS]]], dc_alpha, dest);
|
||||
*dest = R_AlphaBlend_8(dc_colormap[dc_translation[dc_source[frac>>FRACBITS]]], dc_alpha, dest);
|
||||
dest += vid.width;
|
||||
if ((frac += fracstep) >= heightmask)
|
||||
frac -= heightmask;
|
||||
|
@ -755,15 +755,15 @@ void R_DrawTranslatedAlphaColumn_8(void)
|
|||
{
|
||||
while ((count -= 2) >= 0) // texture height is a power of 2
|
||||
{
|
||||
R_AlphaBlend_8(dc_colormap[dc_translation[dc_source[(frac>>FRACBITS)&heightmask]]], dc_alpha, dest);
|
||||
*dest = R_AlphaBlend_8(dc_colormap[dc_translation[dc_source[(frac>>FRACBITS)&heightmask]]], dc_alpha, dest);
|
||||
dest += vid.width;
|
||||
frac += fracstep;
|
||||
R_AlphaBlend_8(dc_colormap[dc_translation[dc_source[(frac>>FRACBITS)&heightmask]]], dc_alpha, dest);
|
||||
*dest = R_AlphaBlend_8(dc_colormap[dc_translation[dc_source[(frac>>FRACBITS)&heightmask]]], dc_alpha, dest);
|
||||
dest += vid.width;
|
||||
frac += fracstep;
|
||||
}
|
||||
if (count & 1)
|
||||
R_AlphaBlend_8(dc_colormap[dc_translation[dc_source[(frac>>FRACBITS)&heightmask]]], dc_alpha, dest);
|
||||
*dest = R_AlphaBlend_8(dc_colormap[dc_translation[dc_source[(frac>>FRACBITS)&heightmask]]], dc_alpha, dest);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1174,7 +1174,7 @@ void R_DrawTiltedAlphaSpan_8(void)
|
|||
for (i = SPANSIZE-1; i >= 0; i--)
|
||||
{
|
||||
colormap = planezlight[tiltlighting[ds_x1++]] + (ds_colormap - colormaps);
|
||||
R_AlphaBlend_8(colormap[source[((v >> nflatyshift) & nflatmask) | (u >> nflatxshift)]], ds_alpha, dest);
|
||||
*dest = R_AlphaBlend_8(colormap[source[((v >> nflatyshift) & nflatmask) | (u >> nflatxshift)]], ds_alpha, dest);
|
||||
dest++;
|
||||
u += stepu;
|
||||
v += stepv;
|
||||
|
@ -1190,7 +1190,7 @@ void R_DrawTiltedAlphaSpan_8(void)
|
|||
u = (INT64)(startu);
|
||||
v = (INT64)(startv);
|
||||
colormap = planezlight[tiltlighting[ds_x1++]] + (ds_colormap - colormaps);
|
||||
R_AlphaBlend_8(colormap[source[((v >> nflatyshift) & nflatmask) | (u >> nflatxshift)]], ds_alpha, dest);
|
||||
*dest = R_AlphaBlend_8(colormap[source[((v >> nflatyshift) & nflatmask) | (u >> nflatxshift)]], ds_alpha, dest);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -1211,7 +1211,7 @@ void R_DrawTiltedAlphaSpan_8(void)
|
|||
for (; width != 0; width--)
|
||||
{
|
||||
colormap = planezlight[tiltlighting[ds_x1++]] + (ds_colormap - colormaps);
|
||||
R_AlphaBlend_8(colormap[source[((v >> nflatyshift) & nflatmask) | (u >> nflatxshift)]], ds_alpha, dest);
|
||||
*dest = R_AlphaBlend_8(colormap[source[((v >> nflatyshift) & nflatmask) | (u >> nflatxshift)]], ds_alpha, dest);
|
||||
dest++;
|
||||
u += stepu;
|
||||
v += stepv;
|
||||
|
@ -1788,49 +1788,49 @@ void R_DrawAlphaSplat_8(void)
|
|||
// need!
|
||||
val = source[(((UINT32)yposition >> nflatyshift) & nflatmask) | ((UINT32)xposition >> nflatxshift)];
|
||||
if (val != TRANSPARENTPIXEL)
|
||||
R_AlphaBlend_8(colormap[val], ds_alpha, dest + 0);
|
||||
*dest = R_AlphaBlend_8(colormap[val], ds_alpha, dest + 0);
|
||||
xposition += xstep;
|
||||
yposition += ystep;
|
||||
|
||||
val = source[(((UINT32)yposition >> nflatyshift) & nflatmask) | ((UINT32)xposition >> nflatxshift)];
|
||||
if (val != TRANSPARENTPIXEL)
|
||||
R_AlphaBlend_8(colormap[val], ds_alpha, dest + 1);
|
||||
*dest = R_AlphaBlend_8(colormap[val], ds_alpha, dest + 1);
|
||||
xposition += xstep;
|
||||
yposition += ystep;
|
||||
|
||||
val = source[(((UINT32)yposition >> nflatyshift) & nflatmask) | ((UINT32)xposition >> nflatxshift)];
|
||||
if (val != TRANSPARENTPIXEL)
|
||||
R_AlphaBlend_8(colormap[val], ds_alpha, dest + 2);
|
||||
*dest = R_AlphaBlend_8(colormap[val], ds_alpha, dest + 2);
|
||||
xposition += xstep;
|
||||
yposition += ystep;
|
||||
|
||||
val = source[(((UINT32)yposition >> nflatyshift) & nflatmask) | ((UINT32)xposition >> nflatxshift)];
|
||||
if (val != TRANSPARENTPIXEL)
|
||||
R_AlphaBlend_8(colormap[val], ds_alpha, dest + 3);
|
||||
*dest = R_AlphaBlend_8(colormap[val], ds_alpha, dest + 3);
|
||||
xposition += xstep;
|
||||
yposition += ystep;
|
||||
|
||||
val = source[(((UINT32)yposition >> nflatyshift) & nflatmask) | ((UINT32)xposition >> nflatxshift)];
|
||||
if (val != TRANSPARENTPIXEL)
|
||||
R_AlphaBlend_8(colormap[val], ds_alpha, dest + 4);
|
||||
*dest = R_AlphaBlend_8(colormap[val], ds_alpha, dest + 4);
|
||||
xposition += xstep;
|
||||
yposition += ystep;
|
||||
|
||||
val = source[(((UINT32)yposition >> nflatyshift) & nflatmask) | ((UINT32)xposition >> nflatxshift)];
|
||||
if (val != TRANSPARENTPIXEL)
|
||||
R_AlphaBlend_8(colormap[val], ds_alpha, dest + 5);
|
||||
*dest = R_AlphaBlend_8(colormap[val], ds_alpha, dest + 5);
|
||||
xposition += xstep;
|
||||
yposition += ystep;
|
||||
|
||||
val = source[(((UINT32)yposition >> nflatyshift) & nflatmask) | ((UINT32)xposition >> nflatxshift)];
|
||||
if (val != TRANSPARENTPIXEL)
|
||||
R_AlphaBlend_8(colormap[val], ds_alpha, dest + 6);
|
||||
*dest = R_AlphaBlend_8(colormap[val], ds_alpha, dest + 6);
|
||||
xposition += xstep;
|
||||
yposition += ystep;
|
||||
|
||||
val = source[(((UINT32)yposition >> nflatyshift) & nflatmask) | ((UINT32)xposition >> nflatxshift)];
|
||||
if (val != TRANSPARENTPIXEL)
|
||||
R_AlphaBlend_8(colormap[val], ds_alpha, dest + 7);
|
||||
*dest = R_AlphaBlend_8(colormap[val], ds_alpha, dest + 7);
|
||||
xposition += xstep;
|
||||
yposition += ystep;
|
||||
|
||||
|
@ -1841,7 +1841,7 @@ void R_DrawAlphaSplat_8(void)
|
|||
{
|
||||
val = source[(((UINT32)yposition >> nflatyshift) & nflatmask) | ((UINT32)xposition >> nflatxshift)];
|
||||
if (val != TRANSPARENTPIXEL)
|
||||
R_AlphaBlend_8(colormap[val], ds_alpha, dest);
|
||||
*dest = R_AlphaBlend_8(colormap[val], ds_alpha, dest);
|
||||
dest++;
|
||||
xposition += xstep;
|
||||
yposition += ystep;
|
||||
|
@ -2102,49 +2102,49 @@ void R_DrawAlphaFloorSprite_8(void)
|
|||
// need!
|
||||
val = source[(((UINT32)yposition >> nflatyshift) & nflatmask) | ((UINT32)xposition >> nflatxshift)];
|
||||
if (val & 0xFF00)
|
||||
R_AlphaBlend_8(colormap[translation[val & 0xFF]], ds_alpha, dest + 0);
|
||||
*dest = R_AlphaBlend_8(colormap[translation[val & 0xFF]], ds_alpha, dest + 0);
|
||||
xposition += xstep;
|
||||
yposition += ystep;
|
||||
|
||||
val = source[(((UINT32)yposition >> nflatyshift) & nflatmask) | ((UINT32)xposition >> nflatxshift)];
|
||||
if (val & 0xFF00)
|
||||
R_AlphaBlend_8(colormap[translation[val & 0xFF]], ds_alpha, dest + 1);
|
||||
*dest = R_AlphaBlend_8(colormap[translation[val & 0xFF]], ds_alpha, dest + 1);
|
||||
xposition += xstep;
|
||||
yposition += ystep;
|
||||
|
||||
val = source[(((UINT32)yposition >> nflatyshift) & nflatmask) | ((UINT32)xposition >> nflatxshift)];
|
||||
if (val & 0xFF00)
|
||||
R_AlphaBlend_8(colormap[translation[val & 0xFF]], ds_alpha, dest + 2);
|
||||
*dest = R_AlphaBlend_8(colormap[translation[val & 0xFF]], ds_alpha, dest + 2);
|
||||
xposition += xstep;
|
||||
yposition += ystep;
|
||||
|
||||
val = source[(((UINT32)yposition >> nflatyshift) & nflatmask) | ((UINT32)xposition >> nflatxshift)];
|
||||
if (val & 0xFF00)
|
||||
R_AlphaBlend_8(colormap[translation[val & 0xFF]], ds_alpha, dest + 3);
|
||||
*dest = R_AlphaBlend_8(colormap[translation[val & 0xFF]], ds_alpha, dest + 3);
|
||||
xposition += xstep;
|
||||
yposition += ystep;
|
||||
|
||||
val = source[(((UINT32)yposition >> nflatyshift) & nflatmask) | ((UINT32)xposition >> nflatxshift)];
|
||||
if (val & 0xFF00)
|
||||
R_AlphaBlend_8(colormap[translation[val & 0xFF]], ds_alpha, dest + 4);
|
||||
*dest = R_AlphaBlend_8(colormap[translation[val & 0xFF]], ds_alpha, dest + 4);
|
||||
xposition += xstep;
|
||||
yposition += ystep;
|
||||
|
||||
val = source[(((UINT32)yposition >> nflatyshift) & nflatmask) | ((UINT32)xposition >> nflatxshift)];
|
||||
if (val & 0xFF00)
|
||||
R_AlphaBlend_8(colormap[translation[val & 0xFF]], ds_alpha, dest + 5);
|
||||
*dest = R_AlphaBlend_8(colormap[translation[val & 0xFF]], ds_alpha, dest + 5);
|
||||
xposition += xstep;
|
||||
yposition += ystep;
|
||||
|
||||
val = source[(((UINT32)yposition >> nflatyshift) & nflatmask) | ((UINT32)xposition >> nflatxshift)];
|
||||
if (val & 0xFF00)
|
||||
R_AlphaBlend_8(colormap[translation[val & 0xFF]], ds_alpha, dest + 6);
|
||||
*dest = R_AlphaBlend_8(colormap[translation[val & 0xFF]], ds_alpha, dest + 6);
|
||||
xposition += xstep;
|
||||
yposition += ystep;
|
||||
|
||||
val = source[(((UINT32)yposition >> nflatyshift) & nflatmask) | ((UINT32)xposition >> nflatxshift)];
|
||||
if (val & 0xFF00)
|
||||
R_AlphaBlend_8(colormap[translation[val & 0xFF]], ds_alpha, dest + 7);
|
||||
*dest = R_AlphaBlend_8(colormap[translation[val & 0xFF]], ds_alpha, dest + 7);
|
||||
xposition += xstep;
|
||||
yposition += ystep;
|
||||
|
||||
|
@ -2155,7 +2155,7 @@ void R_DrawAlphaFloorSprite_8(void)
|
|||
{
|
||||
val = source[(((UINT32)yposition >> nflatyshift) & nflatmask) | ((UINT32)xposition >> nflatxshift)];
|
||||
if (val & 0xFF00)
|
||||
R_AlphaBlend_8(colormap[translation[val & 0xFF]], ds_alpha, dest);
|
||||
*dest = R_AlphaBlend_8(colormap[translation[val & 0xFF]], ds_alpha, dest);
|
||||
dest++;
|
||||
xposition += xstep;
|
||||
yposition += ystep;
|
||||
|
@ -2433,7 +2433,7 @@ void R_DrawTiltedAlphaFloorSprite_8(void)
|
|||
{
|
||||
val = source[((v >> nflatyshift) & nflatmask) | (u >> nflatxshift)];
|
||||
if (val & 0xFF00)
|
||||
R_AlphaBlend_8(colormap[translation[val & 0xFF]], ds_alpha, dest);
|
||||
*dest = R_AlphaBlend_8(colormap[translation[val & 0xFF]], ds_alpha, dest);
|
||||
dest++;
|
||||
|
||||
u += stepu;
|
||||
|
@ -2451,7 +2451,7 @@ void R_DrawTiltedAlphaFloorSprite_8(void)
|
|||
v = (INT64)(startv);
|
||||
val = source[((v >> nflatyshift) & nflatmask) | (u >> nflatxshift)];
|
||||
if (val & 0xFF00)
|
||||
R_AlphaBlend_8(colormap[translation[val & 0xFF]], ds_alpha, dest);
|
||||
*dest = R_AlphaBlend_8(colormap[translation[val & 0xFF]], ds_alpha, dest);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -2473,7 +2473,7 @@ void R_DrawTiltedAlphaFloorSprite_8(void)
|
|||
{
|
||||
val = source[((v >> nflatyshift) & nflatmask) | (u >> nflatxshift)];
|
||||
if (val & 0xFF00)
|
||||
R_AlphaBlend_8(colormap[translation[val & 0xFF]], ds_alpha, dest);
|
||||
*dest = R_AlphaBlend_8(colormap[translation[val & 0xFF]], ds_alpha, dest);
|
||||
dest++;
|
||||
|
||||
u += stepu;
|
||||
|
@ -2603,35 +2603,35 @@ void R_DrawAlphaSpan_8(void)
|
|||
// SoM: Why didn't I see this earlier? the spot variable is a waste now because we don't
|
||||
// have the uber complicated math to calculate it now, so that was a memory write we didn't
|
||||
// need!
|
||||
R_AlphaBlend_8(colormap[source[(((UINT32)yposition >> nflatyshift) & nflatmask) | ((UINT32)xposition >> nflatxshift)]], ds_alpha, dest + 0);
|
||||
*dest = R_AlphaBlend_8(colormap[source[(((UINT32)yposition >> nflatyshift) & nflatmask) | ((UINT32)xposition >> nflatxshift)]], ds_alpha, dest + 0);
|
||||
xposition += xstep;
|
||||
yposition += ystep;
|
||||
|
||||
R_AlphaBlend_8(colormap[source[(((UINT32)yposition >> nflatyshift) & nflatmask) | ((UINT32)xposition >> nflatxshift)]], ds_alpha, dest + 1);
|
||||
*dest = R_AlphaBlend_8(colormap[source[(((UINT32)yposition >> nflatyshift) & nflatmask) | ((UINT32)xposition >> nflatxshift)]], ds_alpha, dest + 1);
|
||||
xposition += xstep;
|
||||
yposition += ystep;
|
||||
|
||||
R_AlphaBlend_8(colormap[source[(((UINT32)yposition >> nflatyshift) & nflatmask) | ((UINT32)xposition >> nflatxshift)]], ds_alpha, dest + 2);
|
||||
*dest = R_AlphaBlend_8(colormap[source[(((UINT32)yposition >> nflatyshift) & nflatmask) | ((UINT32)xposition >> nflatxshift)]], ds_alpha, dest + 2);
|
||||
xposition += xstep;
|
||||
yposition += ystep;
|
||||
|
||||
R_AlphaBlend_8(colormap[source[(((UINT32)yposition >> nflatyshift) & nflatmask) | ((UINT32)xposition >> nflatxshift)]], ds_alpha, dest + 3);
|
||||
*dest = R_AlphaBlend_8(colormap[source[(((UINT32)yposition >> nflatyshift) & nflatmask) | ((UINT32)xposition >> nflatxshift)]], ds_alpha, dest + 3);
|
||||
xposition += xstep;
|
||||
yposition += ystep;
|
||||
|
||||
R_AlphaBlend_8(colormap[source[(((UINT32)yposition >> nflatyshift) & nflatmask) | ((UINT32)xposition >> nflatxshift)]], ds_alpha, dest + 4);
|
||||
*dest = R_AlphaBlend_8(colormap[source[(((UINT32)yposition >> nflatyshift) & nflatmask) | ((UINT32)xposition >> nflatxshift)]], ds_alpha, dest + 4);
|
||||
xposition += xstep;
|
||||
yposition += ystep;
|
||||
|
||||
R_AlphaBlend_8(colormap[source[(((UINT32)yposition >> nflatyshift) & nflatmask) | ((UINT32)xposition >> nflatxshift)]], ds_alpha, dest + 5);
|
||||
*dest = R_AlphaBlend_8(colormap[source[(((UINT32)yposition >> nflatyshift) & nflatmask) | ((UINT32)xposition >> nflatxshift)]], ds_alpha, dest + 5);
|
||||
xposition += xstep;
|
||||
yposition += ystep;
|
||||
|
||||
R_AlphaBlend_8(colormap[source[(((UINT32)yposition >> nflatyshift) & nflatmask) | ((UINT32)xposition >> nflatxshift)]], ds_alpha, dest + 6);
|
||||
*dest = R_AlphaBlend_8(colormap[source[(((UINT32)yposition >> nflatyshift) & nflatmask) | ((UINT32)xposition >> nflatxshift)]], ds_alpha, dest + 6);
|
||||
xposition += xstep;
|
||||
yposition += ystep;
|
||||
|
||||
R_AlphaBlend_8(colormap[source[(((UINT32)yposition >> nflatyshift) & nflatmask) | ((UINT32)xposition >> nflatxshift)]], ds_alpha, dest + 7);
|
||||
*dest = R_AlphaBlend_8(colormap[source[(((UINT32)yposition >> nflatyshift) & nflatmask) | ((UINT32)xposition >> nflatxshift)]], ds_alpha, dest + 7);
|
||||
xposition += xstep;
|
||||
yposition += ystep;
|
||||
|
||||
|
@ -2641,7 +2641,7 @@ void R_DrawAlphaSpan_8(void)
|
|||
while (count-- && dest <= deststop)
|
||||
{
|
||||
val = (((UINT32)yposition >> nflatyshift) & nflatmask) | ((UINT32)xposition >> nflatxshift);
|
||||
R_AlphaBlend_8(colormap[source[val]], ds_alpha, dest);
|
||||
*dest = R_AlphaBlend_8(colormap[source[val]], ds_alpha, dest);
|
||||
dest++;
|
||||
xposition += xstep;
|
||||
yposition += ystep;
|
||||
|
|
|
@ -945,8 +945,8 @@ void R_DrawSinglePlane(visplane_t *pl)
|
|||
|
||||
if (!usetranstables)
|
||||
{
|
||||
R_SetSpanBlendingFunction(AST_TRANSLUCENT);
|
||||
ds_alpha = R_TransnumToAlpha(transval);
|
||||
R_SetSpanBlendingFunction(AST_TRANSLUCENT);
|
||||
}
|
||||
else
|
||||
ds_transmap = R_GetTranslucencyTable(transval);
|
||||
|
@ -958,8 +958,8 @@ void R_DrawSinglePlane(visplane_t *pl)
|
|||
spanfunctype = SPAN_SPLAT;
|
||||
|
||||
#ifdef TRUECOLOR
|
||||
R_SetSpanBlendingFunction(AST_COPY);
|
||||
ds_alpha = 0xFF;
|
||||
R_SetSpanBlendingFunction(AST_COPY);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
|
@ -1075,8 +1075,8 @@ static void R_DrawPrecipitationVisSprite(vissprite_t *vis)
|
|||
|
||||
if (!usetranstables)
|
||||
{
|
||||
R_SetColumnBlendingFunction(vis->blendmode);
|
||||
dc_alpha = vis->alpha;
|
||||
R_SetColumnBlendingFunction(vis->blendmode);
|
||||
}
|
||||
else
|
||||
dc_transmap = vis->transmap; //Fab : 29-04-98: translucency table
|
||||
|
|
Loading…
Reference in a new issue