- fix softpoly mirrors

This commit is contained in:
Magnus Norddahl 2018-04-22 23:29:39 +02:00
commit 6e77cb4906
7 changed files with 37 additions and 25 deletions

View file

@ -150,7 +150,7 @@ void PolyDrawLinePortal::Render(int portalDepth)
Segments.clear();
Segments.push_back({ angle1, angle2 });*/
PortalViewpoint = PolyRenderer::Instance()->SetupPerspectiveMatrix();
PortalViewpoint = PolyRenderer::Instance()->SetupPerspectiveMatrix(Mirror);
PortalViewpoint.StencilValue = StencilValue;
PortalViewpoint.PortalPlane = portalPlane;
PortalViewpoint.PortalDepth = portalDepth;
@ -248,9 +248,6 @@ void PolyDrawLinePortal::SaveGlobals()
viewpoint.sector = R_PointInSubsector(viewpoint.Pos)->sector;
R_SetViewAngle(viewpoint, viewwindow);
if (Mirror)
PolyTriangleDrawer::ToggleMirror(PolyRenderer::Instance()->Threads.MainThread()->DrawQueue);
}
void PolyDrawLinePortal::RestoreGlobals()
@ -269,7 +266,4 @@ void PolyDrawLinePortal::RestoreGlobals()
}
R_SetViewAngle(viewpoint, viewwindow);
if (Mirror)
PolyTriangleDrawer::ToggleMirror(PolyRenderer::Instance()->Threads.MainThread()->DrawQueue);
}

View file

@ -103,6 +103,7 @@ void RenderPolyScene::RenderSectors()
PolyRenderer::Instance()->Threads.RenderThreadSlices(totalcount, [&](PolyRenderThread *thread)
{
PolyTriangleDrawer::SetCullCCW(thread->DrawQueue, !CurrentViewpoint->Mirror);
PolyTriangleDrawer::SetTransform(thread->DrawQueue, thread->FrameMemory->NewObject<Mat4f>(CurrentViewpoint->WorldToClip));
if (thread != mainthread)
@ -334,6 +335,7 @@ void RenderPolyScene::RenderPortals()
}
Mat4f *transform = thread->FrameMemory->NewObject<Mat4f>(CurrentViewpoint->WorldToClip);
PolyTriangleDrawer::SetCullCCW(thread->DrawQueue, !CurrentViewpoint->Mirror);
PolyTriangleDrawer::SetTransform(thread->DrawQueue, transform);
PolyDrawArgs args;
@ -377,6 +379,7 @@ void RenderPolyScene::RenderTranslucent()
PolyRenderThread *thread = PolyRenderer::Instance()->Threads.MainThread();
Mat4f *transform = thread->FrameMemory->NewObject<Mat4f>(CurrentViewpoint->WorldToClip);
PolyTriangleDrawer::SetCullCCW(thread->DrawQueue, !CurrentViewpoint->Mirror);
PolyTriangleDrawer::SetTransform(thread->DrawQueue, transform);
PolyMaskedCycles.Clock();

View file

@ -63,6 +63,7 @@ public:
PolyClipPlane PortalPlane;
uint32_t StencilValue = 0;
int PortalDepth = 0;
bool Mirror = false;
line_t *PortalEnterLine = nullptr;