Continue render refactor
This commit is contained in:
+19
-15
@@ -59,8 +59,8 @@ preloadRender = do
|
||||
glBindVertexArray wpColVAOname
|
||||
setupVertexAttribPointer wpColVAOname wpVBOname 0 4 8 0
|
||||
setupVertexAttribPointer wpColVAOname wpVBOname 1 4 8 4
|
||||
let wpVAO = VAO{_vaoName = wpVAOname, _vaoVBO = wpVBO, _vaoAttribSizes = [4], _vaoStride = 8}
|
||||
wpColVAO = VAO{_vaoName = wpColVAOname, _vaoVBO = wpVBO, _vaoAttribSizes = [4,4], _vaoStride = 8}
|
||||
let wpVAO = VAO{_vaoName = wpVAOname, _vaoAttribSizes = [4], _vaoStride = 8}
|
||||
wpColVAO = VAO{_vaoName = wpColVAOname, _vaoAttribSizes = [4,4], _vaoStride = 8}
|
||||
-- setup window points VBO, VAOs and shaders
|
||||
winVBOname <- mglCreate glCreateBuffers
|
||||
winVBOptr <- mallocArray (8 * numDrawableWalls)
|
||||
@@ -76,7 +76,7 @@ preloadRender = do
|
||||
setupVertexAttribPointer winColVAOname winVBOname 0 4 8 0
|
||||
setupVertexAttribPointer winColVAOname winVBOname 1 4 8 4
|
||||
let winColVAO = VAO
|
||||
{_vaoName = winColVAOname, _vaoVBO = winVBO, _vaoAttribSizes = [4,4], _vaoStride = 8}
|
||||
{_vaoName = winColVAOname, _vaoAttribSizes = [4,4], _vaoStride = 8}
|
||||
-- setup shape geometry/cap VBO and two VAOs
|
||||
shEBOptr <- mallocArray numDrawableElements
|
||||
shEBOname <- mglCreate glCreateBuffers
|
||||
@@ -109,8 +109,8 @@ preloadRender = do
|
||||
--bindBuffer ElementArrayBuffer $= Just shEBOname
|
||||
glVertexArrayElementBuffer shPosVAOname shEBOname
|
||||
let shPosColVAO = VAO
|
||||
{_vaoName = shPosColVAOname, _vaoVBO = shVBO, _vaoAttribSizes = [3,4], _vaoStride = 7}
|
||||
shPosVAO = VAO{_vaoName = shPosVAOname, _vaoVBO = shVBO, _vaoAttribSizes = [3], _vaoStride = 7}
|
||||
{_vaoName = shPosColVAOname, _vaoAttribSizes = [3,4], _vaoStride = 7}
|
||||
shPosVAO = VAO{_vaoName = shPosVAOname, _vaoAttribSizes = [3], _vaoStride = 7}
|
||||
--setup silhouette edge VAO
|
||||
--shEdgeVAOname <- genObjectName
|
||||
--bindVertexArrayObject $= Just shEdgeVAOname
|
||||
@@ -129,7 +129,7 @@ preloadRender = do
|
||||
nullPtr
|
||||
GL_STREAM_DRAW
|
||||
let silEBO = EBO{_eboName = silEBOname, _eboPtr = silEBOptr}
|
||||
shEdgeVAO = VAO{_vaoName = shEdgeVAOname, _vaoVBO = shVBO, _vaoAttribSizes = [3], _vaoStride = 7}
|
||||
shEdgeVAO = VAO{_vaoName = shEdgeVAOname, _vaoAttribSizes = [3], _vaoStride = 7}
|
||||
-- shEdgeVAO is unecessary?
|
||||
-- lighting shaders
|
||||
lightingWallShadShad <-
|
||||
@@ -152,7 +152,7 @@ preloadRender = do
|
||||
[1] 1
|
||||
EPoints
|
||||
shadowcombineshader <- makeShaderSized "shadow/combine" [vert,geom,frag] [1] 1 EPoints
|
||||
poke (shadVBOptr' shadowlightshader) 1
|
||||
poke (shadVBOptr shadowlightshader) 1
|
||||
|
||||
-- positional shader
|
||||
positionalBlankShad <- makeShader "positional/blank" [vert, frag] [3] ETriangles
|
||||
@@ -164,7 +164,7 @@ preloadRender = do
|
||||
bezierQuadShader <- makeShader "dualTwoD/bezierQuad" [vert, frag] [3, 4, 4] ETriangleStrip
|
||||
cslist <-
|
||||
makeShader "dualTwoD/character" [vert, frag] [3, 4, 2] ETriangles
|
||||
>>= vaddTextureNoFilter "data/texture/charMap.png"
|
||||
>>= (_1 (vaddTextureNoFilter "data/texture/charMap.png"))
|
||||
-- this should really be a 2d texture array
|
||||
basicTweakZShad <- makeShader "dualTwoD/basicTweakZ" [vert, frag] [4, 4] ETriangles
|
||||
-- fullscreen shaders
|
||||
@@ -174,9 +174,9 @@ preloadRender = do
|
||||
fsShad <- makeShaderSized "texture/simple" [vert, frag] [2, 2] 4 ETriangleStrip
|
||||
-- note we directly poke the shader vertex data here
|
||||
-- could possibly use an indirect draw call
|
||||
pokeArray (shadVBOptr' fsShad) $ concat cornerList
|
||||
pokeArray (shadVBOptr fsShad) $ concat cornerList
|
||||
|
||||
let fsshadvao = fsShad ^. shadVAO'
|
||||
let fsshadvao = fsShad ^. _1 . shadVAO'
|
||||
|
||||
bloomBlurShad <- makeShaderUsingVAO "texture/bloomBlur" [vert, frag] ETriangleStrip fsshadvao
|
||||
colorBlurShad <- makeShaderUsingVAO "texture/colorBlur" [vert, frag] ETriangleStrip fsshadvao
|
||||
@@ -199,7 +199,7 @@ preloadRender = do
|
||||
>>= addTextureArray "data/texture/ayene_wooden_floor_transformed.png"
|
||||
-- >>= addTextureArray "data/texture/ayene_wooden_floor.png"
|
||||
-- bind fixed vertex data
|
||||
bindShaderBuffers [fsShad] [4, 4]
|
||||
bindShaderBuffers [snd fsShad] [4, 4]
|
||||
framebuf2 <- setupTextureFramebuffer 800 600
|
||||
framebuf3 <- setupTextureFramebuffer 800 600
|
||||
|
||||
@@ -245,7 +245,7 @@ preloadRender = do
|
||||
return $
|
||||
RenderData
|
||||
{ _pictureShaders = shadV
|
||||
, _shapeShader = bslista{_shadVAO' = shPosColVAO}
|
||||
, _shapeShader = bslista & _1 . shadVAO' .~ shPosColVAO
|
||||
, _shapeEBO = shEBO
|
||||
, _silhouetteEBO = silEBO
|
||||
, _lightingCapShader = lightingCapShad
|
||||
@@ -284,6 +284,9 @@ preloadRender = do
|
||||
, _matUBO = theUBO
|
||||
, _isoMatUBO = isoUBO
|
||||
, _lightsUBO = lightsubo
|
||||
, _vboWalls = wpVBO
|
||||
, _vboWindows = winVBO
|
||||
, _vboShapes = shVBO
|
||||
}
|
||||
|
||||
--------------------end preloadRender
|
||||
@@ -309,8 +312,9 @@ initializeGLState = do
|
||||
glEnable GL_DEPTH_TEST
|
||||
|
||||
cleanUpRenderPreload :: RenderData -> IO ()
|
||||
cleanUpRenderPreload pd = do
|
||||
cleanUpRenderPreload _ = return ()
|
||||
--cleanUpRenderPreload pd = do
|
||||
-- TODO fix this
|
||||
--mapM_ freeShaderPointers $ _pictureShaders pd
|
||||
freeShaderPointers' $ _lightingWallShadShader pd
|
||||
freeShaderPointers' $ _fullscreenShader pd
|
||||
--freeShaderPointers' $ _lightingWallShadShader pd
|
||||
--freeShaderPointers' $ _fullscreenShader pd
|
||||
|
||||
@@ -52,5 +52,5 @@ renderDataResizeUpdate xsize ysize xfull yfull rdata = do
|
||||
"bloomBlur"
|
||||
[(vert, bbVert), (frag, bbFrag')]
|
||||
ETriangleStrip
|
||||
(rdata ^. fullscreenShader . shadVAO')
|
||||
(rdata ^. fullscreenShader . _1 . shadVAO')
|
||||
return (rdata'{_bloomBlurShader = bbShad})
|
||||
|
||||
Reference in New Issue
Block a user