From f87b53bbf9e8e5fa3920474f776b12ceaf8f8f8d Mon Sep 17 00:00:00 2001 From: justin Date: Mon, 30 Aug 2021 11:13:23 +0100 Subject: [PATCH] Unify shadow stencil tests, inverts shadow when light source occluded --- src/Render.hs | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/src/Render.hs b/src/Render.hs index 1b229fbcb..778364223 100644 --- a/src/Render.hs +++ b/src/Render.hs @@ -62,8 +62,9 @@ createLightMap pdata lightPoints nWalls nSils nsurfVs = do -- stencil out shadows colorMask $= Color4 Disabled Disabled Disabled Disabled clear [StencilBuffer] - cullFace $= Just Back - stencilOp $= (OpKeep,OpKeep,OpIncr) + cullFace $= Nothing + stencilOpSeparate Front $= (OpKeep,OpKeep,OpIncrWrap) + stencilOpSeparate Back $= (OpKeep,OpKeep,OpDecrWrap) stencilFunc $= (Always, 0, 255) currentProgram $= Just (_shaderProgram $ _lightingOccludeShader pdata) uniform (head $ _shaderCustomUnis $ _lightingOccludeShader pdata) @@ -78,21 +79,11 @@ createLightMap pdata lightPoints nWalls nSils nsurfVs = do drawShader (_lightingLineShadowShader pdata) nSils depthClamp $= Disabled - cullFace $= Just Front - stencilOp $= (OpKeep,OpKeep,OpDecr) - currentProgram $= Just (_shaderProgram $ _lightingOccludeShader pdata) - drawShader (_lightingOccludeShader pdata) nWalls - - --stencilOp $= (OpKeep,OpIncr,OpKeep) - currentProgram $= Just (_shaderProgram $ _lightingLineShadowShader pdata) - depthClamp $= Enabled - drawShader (_lightingLineShadowShader pdata) nSils - depthClamp $= Disabled - -- draw geometry surfaces cullFace $= Just Back --colorMask $= Color4 Disabled Disabled Disabled Enabled colorMask $= Color4 Enabled Enabled Enabled Enabled + stencilOp $= (OpKeep,OpKeep,OpKeep) stencilFunc $= (Equal, 0, 255) currentProgram $= Just (_shaderProgram $ _lightingSurfaceShader pdata) uniform (head $ _shaderCustomUnis $ _lightingSurfaceShader pdata)