From 0b1f7f50c3bdccd7dae526afe522a529168c9917 Mon Sep 17 00:00:00 2001 From: jgk Date: Sat, 20 Mar 2021 13:28:39 +0100 Subject: [PATCH] Black out high walls --- shader/lightmapCircle.geom | 8 ++++---- shader/wallShadow.geom | 1 + src/Picture/Preload.hs | 2 +- src/Picture/Render.hs | 3 +++ 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/shader/lightmapCircle.geom b/shader/lightmapCircle.geom index a68259370..a32186b49 100644 --- a/shader/lightmapCircle.geom +++ b/shader/lightmapCircle.geom @@ -16,13 +16,13 @@ void main() cenPosT = vec2 ( (cenPos.x + 1) * 0.5 * winSize.x , (cenPos.y + 1) * 0.5 * winSize.y); - gl_Position = vec4 (cenPos.x + gRad/winSize.x, cenPos.y + gRad/winSize.y, -0.9 , 1); + gl_Position = vec4 (cenPos.x + gRad/winSize.x, cenPos.y + gRad/winSize.y, -0.2 , 1); EmitVertex(); - gl_Position = vec4 (cenPos.x - gRad/winSize.x, cenPos.y + gRad/winSize.y, -0.9 , 1); + gl_Position = vec4 (cenPos.x - gRad/winSize.x, cenPos.y + gRad/winSize.y, -0.2 , 1); EmitVertex(); - gl_Position = vec4 (cenPos.x + gRad/winSize.x, cenPos.y - gRad/winSize.y, -0.9 , 1); + gl_Position = vec4 (cenPos.x + gRad/winSize.x, cenPos.y - gRad/winSize.y, -0.2 , 1); EmitVertex(); - gl_Position = vec4 (cenPos.x - gRad/winSize.x, cenPos.y - gRad/winSize.y, -0.9 , 1); + gl_Position = vec4 (cenPos.x - gRad/winSize.x, cenPos.y - gRad/winSize.y, -0.2 , 1); EmitVertex(); EndPrimitive(); diff --git a/shader/wallShadow.geom b/shader/wallShadow.geom index 98efbb3aa..b98b9b652 100644 --- a/shader/wallShadow.geom +++ b/shader/wallShadow.geom @@ -5,6 +5,7 @@ layout (triangle_strip, max_vertices = 11) out; uniform vec2 lightPos; uniform mat4 perpMat; uniform mat4 worldMat; +uniform float facesToDraw; vec2 lightPosa = ( perpMat * vec4(lightPos,0,1) ).xy; diff --git a/src/Picture/Preload.hs b/src/Picture/Preload.hs index b520ddbd8..bb529bc65 100644 --- a/src/Picture/Preload.hs +++ b/src/Picture/Preload.hs @@ -46,7 +46,7 @@ preloadRender = do "data/texture/smudgedDirt.png" wsShad <- makeShaderCustomUnis "wallShadow" [vert,geom,frag] [(0,4)] Points pokeWPStrat - ["lightPos","perpMat"] + ["lightPos","perpMat","facesToDraw"] wlLightShad <- makeShaderCustomUnis "wallLight" [vert,frag] [(0,3)] TriangleStrip pokeLightWallStrat ["lightPosRadLum"] diff --git a/src/Picture/Render.hs b/src/Picture/Render.hs index 157b2e7a4..940655306 100644 --- a/src/Picture/Render.hs +++ b/src/Picture/Render.hs @@ -74,7 +74,10 @@ renderPicture' pdata rot zoom (tranx,trany) (winx,winy) wallPoints lightPoints ) :: IO (GLmatrix GLfloat) uniform ( (fromJust $ _shaderCustomUnis $ _wallShadowShader pdata) !! 1) $= pmat + uniform ( (fromJust $ _shaderCustomUnis $ _wallShadowShader pdata) !! 2) + $= (0 :: Float) cullFace $= Just Back + cullFace $= Nothing drawShader (_wallShadowShader pdata) nWalls depthMask $= Disabled