Module reorganisation

This commit is contained in:
jgk
2021-06-12 12:21:42 +02:00
parent 11bd97335d
commit f09fe8798e
12 changed files with 56 additions and 54 deletions
+2 -1
View File
@@ -14,12 +14,13 @@ import Dodge.LoadSound
import Dodge.Debug.Flag.Data
import Picture
import Picture.Render
import Picture.Preload
import Preload.Render
import Picture.Tree
import Sound
import Preload
import Sound.Data
import Music
import Data.Preload
import Control.Lens
--import Foreign (Word32)
+5 -5
View File
@@ -1,13 +1,13 @@
{-# LANGUAGE TemplateHaskell #-}
module Preload.Data
module Data.Preload
where
import Control.Lens
import GHC.Word (Word32)
import Picture.Preload
import Data.Preload.Render
import Sound.Data
import Music
import Control.Lens
import GHC.Word (Word32)
data PreloadData a = PreloadData
{ _renderData :: RenderData
, _soundData :: SoundData a
+28
View File
@@ -0,0 +1,28 @@
{-# LANGUAGE TemplateHaskell #-}
{-# OPTIONS_GHC -Wno-unused-top-binds #-}
module Data.Preload.Render
where
import Shader.Data
import Graphics.Rendering.OpenGL hiding (Point,translate,scale,imageHeight)
import Control.Lens
data RenderData = RenderData
{ _lightingFloorShader :: FullShader
, _lightingOccludeShader :: FullShader
, _lightingWallShader :: FullShader
, _wallBlankShader :: FullShader
, _wallTextureShader :: FullShader
, _backgroundShader :: FullShader
--, _textureShader :: FullShader (Point3,Point2)
, _fullscreenShader :: FullShader
, _boxBlurShader :: FullShader
, _grayscaleShader :: FullShader
, _pictureShaders :: [FullShader]
, _spareFBO :: FramebufferObject
, _fboTexture :: TextureObject
, _fboRenderbufferObject :: RenderbufferObject
, _fbo2 :: (FramebufferObject, TextureObject, RenderbufferObject)
, _fbo3 :: (FramebufferObject, TextureObject, RenderbufferObject)
}
makeLenses ''RenderData
+1 -1
View File
@@ -6,7 +6,7 @@ module Dodge.Config.Update
import Dodge.Data.SoundOrigin
import Dodge.Config.Data
import Sound
import Preload.Data
import Data.Preload
import Preload.Update
import Data.Aeson (encodeFile)
+1 -1
View File
@@ -27,7 +27,7 @@ import Dodge.Config.KeyConfig
import Dodge.Item.Attachment.Data
import Dodge.Item.Data
import Dodge.World.Trigger.Data
import Preload.Data
import Data.Preload
import Picture.Data
import Geometry.Data
import Sound.Data
+1 -1
View File
@@ -15,7 +15,7 @@ import Dodge.Render.Picture
import Geometry
--import Picture
import Picture.Render
import Picture.Preload
import Data.Preload.Render
import Picture.Data
import Picture.Tree
import Shader
+3 -3
View File
@@ -9,7 +9,7 @@ import Shader
import Shader.Data
import Shader.Poke
--import MatrixHelper
import Picture.Preload
import Data.Preload.Render
import Picture.Data
import Geometry
@@ -260,8 +260,8 @@ renderFoldable pdata struct = do
let slist = _pictureShaders pdata
-- poke data, returns list of number of vertices for each shader
is <- F.foldM (pokeShaders slist) struct
-- poke data, returns list buffer sizes for each shader
is <- F.foldM (traverse pokeShader slist) struct
-- the idea of binding many buffers at once, rather than interweaving with draw
-- calls, is to prevent opengl from waiting for a draw call to finish
+2 -3
View File
@@ -1,12 +1,11 @@
module Preload
( module Preload
, module Preload.Data
, module Preload.Update
)
where
import Preload.Data
import Data.Preload
import Preload.Update
import Picture.Preload
import Preload.Render
import Sound.Data
--import Control.Lens
@@ -1,8 +1,7 @@
{-# LANGUAGE TemplateHaskell #-}
{-# OPTIONS_GHC -Wno-unused-top-binds #-}
module Picture.Preload
( RenderData (..)
, preloadRender
module Preload.Render
( preloadRender
, cleanUpRenderPreload
)
where
@@ -12,31 +11,12 @@ import Shader.Data
import Shader.Compile
import Shader.AuxAddition
import Geometry.Data
import Data.Preload.Render
import Graphics.Rendering.OpenGL hiding (Point,translate,scale,imageHeight)
import Control.Lens
--import Control.Lens
import Foreign
data RenderData = RenderData
{ _lightingFloorShader :: FullShader
, _lightingOccludeShader :: FullShader
, _lightingWallShader :: FullShader
, _wallBlankShader :: FullShader
, _wallTextureShader :: FullShader
, _backgroundShader :: FullShader
--, _textureShader :: FullShader (Point3,Point2)
, _fullscreenShader :: FullShader
, _boxBlurShader :: FullShader
, _grayscaleShader :: FullShader
, _pictureShaders :: [FullShader]
, _spareFBO :: FramebufferObject
, _fboTexture :: TextureObject
, _fboRenderbufferObject :: RenderbufferObject
, _fbo2 :: (FramebufferObject, TextureObject, RenderbufferObject)
, _fbo3 :: (FramebufferObject, TextureObject, RenderbufferObject)
}
makeLenses ''RenderData
preloadRender :: IO RenderData
preloadRender = do
-- lighting shaders
+2 -2
View File
@@ -2,10 +2,10 @@ module Preload.Update
( resizeSpareFBO
)
where
import Preload.Data
import Data.Preload
import Data.Preload.Render
import Graphics.Rendering.OpenGL
import Foreign
import Picture.Preload
resizeSpareFBO
:: Int -- ^ Lightmap width
-2
View File
@@ -50,8 +50,6 @@ drawShader fs i = do
_ -> return ()
drawArrays (_shaderDrawPrimitive fs) 0 (fromIntegral i)
resetShaderUniforms :: [(Program, UniformLocation)] -> IO ()
{-# INLINE resetShaderUniforms #-}
resetShaderUniforms = setShaderUniforms 0 1 (0,0) (2,2)
+7 -11
View File
@@ -1,6 +1,5 @@
module Shader.Poke
( pokeShaders
, pokeArrayOff
( pokeArrayOff
, pokeShader
) where
import Shader.Data
@@ -10,28 +9,25 @@ import Foreign
import Control.Monad
import qualified Control.Foldl as F
pokeShaders :: [FullShader] -> F.FoldM IO RenderType [Int]
pokeShaders = traverse pokeShader
pokeShader :: FullShader -> F.FoldM IO RenderType Int
pokeShader fs = F.FoldM (pokeRender fls ptr stride) (return 0) return
pokeShader fs = F.FoldM (pokeVertices fls ptr stride) (return 0) return
where
theVBO = _vaoVBO $ _shaderVAO fs
ptr = _vboPointer theVBO
stride = sum $ _vboAttribSizes theVBO
fls = _shaderPokeStrategy fs
pokeRender
pokeVertices
:: (RenderType -> [[Float]])
-> Ptr Float
-> Int -- ^ stride
-> Int
-> Int -- ^ number of vertices already poked
-> RenderType
-> IO Int
pokeRender toFs ptr stride n rt = foldM (pokePtrs ptr stride) n (toFs rt)
pokeVertices toFs ptr stride n rt = foldM (pokeVertex ptr stride) n (toFs rt)
pokePtrs :: Ptr Float -> Int -> Int -> [Float] -> IO Int
pokePtrs ptr stride n fs = do
pokeVertex :: Ptr Float -> Int -> Int -> [Float] -> IO Int
pokeVertex ptr stride n fs = do
pokeArrayOff ptr (stride * n) fs
return $ n + 1