From a63ab2444733ffd039f4609982256142cf724600 Mon Sep 17 00:00:00 2001 From: StapleButter Date: Fri, 26 May 2017 04:00:15 +0200 Subject: fix crapoed shadows --- src/GPU3D_Soft.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'src/GPU3D_Soft.cpp') diff --git a/src/GPU3D_Soft.cpp b/src/GPU3D_Soft.cpp index d022e8a..fe97b5f 100644 --- a/src/GPU3D_Soft.cpp +++ b/src/GPU3D_Soft.cpp @@ -38,6 +38,7 @@ u32 AttrBuffer[256*192]; // bit30: translucent flag u8 StencilBuffer[256*2]; +bool PrevIsShadowMask; // threading @@ -84,6 +85,8 @@ void Reset() memset(DepthBuffer, 0, 256*192 * 4); memset(AttrBuffer, 0, 256*192 * 4); + PrevIsShadowMask = false; + // TODO: make it configurable if (!RenderThreadRunning) { @@ -803,9 +806,11 @@ void RenderPolygonScanline(RendererPolygon* rp, s32 y) else fnDepthTest = DepthTest; - if (polygon->ClearStencil) + if (polygon->IsShadowMask && !PrevIsShadowMask) memset(&StencilBuffer[256 * (y&0x1)], 0, 256); + PrevIsShadowMask = polygon->IsShadowMask; + if (polygon->YTop != polygon->YBottom) { if (y >= polygon->Vertices[rp->NextVL]->FinalPosition[1] && rp->CurVL != polygon->VBottom) -- cgit v1.2.3