From 62af1402ad882d4f5e0fa9ad8da515e89da95b24 Mon Sep 17 00:00:00 2001 From: jgk Date: Thu, 12 Aug 2021 06:29:36 +0200 Subject: [PATCH] Store picture shaders in mutable vector --- appDodge/Main.hs | 3 +-- src/Data/Preload/Render.hs | 5 ++++- src/Dodge/Render.hs | 2 +- src/Preload/Render.hs | 22 +++++++++++++--------- 4 files changed, 19 insertions(+), 13 deletions(-) diff --git a/appDodge/Main.hs b/appDodge/Main.hs index 63b35f8cc..609350a8f 100644 --- a/appDodge/Main.hs +++ b/appDodge/Main.hs @@ -57,9 +57,8 @@ doSideEffects preData w = do endTicks <- SDL.ticks let lastFrameTicks = _frameTimer preData - shadV <- picShadToMV $ _pictureShaders $ (_renderData preData) when (_displaySecondsPerFrame $ _debugFlags w) $ void $ renderFoldable - shadV + (_pictureShaders $ _renderData preData) (setDepth (-1) . translate (-0.5) (-0.8) . scale 0.0005 0.0005 . text $ "ms/frame " ++ show (endTicks - lastFrameTicks) diff --git a/src/Data/Preload/Render.hs b/src/Data/Preload/Render.hs index e73aeae7b..2c99de49d 100644 --- a/src/Data/Preload/Render.hs +++ b/src/Data/Preload/Render.hs @@ -8,6 +8,9 @@ import Shader.Data import Graphics.Rendering.OpenGL hiding (Point,translate,scale,imageHeight) import Control.Lens +import qualified Data.Vector.Mutable as MV +import Control.Monad.Primitive + data RenderData = RenderData { _lightingOccludeShader :: FullShader , _lightingWallShader :: FullShader @@ -23,7 +26,7 @@ data RenderData = RenderData , _colorBlurShader :: FullShader , _barrelShader :: FullShader , _grayscaleShader :: FullShader - , _pictureShaders :: PicShads VShader + , _pictureShaders :: MV.MVector (PrimState IO) VShader , _fbo2 :: (FramebufferObject, TextureObject) , _fbo3 :: (FramebufferObject, TextureObject) , _fboFourth1 :: (FramebufferObject, TextureObject) diff --git a/src/Dodge/Render.hs b/src/Dodge/Render.hs index e25ac9a57..19323aa4b 100644 --- a/src/Dodge/Render.hs +++ b/src/Dodge/Render.hs @@ -77,7 +77,7 @@ doDrawing pdata w = do then renderTextureWalls pdata nWalls else renderBlankWalls pdata nWalls - shadV <- picShadToMV $ _pictureShaders pdata + let shadV = _pictureShaders pdata renderFoldable shadV $ polysToPic $ foregroundPics w layerCounts <- UMV.replicate (6*6) 0 diff --git a/src/Preload/Render.hs b/src/Preload/Render.hs index f031befc5..5ac4afd38 100644 --- a/src/Preload/Render.hs +++ b/src/Preload/Render.hs @@ -15,8 +15,9 @@ import Data.Preload.Render import Graphics.Rendering.OpenGL hiding (Point,translate,scale,imageHeight) import Graphics.GL.Core43 --import Control.Lens ---import Control.Monad +import Control.Monad import Foreign +import qualified Data.Vector.Mutable as MV numDrawableWalls :: Int numDrawableWalls = 5000 @@ -116,15 +117,18 @@ preloadRender = do -- set the clearColor to have 1 alpha clearColor $= Color4 0 0 0 1 + shadV <- MV.new 6 + zipWithM_ (MV.write shadV) [0..5] + [ bslist -- note the ordering is very important + , basicTweakZShad -- ShadNum + , bezierQuadShader + , cslist + , aslist + , eslist + ] + return $ RenderData - { _pictureShaders = PicShads - { _psPoly = bslist - , _psText = cslist - , _psArc = aslist - , _psEll = eslist - , _psBez = bezierQuadShader - , _psPolyz = basicTweakZShad - } + { _pictureShaders = shadV , _lightingSurfaceShader = lightingSurfaceShad , _lightingLineShadowShader = lightingLineShadowShad , _lightingOccludeShader = wsShad {_shaderVAO = wpVAO}