mirror of
https://github.com/ZDoom/gzdoom-gles.git
synced 2024-11-24 13:11:33 +00:00
- move decal light calculations into RenderDecal::RenderDecals
This commit is contained in:
parent
a478cf9a96
commit
9f9884d03c
4 changed files with 12 additions and 17 deletions
|
@ -443,10 +443,7 @@ namespace swrenderer
|
||||||
// [ZZ] Only if not an active mirror
|
// [ZZ] Only if not an active mirror
|
||||||
if (!markportal)
|
if (!markportal)
|
||||||
{
|
{
|
||||||
ProjectedWallLight walllight;
|
RenderDecal::RenderDecals(Thread, draw_segment, mLineSegment, mFrontSector, walltop.ScreenY, wallbottom.ScreenY, false);
|
||||||
walllight.SetColormap(mFrontSector, mLineSegment);
|
|
||||||
walllight.SetLightLeft(Thread, WallC);
|
|
||||||
RenderDecal::RenderDecals(Thread, mLineSegment->sidedef, draw_segment, mLineSegment, walllight, walltop.ScreenY, wallbottom.ScreenY, false);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (markportal)
|
if (markportal)
|
||||||
|
|
|
@ -229,10 +229,7 @@ namespace swrenderer
|
||||||
RenderWallPart renderWallpart(Thread);
|
RenderWallPart renderWallpart(Thread);
|
||||||
renderWallpart.Render(lightsector, curline, ds->WallC, rw_pic, x1, x2, wallupper.ScreenY, walllower.ScreenY, walltexcoords, top, bot, true, (rover->flags & FF_ADDITIVETRANS) != 0, Alpha);
|
renderWallpart.Render(lightsector, curline, ds->WallC, rw_pic, x1, x2, wallupper.ScreenY, walllower.ScreenY, walltexcoords, top, bot, true, (rover->flags & FF_ADDITIVETRANS) != 0, Alpha);
|
||||||
|
|
||||||
ProjectedWallLight walllight;
|
RenderDecal::RenderDecals(Thread, ds, curline, lightsector, wallupper.ScreenY, walllower.ScreenY, true);
|
||||||
walllight.SetColormap(lightsector, curline);
|
|
||||||
walllight.SetLightLeft(Thread, ds->WallC);
|
|
||||||
RenderDecal::RenderDecals(Thread, curline->sidedef, ds, curline, walllight, wallupper.ScreenY, walllower.ScreenY, true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void RenderDrawSegment::Render3DFloorWallRange(DrawSegment *ds, int x1, int x2)
|
void RenderDrawSegment::Render3DFloorWallRange(DrawSegment *ds, int x1, int x2)
|
||||||
|
|
|
@ -53,19 +53,17 @@
|
||||||
#include "swrenderer/r_memory.h"
|
#include "swrenderer/r_memory.h"
|
||||||
#include "swrenderer/r_renderthread.h"
|
#include "swrenderer/r_renderthread.h"
|
||||||
|
|
||||||
EXTERN_CVAR(Bool, r_fullbrightignoresectorcolor);
|
|
||||||
|
|
||||||
namespace swrenderer
|
namespace swrenderer
|
||||||
{
|
{
|
||||||
void RenderDecal::RenderDecals(RenderThread *thread, side_t *sidedef, DrawSegment *draw_segment, seg_t *curline, const ProjectedWallLight &light, const short *walltop, const short *wallbottom, bool drawsegPass)
|
void RenderDecal::RenderDecals(RenderThread *thread, DrawSegment *draw_segment, seg_t *curline, const sector_t* lightsector, const short *walltop, const short *wallbottom, bool drawsegPass)
|
||||||
{
|
{
|
||||||
for (DBaseDecal *decal = sidedef->AttachedDecals; decal != NULL; decal = decal->WallNext)
|
for (DBaseDecal *decal = curline->sidedef->AttachedDecals; decal != NULL; decal = decal->WallNext)
|
||||||
{
|
{
|
||||||
Render(thread, sidedef, decal, draw_segment, curline, light, walltop, wallbottom, drawsegPass);
|
Render(thread, decal, draw_segment, curline, lightsector, walltop, wallbottom, drawsegPass);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void RenderDecal::Render(RenderThread *thread, side_t *wall, DBaseDecal *decal, DrawSegment *clipper, seg_t *curline, const ProjectedWallLight &light, const short *walltop, const short *wallbottom, bool drawsegPass)
|
void RenderDecal::Render(RenderThread *thread, DBaseDecal *decal, DrawSegment *clipper, seg_t *curline, const sector_t* lightsector, const short *walltop, const short *wallbottom, bool drawsegPass)
|
||||||
{
|
{
|
||||||
DVector2 decal_left, decal_right, decal_pos;
|
DVector2 decal_left, decal_right, decal_pos;
|
||||||
int x1, x2;
|
int x1, x2;
|
||||||
|
@ -142,7 +140,7 @@ namespace swrenderer
|
||||||
edge_left *= decal->ScaleX;
|
edge_left *= decal->ScaleX;
|
||||||
|
|
||||||
double dcx, dcy;
|
double dcx, dcy;
|
||||||
decal->GetXY(wall, dcx, dcy);
|
decal->GetXY(curline->sidedef, dcx, dcy);
|
||||||
decal_pos = { dcx, dcy };
|
decal_pos = { dcx, dcy };
|
||||||
|
|
||||||
DVector2 angvec = (curline->v2->fPos() - curline->v1->fPos()).Unit();
|
DVector2 angvec = (curline->v2->fPos() - curline->v1->fPos()).Unit();
|
||||||
|
@ -231,6 +229,9 @@ namespace swrenderer
|
||||||
}
|
}
|
||||||
|
|
||||||
// Prepare lighting
|
// Prepare lighting
|
||||||
|
ProjectedWallLight light;
|
||||||
|
light.SetColormap(lightsector, curline);
|
||||||
|
light.SetLightLeft(thread, WallC);
|
||||||
usecolormap = light.GetBaseColormap();
|
usecolormap = light.GetBaseColormap();
|
||||||
|
|
||||||
// Decals that are added to the scene must fade to black.
|
// Decals that are added to the scene must fade to black.
|
||||||
|
|
|
@ -12,9 +12,9 @@ namespace swrenderer
|
||||||
class RenderDecal
|
class RenderDecal
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
static void RenderDecals(RenderThread *thread, side_t *wall, DrawSegment *draw_segment, seg_t *curline, const ProjectedWallLight &light, const short *walltop, const short *wallbottom, bool drawsegPass);
|
static void RenderDecals(RenderThread *thread, DrawSegment *draw_segment, seg_t *curline, const sector_t* lightsector, const short *walltop, const short *wallbottom, bool drawsegPass);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static void Render(RenderThread *thread, side_t *wall, DBaseDecal *first, DrawSegment *clipper, seg_t *curline, const ProjectedWallLight &light, const short *walltop, const short *wallbottom, bool drawsegPass);
|
static void Render(RenderThread *thread, DBaseDecal *first, DrawSegment *clipper, seg_t *curline, const sector_t* lightsector, const short *walltop, const short *wallbottom, bool drawsegPass);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue