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
+4 -1
View File
@@ -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)
+1 -1
View File
@@ -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
+13 -9
View File
@@ -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}