First pass deletion, increases perfomance significantly
This commit is contained in:
+6
-77
@@ -21,21 +21,10 @@ import Shaders
|
||||
data RenderData = RenderData
|
||||
{ --_charMap :: Image PixelRGBA8
|
||||
_textures :: [TextureObject]
|
||||
, _basicShader :: (Program, [UniformLocation])
|
||||
, _textShader :: (Program, [UniformLocation])
|
||||
, _circShader :: (Program, [UniformLocation])
|
||||
, _ellipseShader :: (Program, [UniformLocation])
|
||||
, _arcShader :: (Program, [UniformLocation])
|
||||
, _lightmapCircleShader :: (Program, [UniformLocation])
|
||||
, _backShader :: (Program, [UniformLocation])
|
||||
, _wallShadowShader :: (Program, [UniformLocation])
|
||||
, _listShaders :: [FullShader]
|
||||
, _triVAO :: VAO
|
||||
, _lineVAO :: VAO
|
||||
, _textVAO :: VAO
|
||||
, _circVAO :: VAO
|
||||
, _ellipseVAO :: VAO
|
||||
, _arcVAO :: VAO
|
||||
, _backVAO :: VAO
|
||||
, _wallVAO :: VAO
|
||||
, _fadeCircVAO :: VAO
|
||||
@@ -87,18 +76,6 @@ makeTextureShader s shaderlist alocs pm renStrat texturePath = do
|
||||
, _shaderTexture = Just $ ShaderTexture {_textureObject = textureOb}
|
||||
}
|
||||
|
||||
|
||||
mkS :: IO FullShader
|
||||
mkS = do
|
||||
(prog,unis) <- makeSourcedShader "basic" [VertexShader,FragmentShader]
|
||||
trivao <- setupVAO [(0,3),(1,4)]
|
||||
return $ FullShader { _shaderProgram = prog
|
||||
, _shaderUniforms = unis
|
||||
, _shaderVAO = trivao
|
||||
, _shaderPokeStrategy = pokeTriStrat
|
||||
, _shaderDrawPrimitive = Triangles
|
||||
}
|
||||
|
||||
pokeTriStrat (RenderPoly vs) = fmap (\((x,y,z),(r,g,b,a)) -> [[x,y,z],[r,g,b,a]]) vs
|
||||
pokeTriStrat _ = []
|
||||
|
||||
@@ -147,17 +124,6 @@ setupArrayBuffer (aloc,i) = do
|
||||
return vbo
|
||||
|
||||
|
||||
loadTextures :: IO [Image PixelRGBA8]
|
||||
loadTextures = do
|
||||
-- echarMap <- readImage "data/texture/smudgedDirt.png"
|
||||
echarMap <- readImage "data/texture/charMap.png"
|
||||
case echarMap of
|
||||
Left err -> do
|
||||
putStrLn err
|
||||
return []
|
||||
Right charMap ->
|
||||
return [convertRGBA8 charMap]
|
||||
|
||||
bufferOffset :: Integral a => a -> Ptr b
|
||||
bufferOffset = plusPtr nullPtr . fromIntegral
|
||||
|
||||
@@ -168,14 +134,9 @@ frag = FragmentShader
|
||||
preloadRender :: IO RenderData
|
||||
preloadRender = do
|
||||
-- compile shader programs
|
||||
bs <- makeSourcedShader "basic" [VertexShader,FragmentShader]
|
||||
ts <- makeSourcedShader "character" [VertexShader,GeometryShader,FragmentShader]
|
||||
cs <- makeSourcedShader "circle" [VertexShader,GeometryShader,FragmentShader]
|
||||
as <- makeSourcedShader "arc" [VertexShader,GeometryShader,FragmentShader]
|
||||
fcs <- makeSourcedShader "lightmapCircle" [VertexShader,GeometryShader,FragmentShader]
|
||||
bgs <- makeSourcedShader "background" [VertexShader,GeometryShader,FragmentShader]
|
||||
wss <- makeSourcedShader "wallShadow" [VertexShader,GeometryShader,FragmentShader]
|
||||
es <- makeSourcedShader "ellipseInterpolate" [VertexShader,GeometryShader,FragmentShader]
|
||||
|
||||
wssLightPosUniLoc <- GL.uniformLocation (fst wss) "lightPos"
|
||||
|
||||
@@ -194,21 +155,6 @@ preloadRender = do
|
||||
bindBuffer ArrayBuffer $= Just dummyvbo
|
||||
bufferData ArrayBuffer $= (fromIntegral floatSize, dummyptr, StaticDraw)
|
||||
|
||||
-- load charmap as texture
|
||||
-- Right cmap <- readImage "data/texture/smudgedDirt.png"
|
||||
Right cmap <- readImage "data/texture/charMap.png"
|
||||
let tex = convertRGBA8 cmap
|
||||
chartex <- genObjectName
|
||||
textureBinding Texture2D $= Just chartex
|
||||
let texData = V.toList $ imageData tex
|
||||
wtex = fromIntegral $ imageWidth tex
|
||||
htex = fromIntegral $ imageHeight tex
|
||||
withArray texData $ \ptr -> do
|
||||
texImage2D Texture2D NoProxy 0 RGBA8 (TextureSize2D wtex htex) 0
|
||||
(PixelData RGBA UnsignedByte ptr)
|
||||
generateMipmap' Texture2D
|
||||
textureFilter Texture2D $= ((Linear',Just Linear') , Nearest)
|
||||
|
||||
Right cmap' <- readImage "data/texture/smudgedDirt.png"
|
||||
let dirt = convertRGBA8 cmap'
|
||||
dirttex <- genObjectName
|
||||
@@ -226,34 +172,17 @@ preloadRender = do
|
||||
|
||||
-- input a list of (attribute location, attrib length) pairs
|
||||
-- these will have buffers and pointers created
|
||||
trivao <- setupVAO [(0,3),(1,4)]
|
||||
linevao <- setupVAO [(0,3),(1,4)]
|
||||
textvao <- setupVAO [(0,3),(1,4),(2,3)]
|
||||
circvao <- setupVAO [(0,3),(1,4),(2,1)]
|
||||
ellipsevao <- setupVAO [(0,3),(1,4)]
|
||||
arcvao <- setupVAO [(0,3),(1,4),(2,4)]
|
||||
backgroundvao <- setupVAO [(0,4),(1,2)]
|
||||
wallvao <- setupVAO [(0,4),(1,4)]
|
||||
fadecircvao <- setupVAO [(0,4)]
|
||||
|
||||
return $ RenderData
|
||||
{ -- _charMap = convertRGBA8 cmap
|
||||
_textures = [chartex,dirttex]
|
||||
,_basicShader = bs
|
||||
, _textShader = ts
|
||||
, _circShader = cs
|
||||
, _ellipseShader = es
|
||||
, _arcShader = as
|
||||
_textures = [dirttex,dirttex]
|
||||
, _listShaders = [bslist,lslist,cslist,aslist,eslist]
|
||||
, _lightmapCircleShader = fcs
|
||||
, _backShader = bgs
|
||||
, _wallShadowShader = wss
|
||||
, _triVAO = trivao
|
||||
, _textVAO = textvao
|
||||
, _circVAO = circvao
|
||||
, _ellipseVAO = ellipsevao
|
||||
, _arcVAO = arcvao
|
||||
, _lineVAO = linevao
|
||||
, _backVAO = backgroundvao
|
||||
, _wallVAO = wallvao
|
||||
, _fadeCircVAO = fadecircvao
|
||||
@@ -267,9 +196,9 @@ vaoPointers = (\(_,ps,_) -> ps) . unzip3 . _vaoBufferTargets
|
||||
|
||||
cleanUpRenderPreload :: RenderData -> IO ()
|
||||
cleanUpRenderPreload pd = do
|
||||
mapM_ free $ vaoPointers $ _triVAO pd
|
||||
mapM_ free $ vaoPointers $ _textVAO pd
|
||||
mapM_ free $ vaoPointers $ _circVAO pd
|
||||
mapM_ free $ vaoPointers $ _arcVAO pd
|
||||
mapM_ free $ vaoPointers $ _lineVAO pd
|
||||
-- mapM_ free $ vaoPointers $ _triVAO pd
|
||||
-- mapM_ free $ vaoPointers $ _textVAO pd
|
||||
-- mapM_ free $ vaoPointers $ _circVAO pd
|
||||
-- mapM_ free $ vaoPointers $ _arcVAO pd
|
||||
-- mapM_ free $ vaoPointers $ _lineVAO pd
|
||||
free $ _dummyPtr pd
|
||||
|
||||
Reference in New Issue
Block a user