mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-11-22 12:11:25 +00:00
made the sector's color_* properties work in the software renderer.
With no 3D floors this appears to be ok, but there are so many places where colormaps are being set in the software renderer that I cannot guarantee that I got all of them correct. This will need some testing.
This commit is contained in:
parent
921bc763fb
commit
76d3ae5ba2
14 changed files with 59 additions and 40 deletions
|
@ -224,12 +224,11 @@ Note: All <bool> fields default to false unless mentioned otherwise.
|
||||||
floorglowheight = <float>; // Height of floor glow. This only has an effect for the sector's own glow color, but not for a texture based glow. (OpenGL 3.x and newer only)
|
floorglowheight = <float>; // Height of floor glow. This only has an effect for the sector's own glow color, but not for a texture based glow. (OpenGL 3.x and newer only)
|
||||||
ceilingglowcolor = <integer>; // Sector's ceiling glow color as RRGGBB value, default = 'use texture's definition'. Set to -1 to disable glowing. (OpenGL 3.x and newer only)
|
ceilingglowcolor = <integer>; // Sector's ceiling glow color as RRGGBB value, default = 'use texture's definition'. Set to -1 to disable glowing. (OpenGL 3.x and newer only)
|
||||||
ceilingglowheight = <float>; // Height of ceiling glow. This only has an effect for the sector's own glow color, but not for a texture based glow. (OpenGL 3.x and newer only)
|
ceilingglowheight = <float>; // Height of ceiling glow. This only has an effect for the sector's own glow color, but not for a texture based glow. (OpenGL 3.x and newer only)
|
||||||
color_floor = <int>; // Material color of sector's floor (OpenGL only, dynamic lighting only works properly in OpenGL 3.x and later) Default is white (0xffffff)
|
color_floor = <int>; // Material color of sector's floor. Default is white (0xffffff)
|
||||||
color_ceiling = <int>; // Material color of sector's ceiling (OpenGL only, dynamic lighting only works properly in OpenGL 3.x and later) Default is white (0xffffff)
|
color_ceiling = <int>; // Material color of sector's ceiling. Default is white (0xffffff)
|
||||||
color_walltop = <int>; // Material color of top of sector's sidedefs (OpenGL only, dynamic lighting only works properly in OpenGL 3.x and later,
|
color_walltop = <int>; // Material color of top of sector's sidedefs. In OpenGL 2.x and the software renderer this will define the entire wall's color) Default is white (0xffffff)
|
||||||
in OpenGL 2.x this will define the entire wall's color) Default is white (0xffffff)
|
|
||||||
color_wallbottom = <int>; // Material color of bottom of sector's sidedefs (OpenGL 3.x and later only) Default is white (0xffffff)
|
color_wallbottom = <int>; // Material color of bottom of sector's sidedefs (OpenGL 3.x and later only) Default is white (0xffffff)
|
||||||
color_sprites = <int>; // Material color of sprites in sector (OpenGL only.) Default is white (0xffffff)
|
color_sprites = <int>; // Material color of sprites in sector. Default is white (0xffffff)
|
||||||
|
|
||||||
|
|
||||||
portal_ceil_blocksound = <bool> // ceiling portal blocks sound.
|
portal_ceil_blocksound = <bool> // ceiling portal blocks sound.
|
||||||
|
|
|
@ -124,6 +124,24 @@ struct PalEntry
|
||||||
{
|
{
|
||||||
d = other.d & 0xffffff;
|
d = other.d & 0xffffff;
|
||||||
}
|
}
|
||||||
|
PalEntry Modulate(PalEntry other) const
|
||||||
|
{
|
||||||
|
if (isWhite())
|
||||||
|
{
|
||||||
|
return other;
|
||||||
|
}
|
||||||
|
else if (other.isWhite())
|
||||||
|
{
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
other.r = (r * other.r) / 255;
|
||||||
|
other.g = (g * other.g) / 255;
|
||||||
|
other.b = (b * other.b) / 255;
|
||||||
|
return other;
|
||||||
|
}
|
||||||
|
}
|
||||||
bool isBlack() const
|
bool isBlack() const
|
||||||
{
|
{
|
||||||
return (d & 0xffffff) == 0;
|
return (d & 0xffffff) == 0;
|
||||||
|
|
|
@ -345,7 +345,7 @@ void RenderPolyPlane::Render(const TriMatrix &worldToClip, const Vec4f &clipPlan
|
||||||
args.ccw = ccw;
|
args.ccw = ccw;
|
||||||
args.stenciltestvalue = stencilValue;
|
args.stenciltestvalue = stencilValue;
|
||||||
args.stencilwritevalue = stencilValue + 1;
|
args.stencilwritevalue = stencilValue + 1;
|
||||||
args.SetColormap(GetColorTable(frontsector->Colormap));
|
args.SetColormap(GetColorTable(frontsector->Colormap, frontsector->SpecialColors[ceiling]));
|
||||||
args.SetClipPlane(clipPlane.x, clipPlane.y, clipPlane.z, clipPlane.w);
|
args.SetClipPlane(clipPlane.x, clipPlane.y, clipPlane.z, clipPlane.w);
|
||||||
|
|
||||||
if (!isSky)
|
if (!isSky)
|
||||||
|
|
|
@ -215,7 +215,7 @@ void RenderPolyPlayerSprites::RenderSprite(DPSprite *sprite, AActor *owner, floa
|
||||||
|
|
||||||
bool noaccel = false;
|
bool noaccel = false;
|
||||||
|
|
||||||
FDynamicColormap *basecolormap = GetColorTable(viewpoint.sector->Colormap);
|
FDynamicColormap *basecolormap = GetColorTable(viewpoint.sector->Colormap, viewpoint.sector->SpecialColors[sector_t::sprites]);
|
||||||
FDynamicColormap *colormap_to_use = basecolormap;
|
FDynamicColormap *colormap_to_use = basecolormap;
|
||||||
|
|
||||||
int ColormapNum = 0;
|
int ColormapNum = 0;
|
||||||
|
|
|
@ -162,7 +162,7 @@ void RenderPolySprite::Render(const TriMatrix &worldToClip, const Vec4f &clipPla
|
||||||
args.stenciltestvalue = stencilValue;
|
args.stenciltestvalue = stencilValue;
|
||||||
args.stencilwritevalue = stencilValue;
|
args.stencilwritevalue = stencilValue;
|
||||||
args.SetTexture(tex, thing->Translation);
|
args.SetTexture(tex, thing->Translation);
|
||||||
args.SetColormap(GetColorTable(sub->sector->Colormap));
|
args.SetColormap(GetColorTable(sub->sector->Colormap, sub->sector->SpecialColors[sector_t::sprites]));
|
||||||
args.SetClipPlane(clipPlane.x, clipPlane.y, clipPlane.z, clipPlane.w);
|
args.SetClipPlane(clipPlane.x, clipPlane.y, clipPlane.z, clipPlane.w);
|
||||||
|
|
||||||
TriBlendMode blendmode;
|
TriBlendMode blendmode;
|
||||||
|
|
|
@ -73,7 +73,7 @@ bool RenderPolyWall::RenderLine(const TriMatrix &worldToClip, const Vec4f &clipP
|
||||||
wall.LineSeg = line;
|
wall.LineSeg = line;
|
||||||
wall.Line = line->linedef;
|
wall.Line = line->linedef;
|
||||||
wall.Side = line->sidedef;
|
wall.Side = line->sidedef;
|
||||||
wall.Colormap = GetColorTable(frontsector->Colormap);
|
wall.Colormap = GetColorTable(frontsector->Colormap, frontsector->SpecialColors[sector_t::walltop]);
|
||||||
wall.Masked = false;
|
wall.Masked = false;
|
||||||
wall.SubsectorDepth = subsectorDepth;
|
wall.SubsectorDepth = subsectorDepth;
|
||||||
wall.StencilValue = stencilValue;
|
wall.StencilValue = stencilValue;
|
||||||
|
@ -175,7 +175,7 @@ void RenderPolyWall::Render3DFloorLine(const TriMatrix &worldToClip, const Vec4f
|
||||||
wall.LineSeg = line;
|
wall.LineSeg = line;
|
||||||
wall.Line = fakeFloor->master;
|
wall.Line = fakeFloor->master;
|
||||||
wall.Side = fakeFloor->master->sidedef[0];
|
wall.Side = fakeFloor->master->sidedef[0];
|
||||||
wall.Colormap = GetColorTable(frontsector->Colormap);
|
wall.Colormap = GetColorTable(frontsector->Colormap, frontsector->SpecialColors[sector_t::walltop]);
|
||||||
wall.Masked = false;
|
wall.Masked = false;
|
||||||
wall.SubsectorDepth = subsectorDepth;
|
wall.SubsectorDepth = subsectorDepth;
|
||||||
wall.StencilValue = stencilValue;
|
wall.StencilValue = stencilValue;
|
||||||
|
@ -262,7 +262,7 @@ void RenderPolyWall::Render(const TriMatrix &worldToClip, const Vec4f &clipPlane
|
||||||
args.stencilwritevalue = StencilValue + 1;
|
args.stencilwritevalue = StencilValue + 1;
|
||||||
if (tex)
|
if (tex)
|
||||||
args.SetTexture(tex);
|
args.SetTexture(tex);
|
||||||
args.SetColormap(GetColorTable(Line->frontsector->Colormap));
|
args.SetColormap(GetColorTable(Line->frontsector->Colormap, Line->frontsector->SpecialColors[sector_t::walltop]));
|
||||||
args.SetClipPlane(clipPlane.x, clipPlane.y, clipPlane.z, clipPlane.w);
|
args.SetClipPlane(clipPlane.x, clipPlane.y, clipPlane.z, clipPlane.w);
|
||||||
|
|
||||||
//if (Side && Side->lighthead)
|
//if (Side && Side->lighthead)
|
||||||
|
|
|
@ -123,7 +123,7 @@ void RenderPolyWallSprite::Render(const TriMatrix &worldToClip, const Vec4f &cli
|
||||||
args.stenciltestvalue = stencilValue;
|
args.stenciltestvalue = stencilValue;
|
||||||
args.stencilwritevalue = stencilValue;
|
args.stencilwritevalue = stencilValue;
|
||||||
args.SetTexture(tex);
|
args.SetTexture(tex);
|
||||||
args.SetColormap(GetColorTable(sub->sector->Colormap));
|
args.SetColormap(GetColorTable(sub->sector->Colormap, sub->sector->SpecialColors[sector_t::sprites]));
|
||||||
args.SetClipPlane(clipPlane.x, clipPlane.y, clipPlane.z, clipPlane.w);
|
args.SetClipPlane(clipPlane.x, clipPlane.y, clipPlane.z, clipPlane.w);
|
||||||
args.subsectorTest = true;
|
args.subsectorTest = true;
|
||||||
args.writeSubsector = false;
|
args.writeSubsector = false;
|
||||||
|
|
|
@ -105,7 +105,7 @@ namespace swrenderer
|
||||||
// killough 4/13/98: get correct lightlevel for 2s normal textures
|
// killough 4/13/98: get correct lightlevel for 2s normal textures
|
||||||
sec = Thread->OpaquePass->FakeFlat(frontsector, &tempsec, nullptr, nullptr, nullptr, 0, 0, 0, 0);
|
sec = Thread->OpaquePass->FakeFlat(frontsector, &tempsec, nullptr, nullptr, nullptr, 0, 0, 0, 0);
|
||||||
|
|
||||||
FDynamicColormap *basecolormap = GetColorTable(sec->Colormap); // [RH] Set basecolormap
|
FDynamicColormap *basecolormap = GetColorTable(sec->Colormap, sec->SpecialColors[sector_t::walltop]); // [RH] Set basecolormap
|
||||||
|
|
||||||
int wallshade = ds->shade;
|
int wallshade = ds->shade;
|
||||||
rw_lightstep = ds->lightstep;
|
rw_lightstep = ds->lightstep;
|
||||||
|
@ -125,7 +125,7 @@ namespace swrenderer
|
||||||
if (clip3d->sclipTop <= frontsector->e->XFloor.lightlist[i].plane.Zat0())
|
if (clip3d->sclipTop <= frontsector->e->XFloor.lightlist[i].plane.Zat0())
|
||||||
{
|
{
|
||||||
lightlist_t *lit = &frontsector->e->XFloor.lightlist[i];
|
lightlist_t *lit = &frontsector->e->XFloor.lightlist[i];
|
||||||
basecolormap = GetColorTable(lit->extra_colormap);
|
basecolormap = GetColorTable(lit->extra_colormap, frontsector->SpecialColors[sector_t::walltop]);
|
||||||
bool foggy = (level.fadeto || basecolormap->Fade || (level.flags & LEVEL_HASFADETABLE)); // [RH] set foggy flag
|
bool foggy = (level.fadeto || basecolormap->Fade || (level.flags & LEVEL_HASFADETABLE)); // [RH] set foggy flag
|
||||||
wallshade = LightVisibility::LightLevelToShade(curline->sidedef->GetLightLevel(ds->foggy, *lit->p_lightlevel, lit->lightsource != nullptr) + LightVisibility::ActualExtraLight(ds->foggy, viewport), foggy);
|
wallshade = LightVisibility::LightLevelToShade(curline->sidedef->GetLightLevel(ds->foggy, *lit->p_lightlevel, lit->lightsource != nullptr) + LightVisibility::ActualExtraLight(ds->foggy, viewport), foggy);
|
||||||
break;
|
break;
|
||||||
|
@ -703,7 +703,7 @@ namespace swrenderer
|
||||||
if (clip3d->sclipTop <= backsector->e->XFloor.lightlist[j].plane.Zat0())
|
if (clip3d->sclipTop <= backsector->e->XFloor.lightlist[j].plane.Zat0())
|
||||||
{
|
{
|
||||||
lightlist_t *lit = &backsector->e->XFloor.lightlist[j];
|
lightlist_t *lit = &backsector->e->XFloor.lightlist[j];
|
||||||
basecolormap = GetColorTable(lit->extra_colormap);
|
basecolormap = GetColorTable(lit->extra_colormap, frontsector->SpecialColors[sector_t::walltop]);
|
||||||
bool foggy = (level.fadeto || basecolormap->Fade || (level.flags & LEVEL_HASFADETABLE)); // [RH] set foggy flag
|
bool foggy = (level.fadeto || basecolormap->Fade || (level.flags & LEVEL_HASFADETABLE)); // [RH] set foggy flag
|
||||||
wallshade = LightVisibility::LightLevelToShade(curline->sidedef->GetLightLevel(ds->foggy, *lit->p_lightlevel, lit->lightsource != nullptr) + LightVisibility::ActualExtraLight(ds->foggy, Thread->Viewport.get()), foggy);
|
wallshade = LightVisibility::LightLevelToShade(curline->sidedef->GetLightLevel(ds->foggy, *lit->p_lightlevel, lit->lightsource != nullptr) + LightVisibility::ActualExtraLight(ds->foggy, Thread->Viewport.get()), foggy);
|
||||||
break;
|
break;
|
||||||
|
@ -717,7 +717,7 @@ namespace swrenderer
|
||||||
if (clip3d->sclipTop <= frontsector->e->XFloor.lightlist[j].plane.Zat0())
|
if (clip3d->sclipTop <= frontsector->e->XFloor.lightlist[j].plane.Zat0())
|
||||||
{
|
{
|
||||||
lightlist_t *lit = &frontsector->e->XFloor.lightlist[j];
|
lightlist_t *lit = &frontsector->e->XFloor.lightlist[j];
|
||||||
basecolormap = GetColorTable(lit->extra_colormap);
|
basecolormap = GetColorTable(lit->extra_colormap, frontsector->SpecialColors[sector_t::walltop]);
|
||||||
bool foggy = (level.fadeto || basecolormap->Fade || (level.flags & LEVEL_HASFADETABLE)); // [RH] set foggy flag
|
bool foggy = (level.fadeto || basecolormap->Fade || (level.flags & LEVEL_HASFADETABLE)); // [RH] set foggy flag
|
||||||
wallshade = LightVisibility::LightLevelToShade(curline->sidedef->GetLightLevel(ds->foggy, *lit->p_lightlevel, lit->lightsource != nullptr) + LightVisibility::ActualExtraLight(ds->foggy, Thread->Viewport.get()), foggy);
|
wallshade = LightVisibility::LightLevelToShade(curline->sidedef->GetLightLevel(ds->foggy, *lit->p_lightlevel, lit->lightsource != nullptr) + LightVisibility::ActualExtraLight(ds->foggy, Thread->Viewport.get()), foggy);
|
||||||
break;
|
break;
|
||||||
|
@ -725,7 +725,7 @@ namespace swrenderer
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (basecolormap == nullptr) basecolormap = GetColorTable(frontsector->Colormap);
|
if (basecolormap == nullptr) basecolormap = GetColorTable(frontsector->Colormap, frontsector->SpecialColors[sector_t::walltop]);
|
||||||
|
|
||||||
if (rw_pic != DONT_DRAW)
|
if (rw_pic != DONT_DRAW)
|
||||||
{
|
{
|
||||||
|
@ -882,7 +882,7 @@ namespace swrenderer
|
||||||
if (clip3d->sclipTop <= backsector->e->XFloor.lightlist[j].plane.Zat0())
|
if (clip3d->sclipTop <= backsector->e->XFloor.lightlist[j].plane.Zat0())
|
||||||
{
|
{
|
||||||
lightlist_t *lit = &backsector->e->XFloor.lightlist[j];
|
lightlist_t *lit = &backsector->e->XFloor.lightlist[j];
|
||||||
basecolormap = GetColorTable(lit->extra_colormap);
|
basecolormap = GetColorTable(lit->extra_colormap, frontsector->SpecialColors[sector_t::walltop]);
|
||||||
bool foggy = (level.fadeto || basecolormap->Fade || (level.flags & LEVEL_HASFADETABLE)); // [RH] set foggy flag
|
bool foggy = (level.fadeto || basecolormap->Fade || (level.flags & LEVEL_HASFADETABLE)); // [RH] set foggy flag
|
||||||
wallshade = LightVisibility::LightLevelToShade(curline->sidedef->GetLightLevel(ds->foggy, *lit->p_lightlevel, lit->lightsource != nullptr) + LightVisibility::ActualExtraLight(ds->foggy, Thread->Viewport.get()), foggy);
|
wallshade = LightVisibility::LightLevelToShade(curline->sidedef->GetLightLevel(ds->foggy, *lit->p_lightlevel, lit->lightsource != nullptr) + LightVisibility::ActualExtraLight(ds->foggy, Thread->Viewport.get()), foggy);
|
||||||
break;
|
break;
|
||||||
|
@ -896,7 +896,7 @@ namespace swrenderer
|
||||||
if (clip3d->sclipTop <= frontsector->e->XFloor.lightlist[j].plane.Zat0())
|
if (clip3d->sclipTop <= frontsector->e->XFloor.lightlist[j].plane.Zat0())
|
||||||
{
|
{
|
||||||
lightlist_t *lit = &frontsector->e->XFloor.lightlist[j];
|
lightlist_t *lit = &frontsector->e->XFloor.lightlist[j];
|
||||||
basecolormap = GetColorTable(lit->extra_colormap);
|
basecolormap = GetColorTable(lit->extra_colormap, frontsector->SpecialColors[sector_t::walltop]);
|
||||||
bool foggy = (level.fadeto || basecolormap->Fade || (level.flags & LEVEL_HASFADETABLE)); // [RH] set foggy flag
|
bool foggy = (level.fadeto || basecolormap->Fade || (level.flags & LEVEL_HASFADETABLE)); // [RH] set foggy flag
|
||||||
wallshade = LightVisibility::LightLevelToShade(curline->sidedef->GetLightLevel(ds->foggy, *lit->p_lightlevel, lit->lightsource != nullptr) + LightVisibility::ActualExtraLight(ds->foggy, Thread->Viewport.get()), foggy);
|
wallshade = LightVisibility::LightLevelToShade(curline->sidedef->GetLightLevel(ds->foggy, *lit->p_lightlevel, lit->lightsource != nullptr) + LightVisibility::ActualExtraLight(ds->foggy, Thread->Viewport.get()), foggy);
|
||||||
break;
|
break;
|
||||||
|
@ -904,7 +904,7 @@ namespace swrenderer
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (basecolormap == nullptr) basecolormap = GetColorTable(frontsector->Colormap);
|
if (basecolormap == nullptr) basecolormap = GetColorTable(frontsector->Colormap, frontsector->SpecialColors[sector_t::walltop]);
|
||||||
|
|
||||||
if (rw_pic != DONT_DRAW)
|
if (rw_pic != DONT_DRAW)
|
||||||
{
|
{
|
||||||
|
|
|
@ -394,7 +394,7 @@ namespace swrenderer
|
||||||
}
|
}
|
||||||
|
|
||||||
lightlist_t *lit = &frontsector->e->XFloor.lightlist[i];
|
lightlist_t *lit = &frontsector->e->XFloor.lightlist[i];
|
||||||
basecolormap = GetColorTable(lit->extra_colormap);
|
basecolormap = GetColorTable(lit->extra_colormap, frontsector->SpecialColors[sector_t::walltop]);
|
||||||
wallshade = LightVisibility::LightLevelToShade(curline->sidedef->GetLightLevel(foggy, *lit->p_lightlevel, lit->lightsource != NULL) + LightVisibility::ActualExtraLight(foggy, Thread->Viewport.get()), foggy);
|
wallshade = LightVisibility::LightLevelToShade(curline->sidedef->GetLightLevel(foggy, *lit->p_lightlevel, lit->lightsource != NULL) + LightVisibility::ActualExtraLight(foggy, Thread->Viewport.get()), foggy);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -46,15 +46,16 @@ void SetDefaultColormap (const char *name);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// MSVC needs the forceinline here.
|
// MSVC needs the forceinline here.
|
||||||
FORCEINLINE FDynamicColormap *GetColorTable(const FColormap &cm)
|
FORCEINLINE FDynamicColormap *GetColorTable(const FColormap &cm, PalEntry SpecialColor = 0xffffff)
|
||||||
{
|
{
|
||||||
|
auto c = SpecialColor.Modulate(cm.LightColor);
|
||||||
auto p = &NormalLight;
|
auto p = &NormalLight;
|
||||||
if (cm.LightColor == p->Color &&
|
if (c == p->Color &&
|
||||||
cm.FadeColor == p->Fade &&
|
cm.FadeColor == p->Fade &&
|
||||||
cm.Desaturation == p->Desaturate)
|
cm.Desaturation == p->Desaturate)
|
||||||
{
|
{
|
||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
|
|
||||||
return GetSpecialLights(cm.LightColor, cm.FadeColor, cm.Desaturation);
|
return GetSpecialLights(c, cm.FadeColor, cm.Desaturation);
|
||||||
}
|
}
|
||||||
|
|
|
@ -485,7 +485,7 @@ namespace swrenderer
|
||||||
if (cameraLight->FixedLightLevel() < 0 && frontsector->e && frontsector->e->XFloor.lightlist.Size())
|
if (cameraLight->FixedLightLevel() < 0 && frontsector->e && frontsector->e->XFloor.lightlist.Size())
|
||||||
{
|
{
|
||||||
light = P_GetPlaneLight(frontsector, &frontsector->ceilingplane, false);
|
light = P_GetPlaneLight(frontsector, &frontsector->ceilingplane, false);
|
||||||
basecolormap = GetColorTable(light->extra_colormap);
|
basecolormap = GetColorTable(light->extra_colormap, frontsector->SpecialColors[sector_t::ceiling]);
|
||||||
// If this is the real ceiling, don't discard plane lighting R_FakeFlat()
|
// If this is the real ceiling, don't discard plane lighting R_FakeFlat()
|
||||||
// accounted for.
|
// accounted for.
|
||||||
if (light->p_lightlevel != &frontsector->lightlevel)
|
if (light->p_lightlevel != &frontsector->lightlevel)
|
||||||
|
@ -495,7 +495,7 @@ namespace swrenderer
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
basecolormap = (r_fullbrightignoresectorcolor && cameraLight->FixedLightLevel() >= 0) ? &FullNormalLight : GetColorTable(frontsector->Colormap);
|
basecolormap = (r_fullbrightignoresectorcolor && cameraLight->FixedLightLevel() >= 0) ? &FullNormalLight : GetColorTable(frontsector->Colormap, frontsector->SpecialColors[sector_t::ceiling]);
|
||||||
}
|
}
|
||||||
|
|
||||||
portal = frontsector->ValidatePortal(sector_t::ceiling);
|
portal = frontsector->ValidatePortal(sector_t::ceiling);
|
||||||
|
@ -523,7 +523,7 @@ namespace swrenderer
|
||||||
if (cameraLight->FixedLightLevel() < 0 && frontsector->e && frontsector->e->XFloor.lightlist.Size())
|
if (cameraLight->FixedLightLevel() < 0 && frontsector->e && frontsector->e->XFloor.lightlist.Size())
|
||||||
{
|
{
|
||||||
light = P_GetPlaneLight(frontsector, &frontsector->floorplane, false);
|
light = P_GetPlaneLight(frontsector, &frontsector->floorplane, false);
|
||||||
basecolormap = GetColorTable(light->extra_colormap);
|
basecolormap = GetColorTable(light->extra_colormap, frontsector->SpecialColors[sector_t::floor]);
|
||||||
// If this is the real floor, don't discard plane lighting R_FakeFlat()
|
// If this is the real floor, don't discard plane lighting R_FakeFlat()
|
||||||
// accounted for.
|
// accounted for.
|
||||||
if (light->p_lightlevel != &frontsector->lightlevel)
|
if (light->p_lightlevel != &frontsector->lightlevel)
|
||||||
|
@ -533,7 +533,7 @@ namespace swrenderer
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
basecolormap = (r_fullbrightignoresectorcolor && cameraLight->FixedLightLevel() >= 0) ? &FullNormalLight : GetColorTable(frontsector->Colormap);
|
basecolormap = (r_fullbrightignoresectorcolor && cameraLight->FixedLightLevel() >= 0) ? &FullNormalLight : GetColorTable(frontsector->Colormap, frontsector->SpecialColors[sector_t::floor]);
|
||||||
}
|
}
|
||||||
|
|
||||||
// killough 3/7/98: Add (x,y) offsets to flats, add deep water check
|
// killough 3/7/98: Add (x,y) offsets to flats, add deep water check
|
||||||
|
@ -702,7 +702,7 @@ namespace swrenderer
|
||||||
ceilingplane = backupcp;
|
ceilingplane = backupcp;
|
||||||
}
|
}
|
||||||
|
|
||||||
basecolormap = GetColorTable(frontsector->Colormap);
|
basecolormap = GetColorTable(frontsector->Colormap, frontsector->SpecialColors[sector_t::sprites]);
|
||||||
floorlightlevel = fll;
|
floorlightlevel = fll;
|
||||||
ceilinglightlevel = cll;
|
ceilinglightlevel = cll;
|
||||||
|
|
||||||
|
@ -726,6 +726,7 @@ namespace swrenderer
|
||||||
count = sub->numlines;
|
count = sub->numlines;
|
||||||
line = sub->firstline;
|
line = sub->firstline;
|
||||||
|
|
||||||
|
basecolormap = GetColorTable(frontsector->Colormap, frontsector->SpecialColors[sector_t::walltop]);
|
||||||
while (count--)
|
while (count--)
|
||||||
{
|
{
|
||||||
if (!outersubsector || line->sidedef == nullptr || !(line->sidedef->Flags & WALLF_POLYOBJ))
|
if (!outersubsector || line->sidedef == nullptr || !(line->sidedef->Flags & WALLF_POLYOBJ))
|
||||||
|
@ -885,7 +886,7 @@ namespace swrenderer
|
||||||
{
|
{
|
||||||
int lightlevel = thing->Sector->GetTexture(sector_t::ceiling) == skyflatnum ? thing->Sector->GetCeilingLight() : thing->Sector->GetFloorLight();
|
int lightlevel = thing->Sector->GetTexture(sector_t::ceiling) == skyflatnum ? thing->Sector->GetCeilingLight() : thing->Sector->GetFloorLight();
|
||||||
thingShade = LightVisibility::LightLevelToShade(lightlevel + LightVisibility::ActualExtraLight(foggy, Thread->Viewport.get()), foggy);
|
thingShade = LightVisibility::LightLevelToShade(lightlevel + LightVisibility::ActualExtraLight(foggy, Thread->Viewport.get()), foggy);
|
||||||
thingColormap = GetColorTable(thing->Sector->Colormap);
|
thingColormap = GetColorTable(thing->Sector->Colormap, thing->Sector->SpecialColors[sector_t::sprites]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((sprite.renderflags & RF_SPRITETYPEMASK) == RF_WALLSPRITE)
|
if ((sprite.renderflags & RF_SPRITETYPEMASK) == RF_WALLSPRITE)
|
||||||
|
|
|
@ -148,7 +148,7 @@ namespace swrenderer
|
||||||
botplane = &heightsec->ceilingplane;
|
botplane = &heightsec->ceilingplane;
|
||||||
toppic = sector->GetTexture(sector_t::ceiling);
|
toppic = sector->GetTexture(sector_t::ceiling);
|
||||||
botpic = heightsec->GetTexture(sector_t::ceiling);
|
botpic = heightsec->GetTexture(sector_t::ceiling);
|
||||||
map = GetColorTable(heightsec->Colormap);
|
map = GetColorTable(heightsec->Colormap, heightsec->SpecialColors[sector_t::sprites]);
|
||||||
}
|
}
|
||||||
else if (fakeside == WaterFakeSide::BelowFloor)
|
else if (fakeside == WaterFakeSide::BelowFloor)
|
||||||
{
|
{
|
||||||
|
@ -156,7 +156,7 @@ namespace swrenderer
|
||||||
botplane = §or->floorplane;
|
botplane = §or->floorplane;
|
||||||
toppic = heightsec->GetTexture(sector_t::floor);
|
toppic = heightsec->GetTexture(sector_t::floor);
|
||||||
botpic = sector->GetTexture(sector_t::floor);
|
botpic = sector->GetTexture(sector_t::floor);
|
||||||
map = GetColorTable(heightsec->Colormap);
|
map = GetColorTable(heightsec->Colormap, heightsec->SpecialColors[sector_t::sprites]);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -164,7 +164,7 @@ namespace swrenderer
|
||||||
botplane = &heightsec->floorplane;
|
botplane = &heightsec->floorplane;
|
||||||
toppic = heightsec->GetTexture(sector_t::ceiling);
|
toppic = heightsec->GetTexture(sector_t::ceiling);
|
||||||
botpic = heightsec->GetTexture(sector_t::floor);
|
botpic = heightsec->GetTexture(sector_t::floor);
|
||||||
map = GetColorTable(sector->Colormap);
|
map = GetColorTable(sector->Colormap, sector->SpecialColors[sector_t::sprites]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -173,7 +173,7 @@ namespace swrenderer
|
||||||
botplane = §or->floorplane;
|
botplane = §or->floorplane;
|
||||||
toppic = sector->GetTexture(sector_t::ceiling);
|
toppic = sector->GetTexture(sector_t::ceiling);
|
||||||
botpic = sector->GetTexture(sector_t::floor);
|
botpic = sector->GetTexture(sector_t::floor);
|
||||||
map = GetColorTable(sector->Colormap);
|
map = GetColorTable(sector->Colormap, sector->SpecialColors[sector_t::sprites]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (botpic != skyflatnum && particle->Pos.Z < botplane->ZatPoint(particle->Pos))
|
if (botpic != skyflatnum && particle->Pos.Z < botplane->ZatPoint(particle->Pos))
|
||||||
|
|
|
@ -103,9 +103,9 @@ namespace swrenderer
|
||||||
break;
|
break;
|
||||||
sec = rover->model;
|
sec = rover->model;
|
||||||
if (rover->flags & FF_FADEWALLS)
|
if (rover->flags & FF_FADEWALLS)
|
||||||
basecolormap = GetColorTable(sec->Colormap);
|
basecolormap = GetColorTable(sec->Colormap, sec->SpecialColors[sector_t::sprites]);
|
||||||
else
|
else
|
||||||
basecolormap = GetColorTable(Thread->Viewport->viewpoint.sector->e->XFloor.lightlist[i].extra_colormap);
|
basecolormap = GetColorTable(Thread->Viewport->viewpoint.sector->e->XFloor.lightlist[i].extra_colormap, sec->SpecialColors[sector_t::sprites]);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -113,7 +113,7 @@ namespace swrenderer
|
||||||
if (!sec)
|
if (!sec)
|
||||||
{
|
{
|
||||||
sec = Thread->Viewport->viewpoint.sector;
|
sec = Thread->Viewport->viewpoint.sector;
|
||||||
basecolormap = GetColorTable(sec->Colormap);
|
basecolormap = GetColorTable(sec->Colormap, sec->SpecialColors[sector_t::sprites]);
|
||||||
}
|
}
|
||||||
floorlight = ceilinglight = sec->lightlevel;
|
floorlight = ceilinglight = sec->lightlevel;
|
||||||
}
|
}
|
||||||
|
@ -123,7 +123,7 @@ namespace swrenderer
|
||||||
sec = Thread->OpaquePass->FakeFlat(Thread->Viewport->viewpoint.sector, &tempsec, &floorlight, &ceilinglight, nullptr, 0, 0, 0, 0);
|
sec = Thread->OpaquePass->FakeFlat(Thread->Viewport->viewpoint.sector, &tempsec, &floorlight, &ceilinglight, nullptr, 0, 0, 0, 0);
|
||||||
|
|
||||||
// [RH] set basecolormap
|
// [RH] set basecolormap
|
||||||
basecolormap = GetColorTable(sec->Colormap);
|
basecolormap = GetColorTable(sec->Colormap, sec->SpecialColors[sector_t::sprites]);
|
||||||
}
|
}
|
||||||
|
|
||||||
// [RH] set foggy flag
|
// [RH] set foggy flag
|
||||||
|
|
|
@ -113,11 +113,11 @@ namespace swrenderer
|
||||||
sec = rover->model;
|
sec = rover->model;
|
||||||
if (rover->flags & FF_FADEWALLS)
|
if (rover->flags & FF_FADEWALLS)
|
||||||
{
|
{
|
||||||
mybasecolormap = GetColorTable(sec->Colormap);
|
mybasecolormap = GetColorTable(sec->Colormap, spr->sector->SpecialColors[sector_t::sprites]);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
mybasecolormap = GetColorTable(spr->sector->e->XFloor.lightlist[i].extra_colormap);
|
mybasecolormap = GetColorTable(spr->sector->e->XFloor.lightlist[i].extra_colormap, spr->sector->SpecialColors[sector_t::sprites]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in a new issue