From 1527ee306902d125952953f6fa482119a33d80b0 Mon Sep 17 00:00:00 2001 From: jgk Date: Sun, 21 Mar 2021 17:34:17 +0100 Subject: [PATCH] Start to create wallFace shader --- src/Picture/Render.hs | 42 +++++++++++++++++++++++++++++------------- 1 file changed, 29 insertions(+), 13 deletions(-) diff --git a/src/Picture/Render.hs b/src/Picture/Render.hs index 106b19b9c..e1b8caf8b 100644 --- a/src/Picture/Render.hs +++ b/src/Picture/Render.hs @@ -31,19 +31,8 @@ import qualified Data.IntMap.Strict as IM import qualified SDL as SDL -renderPicture' :: RenderData -> Float -> Float -> (Float,Float) -> (Float,Float) -> - [(Point2,Point2)] -> [Point4] -> - (Float,Float) -> Picture -> IO (Word32,Word32) -renderPicture' pdata rot zoom (tranx,trany) (winx,winy) wallPoints lightPoints - (viewFromx,viewFromy) pic = do - wallPokeStart <- SDL.ticks - --- setting the depth function to less, instead of lequal, --- seems to stop a lot of unecessary drawing --- of wall shadows when creating the light map - depthFunc $= Just Less - --- set common uniforms +setCommonUniforms :: RenderData -> Float -> Float -> (Float,Float) -> (Float,Float) -> IO () +setCommonUniforms pdata rot zoom (tranx,trany) (winx,winy) = do setShaderUniforms rot zoom (tranx,trany) (winx,winy) ( (extractProgAndUnis $ _lightSourceShader pdata) : (extractProgAndUnis $ _wallShadowShader pdata) @@ -52,6 +41,33 @@ renderPicture' pdata rot zoom (tranx,trany) (winx,winy) wallPoints lightPoints : (map extractProgAndUnis $ _listShaders pdata) ) +createLightMap :: RenderData -> Float -> Float -> (Float,Float) -> (Float,Float) -> + [(Point2,Point2)] -> [Point4] -> + (Float,Float) -> Picture -> IO () +createLightMap pdata rot zoom (tranx,trany) (winx,winy) wallPoints lightPoints + (viewFromx,viewFromy) pic = do + return () + +renderPicture' :: RenderData -> Float -> Float -> (Float,Float) -> (Float,Float) -> + [(Point2,Point2)] -> [Point4] -> + (Float,Float) -> Picture -> IO (Word32,Word32) +renderPicture' pdata rot zoom trans wins wallPoints lightPoints + viewFroms pic = do + setCommonUniforms pdata rot zoom trans wins + renderPicture pdata rot zoom trans wins wallPoints lightPoints viewFroms pic + +renderPicture :: RenderData -> Float -> Float -> (Float,Float) -> (Float,Float) -> + [(Point2,Point2)] -> [Point4] -> + (Float,Float) -> Picture -> IO (Word32,Word32) +renderPicture pdata rot zoom (tranx,trany) (winx,winy) wallPoints lightPoints + (viewFromx,viewFromy) pic = do + wallPokeStart <- SDL.ticks + +-- setting the depth function to less, instead of lequal, +-- seems to stop a lot of unecessary drawing +-- of wall shadows when creating the light map + depthFunc $= Just Less + -- draw lightmap bindFramebuffer Framebuffer $= (_spareFBO pdata)