diff --git a/src/Picture/Preload.hs b/src/Picture/Preload.hs index d57b62b32..f0c539087 100644 --- a/src/Picture/Preload.hs +++ b/src/Picture/Preload.hs @@ -1,5 +1,4 @@ {-# LANGUAGE TemplateHaskell #-} ---{-# LANGUAGE Strict #-} module Picture.Preload ( RenderData (..) , preloadRender @@ -26,10 +25,7 @@ data RenderData = RenderData , _wallLightShader :: FullShader (Point2,Point2) , _backgroundShader :: FullShader (Point2,Point2,Point2,Point2) , _fullscreenShader :: FullShader () --- , _wallShader :: FullShader (Point3,Point4) , _listShaders :: [FullShader RenderType] - , _dummyVBO :: BufferObject - , _dummyPtr :: Ptr Float , _spareFBO :: FramebufferObject , _fboTexture :: TextureObject } @@ -39,21 +35,16 @@ makeLenses ''RenderData preloadRender :: IO RenderData preloadRender = do -- compile shader programs - lsShad <- makeShader "lighting/lightmapCircle" [vert,geom,frag] [(0,4)] Points (return . return . flat4) --- fcs <- makeSourcedShader "lightmapCircle" [VertexShader,GeometryShader,FragmentShader] - - bgShad <- makeTextureShader "background" [vert,geom,frag] [(0,4),(1,2)] Points pokeBGStrat - "data/texture/smudgedDirt.png" - +-- lighting shaders + lsShad <- makeShader "lighting/lightmapCircle" [vert,geom,frag] [(0,4)] Points + (return . return . flat4) wsShad <- makeShaderCustomUnis "lighting/wallShadow" [vert,geom,frag] [(0,4)] Points pokeWPStrat ["lightPos","perpMat","facesToDraw"] - wlLightShad <- makeShaderCustomUnis "lighting/lightmapWall" [vert,geom,frag] [(0,4)] Points pokeWPStrat ["lightPos","perpMat","radLum"] --- wlShad <- makeShader "wall" [vert,frag] [(0,3),(1,4)] TriangleStrip pokeWlStrat - +-- 2D draw shaders bslist <- makeShader "twoD/basic" [vert,frag] [(0,3),(1,4)] Triangles pokeTriStrat lslist <- makeShader "twoD/basic" [vert,frag] [(0,3),(1,4)] Lines pokeLineStrat aslist <- makeShader "twoD/arc" [vert,geom,frag] [(0,3),(1,4),(2,4)] Points pokeArcStrat @@ -64,6 +55,7 @@ preloadRender = do [(0,3),(1,4),(2,3)] Points pokeCharStrat "data/texture/charMap.png" +-- fullscreen shader fsShad <- makeShader "fullscreen" [vert,frag] [(0,2),(1,2)] TriangleStrip (const [[[-1, 1],[0,1]] ,[[ 1, 1],[1,1]] @@ -72,15 +64,10 @@ preloadRender = do ] ) n <- F.foldM (pokeShader fsShad) [()] - putStrLn $ show n - ---the following vbo is set up to contain one fixed vertex - dummyvbo <- genObjectName - dummyptr <- mallocArray numDrawableElements - pokeArray dummyptr [0..2000] - bindBuffer ArrayBuffer $= Just dummyvbo - bufferData ArrayBuffer $= (fromIntegral floatSize, dummyptr, StaticDraw) +-- background shader + bgShad <- makeTextureShader "background" [vert,geom,frag] [(0,4),(1,2)] Points pokeBGStrat + "data/texture/smudgedDirt.png" -- input a list of (attribute location, attrib length) pairs -- these will have buffers and pointers created backgroundvao <- setupVAO [(0,4),(1,2)] @@ -91,8 +78,6 @@ preloadRender = do return $ RenderData { _listShaders = [bslist,lslist,cslist,aslist,eslist,bezierQuadShader] - , _dummyVBO = dummyvbo - , _dummyPtr = dummyptr , _lightSourceShader = lsShad , _wallShadowShader = wsShad , _wallLightShader = wlLightShad @@ -134,7 +119,6 @@ cleanUpRenderPreload pd = do freeShaderPointers $ _lightSourceShader pd freeShaderPointers $ _wallShadowShader pd freeShaderPointers $ _backgroundShader pd - free $ _dummyPtr pd {-# INLINE pokeBezQStrat #-} pokeBezQStrat :: RenderType -> [[[Float]]]