mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-11-19 02:42:05 +00:00
ColoredSpan and FogBoundary drawers
This commit is contained in:
parent
d8f805ddc9
commit
bec5d39ca8
4 changed files with 35 additions and 13 deletions
|
@ -2275,12 +2275,19 @@ namespace swrenderer
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
DrawColoredSpanPalCommand::DrawColoredSpanPalCommand(int y, int x1, int x2)
|
DrawColoredSpanPalCommand::DrawColoredSpanPalCommand(int y, int x1, int x2) : y(y), x1(x1), x2(x2)
|
||||||
{
|
{
|
||||||
|
using namespace drawerargs;
|
||||||
|
color = ds_color;
|
||||||
|
destorg = dc_destorg;
|
||||||
}
|
}
|
||||||
|
|
||||||
void DrawColoredSpanPalCommand::Execute(DrawerThread *thread)
|
void DrawColoredSpanPalCommand::Execute(DrawerThread *thread)
|
||||||
{
|
{
|
||||||
|
if (thread->line_skipped_by_thread(y))
|
||||||
|
return;
|
||||||
|
|
||||||
|
memset(ylookup[y] + x1 + destorg, color, x2 - x1 + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////
|
||||||
|
@ -2325,11 +2332,24 @@ namespace swrenderer
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
DrawFogBoundaryLinePalCommand::DrawFogBoundaryLinePalCommand(int y, int y2, int x1)
|
DrawFogBoundaryLinePalCommand::DrawFogBoundaryLinePalCommand(int y, int x1, int x2) : y(y), x1(x1), x2(x2)
|
||||||
{
|
{
|
||||||
|
using namespace drawerargs;
|
||||||
|
_colormap = dc_colormap;
|
||||||
|
_destorg = dc_destorg;
|
||||||
}
|
}
|
||||||
|
|
||||||
void DrawFogBoundaryLinePalCommand::Execute(DrawerThread *thread)
|
void DrawFogBoundaryLinePalCommand::Execute(DrawerThread *thread)
|
||||||
{
|
{
|
||||||
|
if (thread->line_skipped_by_thread(y))
|
||||||
|
return;
|
||||||
|
|
||||||
|
const uint8_t *colormap = _colormap;
|
||||||
|
uint8_t *dest = ylookup[y] + _destorg;
|
||||||
|
int x = x1;
|
||||||
|
do
|
||||||
|
{
|
||||||
|
dest[x] = colormap[dest[x]];
|
||||||
|
} while (++x <= x2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -188,6 +188,13 @@ namespace swrenderer
|
||||||
DrawColoredSpanPalCommand(int y, int x1, int x2);
|
DrawColoredSpanPalCommand(int y, int x1, int x2);
|
||||||
void Execute(DrawerThread *thread) override;
|
void Execute(DrawerThread *thread) override;
|
||||||
FString DebugInfo() override { return "DrawColoredSpanPalCommand"; }
|
FString DebugInfo() override { return "DrawColoredSpanPalCommand"; }
|
||||||
|
|
||||||
|
private:
|
||||||
|
int y;
|
||||||
|
int x1;
|
||||||
|
int x2;
|
||||||
|
int color;
|
||||||
|
uint8_t *destorg;
|
||||||
};
|
};
|
||||||
|
|
||||||
class DrawSlabPalCommand : public PalSpanCommand
|
class DrawSlabPalCommand : public PalSpanCommand
|
||||||
|
@ -211,8 +218,13 @@ namespace swrenderer
|
||||||
class DrawFogBoundaryLinePalCommand : public PalSpanCommand
|
class DrawFogBoundaryLinePalCommand : public PalSpanCommand
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
DrawFogBoundaryLinePalCommand(int y, int y2, int x1);
|
DrawFogBoundaryLinePalCommand(int y, int x1, int x2);
|
||||||
void Execute(DrawerThread *thread) override;
|
void Execute(DrawerThread *thread) override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
int y, x1, x2;
|
||||||
|
const uint8_t *_colormap;
|
||||||
|
uint8_t *_destorg;
|
||||||
};
|
};
|
||||||
|
|
||||||
class RtInitColsPalCommand : public DrawerCommand
|
class RtInitColsPalCommand : public DrawerCommand
|
||||||
|
|
|
@ -522,11 +522,6 @@ void R_MapTiltedPlane (int y, int x1)
|
||||||
//
|
//
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
|
|
||||||
void R_MapColoredPlane_C (int y, int x1)
|
|
||||||
{
|
|
||||||
memset (ylookup[y] + x1 + dc_destorg, ds_color, spanend[y] - x1 + 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
void R_MapColoredPlane(int y, int x1)
|
void R_MapColoredPlane(int y, int x1)
|
||||||
{
|
{
|
||||||
R_DrawColoredSpan(y, x1, spanend[y]);
|
R_DrawColoredSpan(y, x1, spanend[y]);
|
||||||
|
|
|
@ -96,11 +96,6 @@ void R_DrawNormalPlane (visplane_t *pl, double xscale, double yscale, fixed_t al
|
||||||
void R_DrawTiltedPlane (visplane_t *pl, double xscale, double yscale, fixed_t alpha, bool additive, bool masked);
|
void R_DrawTiltedPlane (visplane_t *pl, double xscale, double yscale, fixed_t alpha, bool additive, bool masked);
|
||||||
void R_MapVisPlane (visplane_t *pl, void (*mapfunc)(int y, int x1));
|
void R_MapVisPlane (visplane_t *pl, void (*mapfunc)(int y, int x1));
|
||||||
|
|
||||||
void R_MapTiltedPlane_C(int y, int x1);
|
|
||||||
void R_MapTiltedPlane_rgba(int y, int x);
|
|
||||||
void R_MapColoredPlane_C(int y, int x1);
|
|
||||||
void R_MapColoredPlane_rgba(int y, int x1);
|
|
||||||
|
|
||||||
visplane_t *R_FindPlane
|
visplane_t *R_FindPlane
|
||||||
( const secplane_t &height,
|
( const secplane_t &height,
|
||||||
FTextureID picnum,
|
FTextureID picnum,
|
||||||
|
|
Loading…
Reference in a new issue