Module reorganisation

This commit is contained in:
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 Dodge.Debug.Flag.Data
import Picture import Picture
import Picture.Render import Picture.Render
import Picture.Preload import Preload.Render
import Picture.Tree import Picture.Tree
import Sound import Sound
import Preload import Preload
import Sound.Data import Sound.Data
import Music import Music
import Data.Preload
import Control.Lens import Control.Lens
--import Foreign (Word32) --import Foreign (Word32)
+5 -5
View File
@@ -1,13 +1,13 @@
{-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE TemplateHaskell #-}
module Preload.Data module Data.Preload
where where
import Control.Lens import Data.Preload.Render
import GHC.Word (Word32)
import Picture.Preload
import Sound.Data import Sound.Data
import Music import Music
import Control.Lens
import GHC.Word (Word32)
data PreloadData a = PreloadData data PreloadData a = PreloadData
{ _renderData :: RenderData { _renderData :: RenderData
, _soundData :: SoundData a , _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.Data.SoundOrigin
import Dodge.Config.Data import Dodge.Config.Data
import Sound import Sound
import Preload.Data import Data.Preload
import Preload.Update import Preload.Update
import Data.Aeson (encodeFile) import Data.Aeson (encodeFile)
+1 -1
View File
@@ -27,7 +27,7 @@ import Dodge.Config.KeyConfig
import Dodge.Item.Attachment.Data import Dodge.Item.Attachment.Data
import Dodge.Item.Data import Dodge.Item.Data
import Dodge.World.Trigger.Data import Dodge.World.Trigger.Data
import Preload.Data import Data.Preload
import Picture.Data import Picture.Data
import Geometry.Data import Geometry.Data
import Sound.Data import Sound.Data
+1 -1
View File
@@ -15,7 +15,7 @@ import Dodge.Render.Picture
import Geometry import Geometry
--import Picture --import Picture
import Picture.Render import Picture.Render
import Picture.Preload import Data.Preload.Render
import Picture.Data import Picture.Data
import Picture.Tree import Picture.Tree
import Shader import Shader
+3 -3
View File
@@ -9,7 +9,7 @@ import Shader
import Shader.Data import Shader.Data
import Shader.Poke import Shader.Poke
--import MatrixHelper --import MatrixHelper
import Picture.Preload import Data.Preload.Render
import Picture.Data import Picture.Data
import Geometry import Geometry
@@ -260,8 +260,8 @@ renderFoldable pdata struct = do
let slist = _pictureShaders pdata let slist = _pictureShaders pdata
-- poke data, returns list of number of vertices for each shader -- poke data, returns list buffer sizes for each shader
is <- F.foldM (pokeShaders slist) struct is <- F.foldM (traverse pokeShader slist) struct
-- the idea of binding many buffers at once, rather than interweaving with draw -- 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 -- 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 ( module Preload
, module Preload.Data
, module Preload.Update , module Preload.Update
) )
where where
import Preload.Data import Data.Preload
import Preload.Update import Preload.Update
import Picture.Preload import Preload.Render
import Sound.Data import Sound.Data
--import Control.Lens --import Control.Lens
@@ -1,8 +1,7 @@
{-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE TemplateHaskell #-}
{-# OPTIONS_GHC -Wno-unused-top-binds #-} {-# OPTIONS_GHC -Wno-unused-top-binds #-}
module Picture.Preload module Preload.Render
( RenderData (..) ( preloadRender
, preloadRender
, cleanUpRenderPreload , cleanUpRenderPreload
) )
where where
@@ -12,31 +11,12 @@ import Shader.Data
import Shader.Compile import Shader.Compile
import Shader.AuxAddition import Shader.AuxAddition
import Geometry.Data import Geometry.Data
import Data.Preload.Render
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 Foreign 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 :: IO RenderData
preloadRender = do preloadRender = do
-- lighting shaders -- lighting shaders
+2 -2
View File
@@ -2,10 +2,10 @@ module Preload.Update
( resizeSpareFBO ( resizeSpareFBO
) )
where where
import Preload.Data import Data.Preload
import Data.Preload.Render
import Graphics.Rendering.OpenGL import Graphics.Rendering.OpenGL
import Foreign import Foreign
import Picture.Preload
resizeSpareFBO resizeSpareFBO
:: Int -- ^ Lightmap width :: Int -- ^ Lightmap width
-2
View File
@@ -50,8 +50,6 @@ drawShader fs i = do
_ -> return () _ -> return ()
drawArrays (_shaderDrawPrimitive fs) 0 (fromIntegral i) drawArrays (_shaderDrawPrimitive fs) 0 (fromIntegral i)
resetShaderUniforms :: [(Program, UniformLocation)] -> IO () resetShaderUniforms :: [(Program, UniformLocation)] -> IO ()
{-# INLINE resetShaderUniforms #-} {-# INLINE resetShaderUniforms #-}
resetShaderUniforms = setShaderUniforms 0 1 (0,0) (2,2) resetShaderUniforms = setShaderUniforms 0 1 (0,0) (2,2)
+7 -11
View File
@@ -1,6 +1,5 @@
module Shader.Poke module Shader.Poke
( pokeShaders ( pokeArrayOff
, pokeArrayOff
, pokeShader , pokeShader
) where ) where
import Shader.Data import Shader.Data
@@ -10,28 +9,25 @@ import Foreign
import Control.Monad import Control.Monad
import qualified Control.Foldl as F import qualified Control.Foldl as F
pokeShaders :: [FullShader] -> F.FoldM IO RenderType [Int]
pokeShaders = traverse pokeShader
pokeShader :: FullShader -> F.FoldM IO RenderType Int 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 where
theVBO = _vaoVBO $ _shaderVAO fs theVBO = _vaoVBO $ _shaderVAO fs
ptr = _vboPointer theVBO ptr = _vboPointer theVBO
stride = sum $ _vboAttribSizes theVBO stride = sum $ _vboAttribSizes theVBO
fls = _shaderPokeStrategy fs fls = _shaderPokeStrategy fs
pokeRender pokeVertices
:: (RenderType -> [[Float]]) :: (RenderType -> [[Float]])
-> Ptr Float -> Ptr Float
-> Int -- ^ stride -> Int -- ^ stride
-> Int -> Int -- ^ number of vertices already poked
-> RenderType -> RenderType
-> IO Int -> 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 pokeVertex :: Ptr Float -> Int -> Int -> [Float] -> IO Int
pokePtrs ptr stride n fs = do pokeVertex ptr stride n fs = do
pokeArrayOff ptr (stride * n) fs pokeArrayOff ptr (stride * n) fs
return $ n + 1 return $ n + 1