- linked new properties with the renderer.

Support for the softpoly renderer still missing.
This commit is contained in:
Christoph Oelckers 2019-12-20 18:56:03 +01:00
parent 3a249cb06f
commit 03537e90ff
8 changed files with 41 additions and 10 deletions

View File

@ -2057,10 +2057,10 @@ void DAutomap::drawSubsectors()
if (roverz < cmpz)
{
maptex = *(rover->top.texture);
flatcolor = *(rover->top.flatcolor);
floorplane = rover->top.plane;
sector_t *model = rover->top.model;
int selector = (rover->flags & FF_INVERTPLANES) ? sector_t::floor : sector_t::ceiling;
flatcolor = model->SpecialColors[selector];
rotation = -model->GetAngle(selector);
scalex = model->GetXScale(selector);
scaley = model->GetYScale(selector);

View File

@ -1106,6 +1106,7 @@ void MapLoader::LoadSectors (MapData *map, FMissingTextureTracker &missingtex)
ss->prevsec = -1; // stair retriggering until build completes
memset(ss->SpecialColors, -1, sizeof(ss->SpecialColors));
memset(ss->AdditiveColors, 0, sizeof(ss->AdditiveColors));
ss->ColorScaleFactor[0] = ss->ColorScaleFactor[1] = ss->ColorScaleFactor[2] = 1.f;
ss->SetAlpha(sector_t::floor, 1.);
ss->SetAlpha(sector_t::ceiling, 1.);

View File

@ -1503,6 +1503,7 @@ public:
sec->SetYScale(sector_t::ceiling, 1.);
sec->SetAlpha(sector_t::floor, 1.);
sec->SetAlpha(sector_t::ceiling, 1.);
sec->ColorScaleFactor[0] = sec->ColorScaleFactor[1] = sec->ColorScaleFactor[2] = 1.f;
sec->thinglist = nullptr;
sec->touching_thinglist = nullptr; // phares 3/14/98
sec->sectorportal_thinglist = nullptr;

View File

@ -126,14 +126,12 @@ void P_Add3DFloor(sector_t* sec, sector_t* sec2, line_t* master, int flags, int
{
ffloor->bottom.plane = &sec2->floorplane;
ffloor->bottom.texture = &sec2->planes[sector_t::floor].Texture;
ffloor->bottom.flatcolor = &sec2->SpecialColors[sector_t::floor];
ffloor->bottom.isceiling = sector_t::floor;
}
else
{
ffloor->bottom.plane = &sec2->ceilingplane;
ffloor->bottom.texture = &sec2->planes[sector_t::ceiling].Texture;
ffloor->bottom.flatcolor = &sec2->SpecialColors[sector_t::ceiling];
ffloor->bottom.isceiling = sector_t::ceiling;
}
@ -141,7 +139,6 @@ void P_Add3DFloor(sector_t* sec, sector_t* sec2, line_t* master, int flags, int
{
ffloor->top.plane = &sec2->ceilingplane;
ffloor->top.texture = &sec2->planes[sector_t::ceiling].Texture;
ffloor->top.flatcolor = &sec2->SpecialColors[sector_t::ceiling];
ffloor->toplightlevel = &sec2->lightlevel;
ffloor->top.isceiling = sector_t::ceiling;
}
@ -149,7 +146,6 @@ void P_Add3DFloor(sector_t* sec, sector_t* sec2, line_t* master, int flags, int
{
ffloor->top.plane = &sec->floorplane;
ffloor->top.texture = &sec2->planes[sector_t::floor].Texture;
ffloor->top.flatcolor = &sec2->SpecialColors[sector_t::floor];
ffloor->toplightlevel = &sec->lightlevel;
ffloor->top.isceiling = sector_t::floor;
ffloor->top.model = sec;

View File

@ -68,7 +68,6 @@ struct F3DFloor
secplane_t * plane;
const FTextureID * texture;
sector_t * model;
PalEntry * flatcolor;
int isceiling;
int vindex;
bool copied;

View File

@ -301,6 +301,10 @@ public:
FColormap Colormap; // light and fog
PalEntry FlatColor;
PalEntry AddColor;
PalEntry BlendColor;
float DesaturationFactor, ColorFactor;
int BlendMode;
bool Invert;
ERenderStyle renderstyle;
float alpha;

View File

@ -308,6 +308,12 @@ void HWFlat::DrawFlat(HWDrawInfo *di, FRenderState &state, bool translucent)
di->SetFog(state, lightlevel, rel, di->isFullbrightScene(), &Colormap, false);
state.SetObjectColor(FlatColor | 0xff000000);
state.SetAddColor(AddColor | 0xff000000);
state.SetBlendColor(BlendColor);
state.SetObjectBlendMode(BlendMode);
state.SetColorizeFactor(ColorFactor);
state.SetObjectDesaturateFactor(DesaturationFactor);
state.SetObjectInvert(Invert);
if (hacktype & SSRF_PLANEHACK)
{
@ -334,7 +340,6 @@ void HWFlat::DrawFlat(HWDrawInfo *di, FRenderState &state, bool translucent)
flatvertices += 4;
flatprimitives++;
}
state.SetObjectColor(0xffffffff);
}
else
{
@ -356,8 +361,8 @@ void HWFlat::DrawFlat(HWDrawInfo *di, FRenderState &state, bool translucent)
state.EnableTextureMatrix(false);
}
state.SetRenderStyle(DefaultRenderStyle());
state.SetObjectColor(0xffffffff);
}
state.SetObjectColor(0xffffffff);
state.SetAddColor(0);
state.SetBlendColor(0);
state.SetObjectDesaturateFactor(0);
@ -454,12 +459,22 @@ void HWFlat::SetFrom3DFloor(F3DFloor *rover, bool top, bool underside)
Colormap.LightColor = light->extra_colormap.FadeColor;
FlatColor = 0xffffffff;
AddColor = 0;
BlendColor = 0;
BlendMode = 0;
ColorFactor = 1.f;
DesaturationFactor = 0.f;
Invert = false;
}
else
{
Colormap.CopyFrom3DLight(light);
FlatColor = *plane.flatcolor;
// AddColor = sector->SpecialColors[sector_t::add];
FlatColor = plane.model->SpecialColors[plane.isceiling];
AddColor = plane.model->AdditiveColors[plane.isceiling];
BlendColor = plane.model->BlendColors[plane.isceiling];
BlendMode = plane.model->BlendModes[plane.isceiling];
ColorFactor = plane.model->ColorScaleFactor[plane.isceiling];
DesaturationFactor = plane.model->MaterialDesaturationFactor[plane.isceiling];
Invert = plane.model->InvertMode(plane.isceiling);
}
@ -515,6 +530,12 @@ void HWFlat::ProcessSector(HWDrawInfo *di, sector_t * frontsector, int which)
Colormap = frontsector->Colormap;
FlatColor = frontsector->SpecialColors[sector_t::floor];
AddColor = frontsector->AdditiveColors[sector_t::floor];
BlendColor = frontsector->BlendColors[sector_t::floor];
BlendMode = frontsector->BlendModes[sector_t::floor];
DesaturationFactor = frontsector->MaterialDesaturationFactor[sector_t::floor];
ColorFactor = frontsector->ColorScaleFactor[sector_t::floor];
Invert = frontsector->InvertMode(sector_t::floor);
port = frontsector->ValidatePortal(sector_t::floor);
if ((stack = (port != NULL)))
{
@ -571,6 +592,11 @@ void HWFlat::ProcessSector(HWDrawInfo *di, sector_t * frontsector, int which)
Colormap = frontsector->Colormap;
FlatColor = frontsector->SpecialColors[sector_t::ceiling];
AddColor = frontsector->AdditiveColors[sector_t::ceiling];
BlendColor = frontsector->BlendColors[sector_t::ceiling];
BlendMode = frontsector->BlendModes[sector_t::ceiling];
DesaturationFactor = frontsector->MaterialDesaturationFactor[sector_t::ceiling];
ColorFactor = frontsector->ColorScaleFactor[sector_t::ceiling];
Invert = frontsector->InvertMode(sector_t::ceiling);
port = frontsector->ValidatePortal(sector_t::ceiling);
if ((stack = (port != NULL)))
{

View File

@ -175,6 +175,10 @@ void HWWall::RenderTexturedWall(HWDrawInfo *di, FRenderState &state, int rflags)
state.SetObjectColor(color1);
state.SetObjectColor2((color1 != color2) ? color2 : PalEntry(0));
state.SetAddColor(side->GetAdditiveColor(tierndx, frontsector));
state.SetBlendColor(side->GetBlendColor(tierndx, frontsector));
state.SetObjectBlendMode(side->GetBlendMode(tierndx, frontsector));
state.SetObjectDesaturateFactor(side->GetDesaturationFactor(tierndx, frontsector));
state.SetObjectInvert(side->GetInvertMode(tierndx, frontsector));
if (color1 != color2)
{