- made the adjustments.

This commit is contained in:
Christoph Oelckers 2016-04-24 13:35:43 +02:00
parent 2914cdc939
commit f77c4642cb
10 changed files with 65 additions and 65 deletions

View file

@ -348,7 +348,7 @@ static void PrepareTransparentDoors(sector_t * sector)
int side = sector->lines[i]->sidedef[0]->sector == sec; int side = sector->lines[i]->sidedef[0]->sector == sec;
if (sector->GetPlaneTexZ(sector_t::floor)!=sec->GetPlaneTexZ(sector_t::floor)+FRACUNIT) if (sector->GetPlaneTexZ(sector_t::floor)!=sec->GetPlaneTexZ(sector_t::floor)+1.)
{ {
sector->transdoor=false; sector->transdoor=false;
return; return;

View file

@ -338,7 +338,7 @@ void FFlatVertexBuffer::CreateVBO()
{ {
sectors[i].vboindex[3] = sectors[i].vboindex[2] = sectors[i].vboindex[3] = sectors[i].vboindex[2] =
sectors[i].vboindex[1] = sectors[i].vboindex[0] = -1; sectors[i].vboindex[1] = sectors[i].vboindex[0] = -1;
sectors[i].vboheight[1] = sectors[i].vboheight[0] = FIXED_MIN; sectors[i].vboheight[1] = sectors[i].vboheight[0] = FLT_MIN;
} }
} }

View file

@ -129,33 +129,33 @@ void GLWall::DrawDecal(DBaseDecal *decal)
if (type!=RENDERWALL_TOP) return; if (type!=RENDERWALL_TOP) return;
if (line->flags & ML_DONTPEGTOP) if (line->flags & ML_DONTPEGTOP)
{ {
zpos = decal->Z + frontsector->GetPlaneTexZF(sector_t::ceiling); zpos = decal->Z + frontsector->GetPlaneTexZ(sector_t::ceiling);
} }
else else
{ {
zpos = decal->Z + seg->backsector->GetPlaneTexZF(sector_t::ceiling); zpos = decal->Z + seg->backsector->GetPlaneTexZ(sector_t::ceiling);
} }
break; break;
case RF_RELLOWER: case RF_RELLOWER:
if (type!=RENDERWALL_BOTTOM) return; if (type!=RENDERWALL_BOTTOM) return;
if (line->flags & ML_DONTPEGBOTTOM) if (line->flags & ML_DONTPEGBOTTOM)
{ {
zpos = decal->Z + frontsector->GetPlaneTexZF(sector_t::ceiling); zpos = decal->Z + frontsector->GetPlaneTexZ(sector_t::ceiling);
} }
else else
{ {
zpos = decal->Z + seg->backsector->GetPlaneTexZF(sector_t::floor); zpos = decal->Z + seg->backsector->GetPlaneTexZ(sector_t::floor);
} }
break; break;
case RF_RELMID: case RF_RELMID:
if (type==RENDERWALL_TOP || type==RENDERWALL_BOTTOM) return; if (type==RENDERWALL_TOP || type==RENDERWALL_BOTTOM) return;
if (line->flags & ML_DONTPEGBOTTOM) if (line->flags & ML_DONTPEGBOTTOM)
{ {
zpos = decal->Z + frontsector->GetPlaneTexZF(sector_t::floor); zpos = decal->Z + frontsector->GetPlaneTexZ(sector_t::floor);
} }
else else
{ {
zpos = decal->Z + frontsector->GetPlaneTexZF(sector_t::ceiling); zpos = decal->Z + frontsector->GetPlaneTexZ(sector_t::ceiling);
} }
} }

View file

@ -1222,7 +1222,7 @@ void FDrawInfo::FloodLowerGap(seg_t * seg)
if (fakebsector->GetTexture(sector_t::floor) == skyflatnum) return; if (fakebsector->GetTexture(sector_t::floor) == skyflatnum) return;
if (fakebsector->GetPlaneTexZF(sector_t::floor) > ViewPos.Z) return; if (fakebsector->GetPlaneTexZ(sector_t::floor) > ViewPos.Z) return;
if (seg->sidedef == seg->linedef->sidedef[0]) if (seg->sidedef == seg->linedef->sidedef[0])
{ {

View file

@ -595,7 +595,7 @@ void GLFlat::ProcessSector(sector_t * frontsector)
{ {
gl_drawinfo->AddFloorStack(sector); // stacked sector things require visplane merging. gl_drawinfo->AddFloorStack(sector); // stacked sector things require visplane merging.
} }
alpha = frontsector->GetAlpha(sector_t::floor) / 65536.0f; alpha = frontsector->GetAlpha(sector_t::floor);
} }
else else
{ {
@ -654,7 +654,7 @@ void GLFlat::ProcessSector(sector_t * frontsector)
{ {
gl_drawinfo->AddCeilingStack(sector); gl_drawinfo->AddCeilingStack(sector);
} }
alpha = frontsector->GetAlpha(sector_t::ceiling) / 65536.0f; alpha = frontsector->GetAlpha(sector_t::ceiling);
} }
else else
{ {

View file

@ -299,14 +299,14 @@ bool FDrawInfo::DoOneSectorUpper(subsector_t * subsec, float Planez)
if (sec->ceilingplane.isSlope()) return false; if (sec->ceilingplane.isSlope()) return false;
// Is the neighboring ceiling lower than the desired height? // Is the neighboring ceiling lower than the desired height?
if (sec->GetPlaneTexZF(sector_t::ceiling) < Planez) if (sec->GetPlaneTexZ(sector_t::ceiling) < Planez)
{ {
// todo: check for missing textures. // todo: check for missing textures.
return false; return false;
} }
// This is an exact height match which means we don't have to do any further checks for this sector // This is an exact height match which means we don't have to do any further checks for this sector
if (sec->GetPlaneTexZF(sector_t::ceiling) == Planez) if (sec->GetPlaneTexZ(sector_t::ceiling) == Planez)
{ {
// If there's a texture abort // If there's a texture abort
FTexture * tex = TexMan[seg->sidedef->GetTexture(side_t::top)]; FTexture * tex = TexMan[seg->sidedef->GetTexture(side_t::top)];
@ -357,14 +357,14 @@ bool FDrawInfo::DoOneSectorLower(subsector_t * subsec, float Planez)
if (sec->floorplane.isSlope()) return false; if (sec->floorplane.isSlope()) return false;
// Is the neighboring floor higher than the desired height? // Is the neighboring floor higher than the desired height?
if (sec->GetPlaneTexZF(sector_t::floor) > Planez) if (sec->GetPlaneTexZ(sector_t::floor) > Planez)
{ {
// todo: check for missing textures. // todo: check for missing textures.
return false; return false;
} }
// This is an exact height match which means we don't have to do any further checks for this sector // This is an exact height match which means we don't have to do any further checks for this sector
if (sec->GetPlaneTexZF(sector_t::floor) == Planez) if (sec->GetPlaneTexZ(sector_t::floor) == Planez)
{ {
// If there's a texture abort // If there's a texture abort
FTexture * tex = TexMan[seg->sidedef->GetTexture(side_t::bottom)]; FTexture * tex = TexMan[seg->sidedef->GetTexture(side_t::bottom)];
@ -416,7 +416,7 @@ bool FDrawInfo::DoFakeBridge(subsector_t * subsec, float Planez)
if (sec->floorplane.isSlope()) return false; if (sec->floorplane.isSlope()) return false;
// Is the neighboring floor higher than the desired height? // Is the neighboring floor higher than the desired height?
if (sec->GetPlaneTexZF(sector_t::floor) < Planez) if (sec->GetPlaneTexZ(sector_t::floor) < Planez)
{ {
// todo: check for missing textures. // todo: check for missing textures.
return false; return false;
@ -424,7 +424,7 @@ bool FDrawInfo::DoFakeBridge(subsector_t * subsec, float Planez)
// This is an exact height match which means we don't have to do any further checks for this sector // This is an exact height match which means we don't have to do any further checks for this sector
// No texture checks though! // No texture checks though!
if (sec->GetPlaneTexZF(sector_t::floor) == Planez) continue; if (sec->GetPlaneTexZ(sector_t::floor) == Planez) continue;
} }
if (!DoFakeBridge(backsub, Planez)) return false; if (!DoFakeBridge(backsub, Planez)) return false;
} }
@ -469,7 +469,7 @@ bool FDrawInfo::DoFakeCeilingBridge(subsector_t * subsec, float Planez)
if (sec->ceilingplane.isSlope()) return false; if (sec->ceilingplane.isSlope()) return false;
// Is the neighboring ceiling higher than the desired height? // Is the neighboring ceiling higher than the desired height?
if (sec->GetPlaneTexZF(sector_t::ceiling) > Planez) if (sec->GetPlaneTexZ(sector_t::ceiling) > Planez)
{ {
// todo: check for missing textures. // todo: check for missing textures.
return false; return false;
@ -477,7 +477,7 @@ bool FDrawInfo::DoFakeCeilingBridge(subsector_t * subsec, float Planez)
// This is an exact height match which means we don't have to do any further checks for this sector // This is an exact height match which means we don't have to do any further checks for this sector
// No texture checks though! // No texture checks though!
if (sec->GetPlaneTexZF(sector_t::ceiling) == Planez) continue; if (sec->GetPlaneTexZ(sector_t::ceiling) == Planez) continue;
} }
if (!DoFakeCeilingBridge(backsub, Planez)) return false; if (!DoFakeCeilingBridge(backsub, Planez)) return false;
} }
@ -553,7 +553,7 @@ void FDrawInfo::HandleMissingTextures()
{ {
// It isn't a hole. Now check whether it might be a fake bridge // It isn't a hole. Now check whether it might be a fake bridge
sector_t * fakesector = gl_FakeFlat(MissingUpperTextures[i].seg->frontsector, &fake, false); sector_t * fakesector = gl_FakeFlat(MissingUpperTextures[i].seg->frontsector, &fake, false);
float planez = (float)fakesector->GetPlaneTexZF(sector_t::ceiling); float planez = (float)fakesector->GetPlaneTexZ(sector_t::ceiling);
backsub->validcount = validcount; backsub->validcount = validcount;
if (DoFakeCeilingBridge(backsub, planez)) if (DoFakeCeilingBridge(backsub, planez))
@ -624,7 +624,7 @@ void FDrawInfo::HandleMissingTextures()
{ {
// It isn't a hole. Now check whether it might be a fake bridge // It isn't a hole. Now check whether it might be a fake bridge
sector_t * fakesector = gl_FakeFlat(MissingLowerTextures[i].seg->frontsector, &fake, false); sector_t * fakesector = gl_FakeFlat(MissingLowerTextures[i].seg->frontsector, &fake, false);
float planez = (float)fakesector->GetPlaneTexZF(sector_t::floor); float planez = (float)fakesector->GetPlaneTexZ(sector_t::floor);
backsub->validcount = validcount; backsub->validcount = validcount;
if (DoFakeBridge(backsub, planez)) if (DoFakeBridge(backsub, planez))
@ -668,7 +668,7 @@ void FDrawInfo::DrawUnhandledMissingTextures()
// already done! // already done!
if (seg->linedef->validcount == validcount) continue; // already done if (seg->linedef->validcount == validcount) continue; // already done
seg->linedef->validcount = validcount; seg->linedef->validcount = validcount;
if (seg->frontsector->GetPlaneTexZF(sector_t::ceiling) < ViewPos.Z) continue; // out of sight if (seg->frontsector->GetPlaneTexZ(sector_t::ceiling) < ViewPos.Z) continue; // out of sight
// FIXME: The check for degenerate subsectors should be more precise // FIXME: The check for degenerate subsectors should be more precise
if (seg->PartnerSeg && (seg->PartnerSeg->Subsector->flags & SSECF_DEGENERATE)) continue; if (seg->PartnerSeg && (seg->PartnerSeg->Subsector->flags & SSECF_DEGENERATE)) continue;
@ -690,7 +690,7 @@ void FDrawInfo::DrawUnhandledMissingTextures()
if (seg->linedef->validcount == validcount) continue; // already done if (seg->linedef->validcount == validcount) continue; // already done
seg->linedef->validcount = validcount; seg->linedef->validcount = validcount;
if (!(sectorrenderflags[seg->backsector->sectornum] & SSRF_RENDERFLOOR)) continue; if (!(sectorrenderflags[seg->backsector->sectornum] & SSRF_RENDERFLOOR)) continue;
if (seg->frontsector->GetPlaneTexZF(sector_t::floor) > ViewPos.Z) continue; // out of sight if (seg->frontsector->GetPlaneTexZ(sector_t::floor) > ViewPos.Z) continue; // out of sight
if (seg->backsector->transdoor) continue; if (seg->backsector->transdoor) continue;
if (seg->backsector->GetTexture(sector_t::floor) == skyflatnum) continue; if (seg->backsector->GetTexture(sector_t::floor) == skyflatnum) continue;
if (seg->backsector->ValidatePortal(sector_t::floor) != NULL) continue; if (seg->backsector->ValidatePortal(sector_t::floor) != NULL) continue;
@ -758,8 +758,8 @@ bool FDrawInfo::CheckAnchorFloor(subsector_t * sub)
{ {
// I'm ignoring slopes, scaling and rotation here. The likelihood of ZDoom maps // I'm ignoring slopes, scaling and rotation here. The likelihood of ZDoom maps
// using such crap hacks is simply too small // using such crap hacks is simply too small
if (sub->render_sector->GetTexture(sector_t::floor)==backsub->render_sector->GetTexture(sector_t::floor) && if (sub->render_sector->GetTexture(sector_t::floor) == backsub->render_sector->GetTexture(sector_t::floor) &&
sub->render_sector->GetPlaneTexZ(sector_t::floor)==backsub->render_sector->GetPlaneTexZ(sector_t::floor) && sub->render_sector->GetPlaneTexZ(sector_t::floor) == backsub->render_sector->GetPlaneTexZ(sector_t::floor) &&
sub->render_sector->GetFloorLight() == backsub->render_sector->GetFloorLight()) sub->render_sector->GetFloorLight() == backsub->render_sector->GetFloorLight())
{ {
continue; continue;
@ -797,10 +797,10 @@ bool FDrawInfo::CollectSubsectorsFloor(subsector_t * sub, sector_t * anchor)
if (!(ss_renderflags[DWORD(sub - subsectors)] & SSRF_PROCESSED)) return true; if (!(ss_renderflags[DWORD(sub - subsectors)] & SSRF_PROCESSED)) return true;
if (sub->render_sector->GetTexture(sector_t::floor) != anchor->GetTexture(sector_t::floor) || if (sub->render_sector->GetTexture(sector_t::floor) != anchor->GetTexture(sector_t::floor) ||
sub->render_sector->GetPlaneTexZF(sector_t::floor) != anchor->GetPlaneTexZF(sector_t::floor) || sub->render_sector->GetPlaneTexZ(sector_t::floor) != anchor->GetPlaneTexZ(sector_t::floor) ||
sub->render_sector->GetFloorLight() != anchor->GetFloorLight()) sub->render_sector->GetFloorLight() != anchor->GetFloorLight())
{ {
if (sub == viewsubsector && ViewPos.Z < anchor->GetPlaneTexZF(sector_t::floor)) inview = true; if (sub == viewsubsector && ViewPos.Z < anchor->GetPlaneTexZ(sector_t::floor)) inview = true;
HandledSubsectors.Push(sub); HandledSubsectors.Push(sub);
} }
} }
@ -825,9 +825,9 @@ bool FDrawInfo::CollectSubsectorsFloor(subsector_t * sub, sector_t * anchor)
else if (sub->render_sector == backsub->render_sector) else if (sub->render_sector == backsub->render_sector)
{ {
// Any anchor not within the original anchor's visplane terminates the processing. // Any anchor not within the original anchor's visplane terminates the processing.
if (sub->render_sector->GetTexture(sector_t::floor)!=anchor->GetTexture(sector_t::floor) || if (sub->render_sector->GetTexture(sector_t::floor) != anchor->GetTexture(sector_t::floor) ||
sub->render_sector->GetPlaneTexZ(sector_t::floor)!=anchor->GetPlaneTexZ(sector_t::floor) || sub->render_sector->GetPlaneTexZ(sector_t::floor) != anchor->GetPlaneTexZ(sector_t::floor) ||
sub->render_sector->GetFloorLight() != anchor->GetFloorLight()) sub->render_sector->GetFloorLight() != anchor->GetFloorLight())
{ {
return false; return false;
} }
@ -864,8 +864,8 @@ bool FDrawInfo::CheckAnchorCeiling(subsector_t * sub)
{ {
// I'm ignoring slopes, scaling and rotation here. The likelihood of ZDoom maps // I'm ignoring slopes, scaling and rotation here. The likelihood of ZDoom maps
// using such crap hacks is simply too small // using such crap hacks is simply too small
if (sub->render_sector->GetTexture(sector_t::ceiling)==backsub->render_sector->GetTexture(sector_t::ceiling) && if (sub->render_sector->GetTexture(sector_t::ceiling) == backsub->render_sector->GetTexture(sector_t::ceiling) &&
sub->render_sector->GetPlaneTexZ(sector_t::ceiling)==backsub->render_sector->GetPlaneTexZ(sector_t::ceiling) && sub->render_sector->GetPlaneTexZ(sector_t::ceiling) == backsub->render_sector->GetPlaneTexZ(sector_t::ceiling) &&
sub->render_sector->GetCeilingLight() == backsub->render_sector->GetCeilingLight()) sub->render_sector->GetCeilingLight() == backsub->render_sector->GetCeilingLight())
{ {
continue; continue;
@ -898,11 +898,11 @@ bool FDrawInfo::CollectSubsectorsCeiling(subsector_t * sub, sector_t * anchor)
// Is not being rendererd so don't bother. // Is not being rendererd so don't bother.
if (!(ss_renderflags[DWORD(sub-subsectors)]&SSRF_PROCESSED)) return true; if (!(ss_renderflags[DWORD(sub-subsectors)]&SSRF_PROCESSED)) return true;
if (sub->render_sector->GetTexture(sector_t::ceiling)!=anchor->GetTexture(sector_t::ceiling) || if (sub->render_sector->GetTexture(sector_t::ceiling) != anchor->GetTexture(sector_t::ceiling) ||
sub->render_sector->GetPlaneTexZ(sector_t::ceiling)!=anchor->GetPlaneTexZ(sector_t::ceiling) || sub->render_sector->GetPlaneTexZ(sector_t::ceiling) != anchor->GetPlaneTexZ(sector_t::ceiling) ||
sub->render_sector->GetCeilingLight() != anchor->GetCeilingLight()) sub->render_sector->GetCeilingLight() != anchor->GetCeilingLight())
{ {
HandledSubsectors.Push (sub); HandledSubsectors.Push(sub);
} }
} }
@ -926,9 +926,9 @@ bool FDrawInfo::CollectSubsectorsCeiling(subsector_t * sub, sector_t * anchor)
else if (sub->render_sector == backsub->render_sector) else if (sub->render_sector == backsub->render_sector)
{ {
// Any anchor not within the original anchor's visplane terminates the processing. // Any anchor not within the original anchor's visplane terminates the processing.
if (sub->render_sector->GetTexture(sector_t::ceiling)!=anchor->GetTexture(sector_t::ceiling) || if (sub->render_sector->GetTexture(sector_t::ceiling) != anchor->GetTexture(sector_t::ceiling) ||
sub->render_sector->GetPlaneTexZ(sector_t::ceiling)!=anchor->GetPlaneTexZ(sector_t::ceiling) || sub->render_sector->GetPlaneTexZ(sector_t::ceiling) != anchor->GetPlaneTexZ(sector_t::ceiling) ||
sub->render_sector->GetCeilingLight() != anchor->GetCeilingLight()) sub->render_sector->GetCeilingLight() != anchor->GetCeilingLight())
{ {
return false; return false;
} }

View file

@ -262,7 +262,7 @@ void GLWall::SkyTop(seg_t * seg,sector_t * fs,sector_t * bs,vertex_t * v1,vertex
// one more check for some ugly transparent door hacks // one more check for some ugly transparent door hacks
if (!bs->floorplane.isSlope() && !fs->floorplane.isSlope()) if (!bs->floorplane.isSlope() && !fs->floorplane.isSlope())
{ {
if (bs->GetPlaneTexZ(sector_t::floor)==fs->GetPlaneTexZ(sector_t::floor)+FRACUNIT) if (bs->GetPlaneTexZ(sector_t::floor)==fs->GetPlaneTexZ(sector_t::floor)+1.)
{ {
FTexture * tex = TexMan(seg->sidedef->GetTexture(side_t::bottom)); FTexture * tex = TexMan(seg->sidedef->GetTexture(side_t::bottom));
if (!tex || tex->UseType==FTexture::TEX_Null) return; if (!tex || tex->UseType==FTexture::TEX_Null) return;

View file

@ -288,7 +288,7 @@ public:
bool ceiling; bool ceiling;
BYTE renderflags; BYTE renderflags;
int vboindex; int vboindex;
int vboheight; //int vboheight;
int dynlightindex; int dynlightindex;

View file

@ -360,12 +360,12 @@ bool GLWall::DoHorizon(seg_t * seg,sector_t * fs, vertex_t * v1,vertex_t * v2)
lightlist_t * light; lightlist_t * light;
// ZDoom doesn't support slopes in a horizon sector so I won't either! // ZDoom doesn't support slopes in a horizon sector so I won't either!
ztop[1] = ztop[0] = fs->GetPlaneTexZF(sector_t::ceiling); ztop[1] = ztop[0] = fs->GetPlaneTexZ(sector_t::ceiling);
zbottom[1] = zbottom[0] = fs->GetPlaneTexZF(sector_t::floor); zbottom[1] = zbottom[0] = fs->GetPlaneTexZ(sector_t::floor);
if (ViewPos.Z < fs->GetPlaneTexZF(sector_t::ceiling)) if (ViewPos.Z < fs->GetPlaneTexZ(sector_t::ceiling))
{ {
if (ViewPos.Z > fs->GetPlaneTexZF(sector_t::floor)) if (ViewPos.Z > fs->GetPlaneTexZ(sector_t::floor))
zbottom[1] = zbottom[0] = ViewPos.Z; zbottom[1] = zbottom[0] = ViewPos.Z;
if (fs->GetTexture(sector_t::ceiling) == skyflatnum) if (fs->GetTexture(sector_t::ceiling) == skyflatnum)
@ -393,9 +393,9 @@ bool GLWall::DoHorizon(seg_t * seg,sector_t * fs, vertex_t * v1,vertex_t * v2)
ztop[1] = ztop[0] = zbottom[0]; ztop[1] = ztop[0] = zbottom[0];
} }
if (ViewPos.Z > fs->GetPlaneTexZF(sector_t::floor)) if (ViewPos.Z > fs->GetPlaneTexZ(sector_t::floor))
{ {
zbottom[1] = zbottom[0] = fs->GetPlaneTexZF(sector_t::floor); zbottom[1] = zbottom[0] = fs->GetPlaneTexZ(sector_t::floor);
if (fs->GetTexture(sector_t::floor) == skyflatnum) if (fs->GetTexture(sector_t::floor) == skyflatnum)
{ {
SkyPlane(fs, sector_t::floor, false); SkyPlane(fs, sector_t::floor, false);
@ -707,12 +707,12 @@ void GLWall::DoMidTexture(seg_t * seg, bool drawfogboundary,
float rowoffset = tci.RowOffset(seg->sidedef->GetTextureYOffset(side_t::mid)); float rowoffset = tci.RowOffset(seg->sidedef->GetTextureYOffset(side_t::mid));
if ((seg->linedef->flags & ML_DONTPEGBOTTOM) >0) if ((seg->linedef->flags & ML_DONTPEGBOTTOM) >0)
{ {
texturebottom = MAX(realfront->GetPlaneTexZF(sector_t::floor), realback->GetPlaneTexZF(sector_t::floor)) + rowoffset; texturebottom = MAX(realfront->GetPlaneTexZ(sector_t::floor), realback->GetPlaneTexZ(sector_t::floor)) + rowoffset;
texturetop = texturebottom + tci.mRenderHeight; texturetop = texturebottom + tci.mRenderHeight;
} }
else else
{ {
texturetop = MIN(realfront->GetPlaneTexZF(sector_t::ceiling), realback->GetPlaneTexZF(sector_t::ceiling)) + rowoffset; texturetop = MIN(realfront->GetPlaneTexZ(sector_t::ceiling), realback->GetPlaneTexZ(sector_t::ceiling)) + rowoffset;
texturebottom = texturetop - tci.mRenderHeight; texturebottom = texturetop - tci.mRenderHeight;
} }
} }
@ -896,7 +896,7 @@ void GLWall::DoMidTexture(seg_t * seg, bool drawfogboundary,
// set up alpha blending // set up alpha blending
// //
// //
if (seg->linedef->Alpha)// && seg->linedef->special!=Line_Fogsheet) if (seg->linedef->alpha != 0)
{ {
bool translucent = false; bool translucent = false;
@ -904,13 +904,13 @@ void GLWall::DoMidTexture(seg_t * seg, bool drawfogboundary,
{ {
case 0: case 0:
RenderStyle=STYLE_Translucent; RenderStyle=STYLE_Translucent;
alpha=FIXED2FLOAT(seg->linedef->Alpha); alpha = seg->linedef->alpha;
translucent = seg->linedef->Alpha < FRACUNIT || (gltexture && gltexture->GetTransparent()); translucent =alpha < 1. || (gltexture && gltexture->GetTransparent());
break; break;
case ML_ADDTRANS: case ML_ADDTRANS:
RenderStyle=STYLE_Add; RenderStyle=STYLE_Add;
alpha=FIXED2FLOAT(seg->linedef->Alpha); alpha = seg->linedef->alpha;
translucent=true; translucent=true;
break; break;
} }
@ -1065,7 +1065,7 @@ void GLWall::BuildFFBlock(seg_t * seg, F3DFloor * rover,
to = (rover->flags&(FF_UPPERTEXTURE | FF_LOWERTEXTURE)) ? to = (rover->flags&(FF_UPPERTEXTURE | FF_LOWERTEXTURE)) ?
0.f : tci.RowOffset(mastersd->GetTextureYOffset(side_t::mid)); 0.f : tci.RowOffset(mastersd->GetTextureYOffset(side_t::mid));
to += rowoffset + rover->top.model->GetPlaneTexZF(rover->top.isceiling); to += rowoffset + rover->top.model->GetPlaneTexZ(rover->top.isceiling);
uplft.v = tci.FloatToTexV(to - ff_topleft); uplft.v = tci.FloatToTexV(to - ff_topleft);
uprgt.v = tci.FloatToTexV(to - ff_topright); uprgt.v = tci.FloatToTexV(to - ff_topright);
@ -1372,8 +1372,8 @@ void GLWall::Process(seg_t *seg, sector_t * frontsector, sector_t * backsector)
segfront = frontsector; segfront = frontsector;
segback = backsector; segback = backsector;
} }
frefz = realfront->GetPlaneTexZF(sector_t::floor); frefz = realfront->GetPlaneTexZ(sector_t::floor);
crefz = realfront->GetPlaneTexZF(sector_t::ceiling); crefz = realfront->GetPlaneTexZ(sector_t::ceiling);
if (seg->sidedef == seg->linedef->sidedef[0]) if (seg->sidedef == seg->linedef->sidedef[0])
{ {
@ -1525,7 +1525,7 @@ void GLWall::Process(seg_t *seg, sector_t * frontsector, sector_t * backsector)
if (gltexture) if (gltexture)
{ {
DoTexture(RENDERWALL_TOP, seg, (seg->linedef->flags & (ML_DONTPEGTOP)) == 0, DoTexture(RENDERWALL_TOP, seg, (seg->linedef->flags & (ML_DONTPEGTOP)) == 0,
crefz, realback->GetPlaneTexZF(sector_t::ceiling), crefz, realback->GetPlaneTexZ(sector_t::ceiling),
fch1, fch2, bch1a, bch2a, 0); fch1, fch2, bch1a, bch2a, 0);
} }
else if (!(seg->sidedef->Flags & WALLF_POLYOBJ)) else if (!(seg->sidedef->Flags & WALLF_POLYOBJ))
@ -1538,7 +1538,7 @@ void GLWall::Process(seg_t *seg, sector_t * frontsector, sector_t * backsector)
if (gltexture) if (gltexture)
{ {
DoTexture(RENDERWALL_TOP, seg, (seg->linedef->flags & (ML_DONTPEGTOP)) == 0, DoTexture(RENDERWALL_TOP, seg, (seg->linedef->flags & (ML_DONTPEGTOP)) == 0,
crefz, realback->GetPlaneTexZF(sector_t::ceiling), crefz, realback->GetPlaneTexZ(sector_t::ceiling),
fch1, fch2, bch1a, bch2a, 0); fch1, fch2, bch1a, bch2a, 0);
} }
} }
@ -1602,10 +1602,10 @@ void GLWall::Process(seg_t *seg, sector_t * frontsector, sector_t * backsector)
if (gltexture) if (gltexture)
{ {
DoTexture(RENDERWALL_BOTTOM, seg, (seg->linedef->flags & ML_DONTPEGBOTTOM) > 0, DoTexture(RENDERWALL_BOTTOM, seg, (seg->linedef->flags & ML_DONTPEGBOTTOM) > 0,
realback->GetPlaneTexZF(sector_t::floor), frefz, realback->GetPlaneTexZ(sector_t::floor), frefz,
bfh1, bfh2, ffh1, ffh2, bfh1, bfh2, ffh1, ffh2,
frontsector->GetTexture(sector_t::ceiling) == skyflatnum && backsector->GetTexture(sector_t::ceiling) == skyflatnum ? frontsector->GetTexture(sector_t::ceiling) == skyflatnum && backsector->GetTexture(sector_t::ceiling) == skyflatnum ?
frefz - realback->GetPlaneTexZF(sector_t::ceiling) : frefz - realback->GetPlaneTexZ(sector_t::ceiling) :
frefz - crefz); frefz - crefz);
} }
else if (!(seg->sidedef->Flags & WALLF_POLYOBJ)) else if (!(seg->sidedef->Flags & WALLF_POLYOBJ))
@ -1621,7 +1621,7 @@ void GLWall::Process(seg_t *seg, sector_t * frontsector, sector_t * backsector)
if (gltexture) if (gltexture)
{ {
DoTexture(RENDERWALL_BOTTOM, seg, (seg->linedef->flags & ML_DONTPEGBOTTOM) > 0, DoTexture(RENDERWALL_BOTTOM, seg, (seg->linedef->flags & ML_DONTPEGBOTTOM) > 0,
realback->GetPlaneTexZF(sector_t::floor), frefz, realback->GetPlaneTexZ(sector_t::floor), frefz,
bfh1, bfh2, ffh1, ffh2, frefz - crefz); bfh1, bfh2, ffh1, ffh2, frefz - crefz);
} }
} }
@ -1648,8 +1648,8 @@ void GLWall::ProcessLowerMiniseg(seg_t *seg, sector_t * frontsector, sector_t *
if (frontsector->GetTexture(sector_t::floor) == skyflatnum) return; if (frontsector->GetTexture(sector_t::floor) == skyflatnum) return;
lightlist = NULL; lightlist = NULL;
float ffh = frontsector->GetPlaneTexZF(sector_t::floor); float ffh = frontsector->GetPlaneTexZ(sector_t::floor);
float bfh = backsector->GetPlaneTexZF(sector_t::floor); float bfh = backsector->GetPlaneTexZ(sector_t::floor);
if (bfh > ffh) if (bfh > ffh)
{ {
this->seg = seg; this->seg = seg;

View file

@ -1081,8 +1081,8 @@ public:
float reflect[2]; float reflect[2];
bool transdoor; // For transparent door hacks bool transdoor; // For transparent door hacks
fixed_t transdoorheight; // for transparent door hacks
int subsectorcount; // list of subsectors int subsectorcount; // list of subsectors
double transdoorheight; // for transparent door hacks
subsector_t ** subsectors; subsector_t ** subsectors;
FPortal * portals[2]; // floor and ceiling portals FPortal * portals[2]; // floor and ceiling portals
FLightNode * lighthead; FLightNode * lighthead;
@ -1094,7 +1094,7 @@ public:
}; };
int vboindex[4]; // VBO indices of the 4 planes this sector uses during rendering int vboindex[4]; // VBO indices of the 4 planes this sector uses during rendering
fixed_t vboheight[2]; // Last calculated height for the 2 planes of this actual sector double vboheight[2]; // Last calculated height for the 2 planes of this actual sector
int vbocount[2]; // Total count of vertices belonging to this sector's planes int vbocount[2]; // Total count of vertices belonging to this sector's planes
float GetReflect(int pos) { return gl_plane_reflection_i? reflect[pos] : 0; } float GetReflect(int pos) { return gl_plane_reflection_i? reflect[pos] : 0; }