Store picture shaders in mutable vector

This commit is contained in:
jgk
2021-08-12 06:29:36 +02:00
parent 0138f7b940
commit 62af1402ad
4 changed files with 19 additions and 13 deletions
+1 -2
View File
@@ -57,9 +57,8 @@ doSideEffects preData w = do
endTicks <- SDL.ticks endTicks <- SDL.ticks
let lastFrameTicks = _frameTimer preData let lastFrameTicks = _frameTimer preData
shadV <- picShadToMV $ _pictureShaders $ (_renderData preData)
when (_displaySecondsPerFrame $ _debugFlags w) $ void $ renderFoldable when (_displaySecondsPerFrame $ _debugFlags w) $ void $ renderFoldable
shadV (_pictureShaders $ _renderData preData)
(setDepth (-1) (setDepth (-1)
. translate (-0.5) (-0.8) . scale 0.0005 0.0005 . translate (-0.5) (-0.8) . scale 0.0005 0.0005
. text $ "ms/frame " ++ show (endTicks - lastFrameTicks) . text $ "ms/frame " ++ show (endTicks - lastFrameTicks)
+4 -1
View File
@@ -8,6 +8,9 @@ import Shader.Data
import Graphics.Rendering.OpenGL hiding (Point,translate,scale,imageHeight) import Graphics.Rendering.OpenGL hiding (Point,translate,scale,imageHeight)
import Control.Lens import Control.Lens
import qualified Data.Vector.Mutable as MV
import Control.Monad.Primitive
data RenderData = RenderData data RenderData = RenderData
{ _lightingOccludeShader :: FullShader { _lightingOccludeShader :: FullShader
, _lightingWallShader :: FullShader , _lightingWallShader :: FullShader
@@ -23,7 +26,7 @@ data RenderData = RenderData
, _colorBlurShader :: FullShader , _colorBlurShader :: FullShader
, _barrelShader :: FullShader , _barrelShader :: FullShader
, _grayscaleShader :: FullShader , _grayscaleShader :: FullShader
, _pictureShaders :: PicShads VShader , _pictureShaders :: MV.MVector (PrimState IO) VShader
, _fbo2 :: (FramebufferObject, TextureObject) , _fbo2 :: (FramebufferObject, TextureObject)
, _fbo3 :: (FramebufferObject, TextureObject) , _fbo3 :: (FramebufferObject, TextureObject)
, _fboFourth1 :: (FramebufferObject, TextureObject) , _fboFourth1 :: (FramebufferObject, TextureObject)
+1 -1
View File
@@ -77,7 +77,7 @@ doDrawing pdata w = do
then renderTextureWalls pdata nWalls then renderTextureWalls pdata nWalls
else renderBlankWalls pdata nWalls else renderBlankWalls pdata nWalls
shadV <- picShadToMV $ _pictureShaders pdata let shadV = _pictureShaders pdata
renderFoldable shadV $ polysToPic $ foregroundPics w renderFoldable shadV $ polysToPic $ foregroundPics w
layerCounts <- UMV.replicate (6*6) 0 layerCounts <- UMV.replicate (6*6) 0
+13 -9
View File
@@ -15,8 +15,9 @@ import Data.Preload.Render
import Graphics.Rendering.OpenGL hiding (Point,translate,scale,imageHeight) import Graphics.Rendering.OpenGL hiding (Point,translate,scale,imageHeight)
import Graphics.GL.Core43 import Graphics.GL.Core43
--import Control.Lens --import Control.Lens
--import Control.Monad import Control.Monad
import Foreign import Foreign
import qualified Data.Vector.Mutable as MV
numDrawableWalls :: Int numDrawableWalls :: Int
numDrawableWalls = 5000 numDrawableWalls = 5000
@@ -116,15 +117,18 @@ preloadRender = do
-- set the clearColor to have 1 alpha -- set the clearColor to have 1 alpha
clearColor $= Color4 0 0 0 1 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 return $ RenderData
{ _pictureShaders = PicShads { _pictureShaders = shadV
{ _psPoly = bslist
, _psText = cslist
, _psArc = aslist
, _psEll = eslist
, _psBez = bezierQuadShader
, _psPolyz = basicTweakZShad
}
, _lightingSurfaceShader = lightingSurfaceShad , _lightingSurfaceShader = lightingSurfaceShad
, _lightingLineShadowShader = lightingLineShadowShad , _lightingLineShadowShader = lightingLineShadowShad
, _lightingOccludeShader = wsShad {_shaderVAO = wpVAO} , _lightingOccludeShader = wsShad {_shaderVAO = wpVAO}