mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-11-26 05:51:20 +00:00
- fixed mirrors and reflections in hardware renderer
https://forum.zdoom.org/viewtopic.php?t=60671
This commit is contained in:
parent
36779cf88c
commit
0187b0aa5b
4 changed files with 13 additions and 5 deletions
|
@ -606,10 +606,7 @@ void GLSkyboxPortal::DrawContents(FDrawInfo *di)
|
||||||
di->SetViewArea();
|
di->SetViewArea();
|
||||||
ClearClipper(di);
|
ClearClipper(di);
|
||||||
|
|
||||||
int mapsection = R_PointInSubsector(r_viewpoint.Pos)->mapsection;
|
di->UpdateCurrentMapSection();
|
||||||
|
|
||||||
di->CurrentMapSections.Zero();
|
|
||||||
di->CurrentMapSections.Set(mapsection);
|
|
||||||
|
|
||||||
drawer->DrawScene(di, DM_SKYPORTAL);
|
drawer->DrawScene(di, DM_SKYPORTAL);
|
||||||
portal->mFlags &= ~PORTSF_INSKYBOX;
|
portal->mFlags &= ~PORTSF_INSKYBOX;
|
||||||
|
@ -770,6 +767,8 @@ void GLPlaneMirrorPortal::DrawContents(FDrawInfo *di)
|
||||||
drawer->SetupView(r_viewpoint.Pos.X, r_viewpoint.Pos.Y, r_viewpoint.Pos.Z, r_viewpoint.Angles.Yaw, !!(MirrorFlag & 1), !!(PlaneMirrorFlag & 1));
|
drawer->SetupView(r_viewpoint.Pos.X, r_viewpoint.Pos.Y, r_viewpoint.Pos.Z, r_viewpoint.Angles.Yaw, !!(MirrorFlag & 1), !!(PlaneMirrorFlag & 1));
|
||||||
ClearClipper(di);
|
ClearClipper(di);
|
||||||
|
|
||||||
|
di->UpdateCurrentMapSection();
|
||||||
|
|
||||||
gl_RenderState.SetClipHeight(planez, PlaneMirrorMode < 0 ? -1.f : 1.f);
|
gl_RenderState.SetClipHeight(planez, PlaneMirrorMode < 0 ? -1.f : 1.f);
|
||||||
drawer->DrawScene(di, DM_PORTAL);
|
drawer->DrawScene(di, DM_PORTAL);
|
||||||
gl_RenderState.SetClipHeight(0.f, 0.f);
|
gl_RenderState.SetClipHeight(0.f, 0.f);
|
||||||
|
@ -944,6 +943,8 @@ void GLMirrorPortal::DrawContents(FDrawInfo *di)
|
||||||
angle_t a1 = linedef->v2->GetClipAngle();
|
angle_t a1 = linedef->v2->GetClipAngle();
|
||||||
di->mClipper->SafeAddClipRange(a1,a2);
|
di->mClipper->SafeAddClipRange(a1,a2);
|
||||||
|
|
||||||
|
di->UpdateCurrentMapSection();
|
||||||
|
|
||||||
gl_RenderState.SetClipLine(linedef);
|
gl_RenderState.SetClipLine(linedef);
|
||||||
gl_RenderState.EnableClipLine(true);
|
gl_RenderState.EnableClipLine(true);
|
||||||
drawer->DrawScene(di, DM_PORTAL);
|
drawer->DrawScene(di, DM_PORTAL);
|
||||||
|
|
|
@ -32,7 +32,6 @@ public:
|
||||||
|
|
||||||
angle_t FrustumAngle();
|
angle_t FrustumAngle();
|
||||||
void SetViewMatrix(float vx, float vy, float vz, bool mirror, bool planemirror);
|
void SetViewMatrix(float vx, float vy, float vz, bool mirror, bool planemirror);
|
||||||
void SetViewArea();
|
|
||||||
void SetupView(float vx, float vy, float vz, DAngle va, bool mirror, bool planemirror);
|
void SetupView(float vx, float vy, float vz, DAngle va, bool mirror, bool planemirror);
|
||||||
void SetViewAngle(DAngle viewangle);
|
void SetViewAngle(DAngle viewangle);
|
||||||
void SetProjection(VSMatrix matrix);
|
void SetProjection(VSMatrix matrix);
|
||||||
|
|
|
@ -175,6 +175,8 @@ public:
|
||||||
void PreparePlayerSprites(sector_t * viewsector, area_t in_area);
|
void PreparePlayerSprites(sector_t * viewsector, area_t in_area);
|
||||||
void PrepareTargeterSprites();
|
void PrepareTargeterSprites();
|
||||||
|
|
||||||
|
void UpdateCurrentMapSection();
|
||||||
|
|
||||||
virtual void DrawWall(GLWall *wall, int pass) = 0;
|
virtual void DrawWall(GLWall *wall, int pass) = 0;
|
||||||
virtual void DrawFlat(GLFlat *flat, int pass, bool trans) = 0;
|
virtual void DrawFlat(GLFlat *flat, int pass, bool trans) = 0;
|
||||||
virtual void DrawSprite(GLSprite *sprite, int pass) = 0;
|
virtual void DrawSprite(GLSprite *sprite, int pass) = 0;
|
||||||
|
|
|
@ -86,6 +86,12 @@ void HWDrawInfo::ClearBuffers()
|
||||||
mClipPortal = nullptr;
|
mClipPortal = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void HWDrawInfo::UpdateCurrentMapSection()
|
||||||
|
{
|
||||||
|
const int mapsection = R_PointInSubsector(r_viewpoint.Pos)->mapsection;
|
||||||
|
CurrentMapSections.Set(mapsection);
|
||||||
|
}
|
||||||
|
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
//
|
//
|
||||||
// Adds a subsector plane to a sector's render list
|
// Adds a subsector plane to a sector's render list
|
||||||
|
|
Loading…
Reference in a new issue