From 06a92e70ee23fdef22c6754817542c7e6b34ca21 Mon Sep 17 00:00:00 2001 From: jgk Date: Fri, 25 Jun 2021 03:01:18 +0200 Subject: [PATCH] Initial working prototype of general lighting surfaces --- src/Picture/Render.hs | 20 ++++++++++++++++++-- src/Preload/Render.hs | 2 +- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/Picture/Render.hs b/src/Picture/Render.hs index 911274384..3eb8b1720 100644 --- a/src/Picture/Render.hs +++ b/src/Picture/Render.hs @@ -100,6 +100,15 @@ createLightMap pdata resDiv wallPoints lightPoints (viewFromx,viewFromy) _ = do -- bind buffer for floor light circle let lightPtr = _vboPointer $ _vaoVBO $ _shaderVAO $ _lightingFloorShader pdata pokeFourOff lightPtr 0 (x,y,r,lum) + bindShaderBuffers [_lightingFloorShader pdata] [1] + + nsurfVs <- F.foldM (pokeShader (_lightingSurfaceShader pdata)) [Render3 + [(0,0,0.1) + ,(500,0,0.1) + ,(-500,500,0.1) + ] ] + bindShaderBuffers [_lightingSurfaceShader pdata] [nsurfVs] + -- stencil out walls colorMask $= Color4 Disabled Disabled Disabled Disabled clear [StencilBuffer] @@ -116,9 +125,16 @@ createLightMap pdata resDiv wallPoints lightPoints (viewFromx,viewFromy) _ = do -- draw floor light circles cullFace $= Nothing colorMask $= Color4 Disabled Disabled Disabled Enabled - bindShaderBuffers [_lightingFloorShader pdata] [1] stencilFunc $= (Equal, 0, 255) - drawShader (_lightingFloorShader pdata) 1 +-- drawShader (_lightingFloorShader pdata) 1 +-- draw floor surface + currentProgram $= Just (_shaderProgram $ _lightingSurfaceShader pdata) + uniform (head $ _shaderCustomUnis $ _lightingSurfaceShader pdata) + $= Vector3 x y z + uniform (_shaderCustomUnis (_lightingSurfaceShader pdata) !! 1) + $= Vector2 r lum + drawShader (_lightingSurfaceShader pdata) nWallLights + -- draw wall light "circles" currentProgram $= Just (_shaderProgram $ _lightingWallShader pdata) uniform (head $ _shaderCustomUnis $ _lightingWallShader pdata) diff --git a/src/Preload/Render.hs b/src/Preload/Render.hs index 5e04721c3..2e6e9780c 100644 --- a/src/Preload/Render.hs +++ b/src/Preload/Render.hs @@ -34,7 +34,7 @@ preloadRender = do <- makeShader "lighting/wall" [vert,geom,frag] [4] Points pokeWPStrat >>= addUniforms ["lightPos","radLum"] lightingSurfaceShad - <- makeShader "lighting/surface" [vert,frag] [3] Points poke3 + <- makeShader "lighting/surface" [vert,frag] [3] Triangles poke3 >>= addUniforms ["lightPos","radLum"] -- 2D draw shaders bslist <- makeShader "twoD/basic" [vert,frag] [3,4] Triangles pokeTriStrat