Module reorganisation
This commit is contained in:
+2
-1
@@ -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)
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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
@@ -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
@@ -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
|
||||
|
||||
@@ -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
@@ -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,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
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user