- use the worker threads to clear the stencil buffer

This commit is contained in:
Magnus Norddahl 2018-06-10 12:42:19 +02:00
commit de67393b4e
7 changed files with 66 additions and 20 deletions

View file

@ -106,7 +106,10 @@ namespace swrenderer
r_modelscene = r_models && Models.Size() > 0;
if (r_modelscene)
PolyTriangleDrawer::ClearBuffers(viewport->RenderTarget);
{
PolyTriangleDrawer::ResizeBuffers(viewport->RenderTarget);
PolyTriangleDrawer::ClearStencil(MainThread()->DrawQueue, 0);
}
if (r_clearbuffer != 0 || r_debug_draw != 0)
{
@ -271,6 +274,9 @@ namespace swrenderer
thread->OpaquePass->ResetFakingUnderwater(); // [RH] Hack to make windows into underwater areas possible
thread->Portal->SetMainPortal();
if (r_modelscene && thread->MainThread)
PolyTriangleDrawer::ClearStencil(MainThread()->DrawQueue, 0);
PolyTriangleDrawer::SetViewport(thread->DrawQueue, viewwindowx, viewwindowy, viewwidth, viewheight, thread->Viewport->RenderTarget);
// Cull things outside the range seen by this thread
@ -376,7 +382,7 @@ namespace swrenderer
viewactive = true;
viewport->SetViewport(MainThread(), width, height, MainThread()->Viewport->viewwindow.WidescreenRatio);
if (r_modelscene)
PolyTriangleDrawer::ClearBuffers(viewport->RenderTarget);
PolyTriangleDrawer::ResizeBuffers(viewport->RenderTarget);
// Render:
RenderActorView(actor, dontmaplines);