Continue render refactor
This commit is contained in:
+20
-18
@@ -70,15 +70,17 @@ doDrawing' win pdata u = do
|
||||
wp
|
||||
)
|
||||
( pokeWallsWindowsFloor
|
||||
(shadVBOptr $ _wallTextureShader pdata)
|
||||
(shadVBOptr $ _windowShader pdata)
|
||||
--(shadVBOptr $ _wallTextureShader pdata)
|
||||
--(shadVBOptr $ _windowShader pdata)
|
||||
( pdata ^. vboWalls . vboPtr)
|
||||
( pdata ^. vboWindows . vboPtr)
|
||||
(shadVBOptr $ _textureArrayShader pdata)
|
||||
wallPointsCol
|
||||
windowPoints
|
||||
(w ^. cWorld . floorTiles)
|
||||
)
|
||||
( pokeShape
|
||||
(_vboPtr $ _vaoVBO $ _shadVAO' $ _shapeShader pdata)
|
||||
(_vboPtr $ _vboShapes pdata)
|
||||
(_eboPtr $ _shapeEBO pdata)
|
||||
(_eboPtr $ _silhouetteEBO pdata)
|
||||
(0, 0, 0)
|
||||
@@ -88,10 +90,10 @@ doDrawing' win pdata u = do
|
||||
bindShaderLayers shadV layerCounts
|
||||
uncurry bindShaderBuffers $
|
||||
unzip
|
||||
[ (_wallTextureShader pdata, nWalls)
|
||||
, (_shapeShader pdata, nShapeVs)
|
||||
, (_windowShader pdata, nWins)
|
||||
, (_textureArrayShader pdata, nFls)
|
||||
[ ((pdata ^. vboWalls), nWalls)
|
||||
, (_vboShapes pdata, nShapeVs)
|
||||
, (pdata ^. vboWindows, nWins)
|
||||
, (snd $ _textureArrayShader pdata, nFls)
|
||||
]
|
||||
glNamedBufferSubData
|
||||
(_eboName $ _shapeEBO pdata)
|
||||
@@ -134,15 +136,15 @@ doDrawing' win pdata u = do
|
||||
renderLayer BottomLayer shadV layerCounts
|
||||
--draw object shapes onto base buffer
|
||||
let fs = _shapeShader pdata
|
||||
glUseProgram (_shadName fs)
|
||||
glBindVertexArray $ fs ^. shadVAO' . vaoName
|
||||
glUseProgram (_shadName $ fst fs)
|
||||
glBindVertexArray $ fs ^. _1 . shadVAO' . vaoName
|
||||
glDrawElements
|
||||
(marshalEPrimitiveMode $ _shadPrim' fs)
|
||||
(marshalEPrimitiveMode $ _shadPrim' $ fst fs)
|
||||
(fromIntegral nIndices)
|
||||
GL_UNSIGNED_SHORT
|
||||
nullPtr
|
||||
--draw floor onto base buffer
|
||||
drawShader (_textureArrayShader pdata) nFls
|
||||
drawShader (fst $ _textureArrayShader pdata) nFls
|
||||
--draw lightmap into its own buffer
|
||||
createLightMap
|
||||
cfig
|
||||
@@ -161,7 +163,7 @@ doDrawing' win pdata u = do
|
||||
glBindTexture GL_TEXTURE_2D (pdata ^. fboLighting . _2 . unTO)
|
||||
glEnable GL_BLEND
|
||||
glBlendFunc GL_ZERO GL_ONE_MINUS_SRC_COLOR
|
||||
drawShader (_fullscreenShader pdata) 4
|
||||
drawShader (fst $ _fullscreenShader pdata) 4
|
||||
with GL_COLOR_ATTACHMENT0 $ \ptr ->
|
||||
glInvalidateNamedFramebufferData
|
||||
(pdata ^. fboLighting . _1 . unFBO)
|
||||
@@ -231,7 +233,7 @@ doDrawing' win pdata u = do
|
||||
glBindTexture GL_TEXTURE_2D (_unTO . snd $ _fboLighting pdata)
|
||||
glEnable GL_BLEND
|
||||
glBlendFuncSeparate GL_ZERO GL_ONE_MINUS_SRC_COLOR GL_ZERO GL_ONE
|
||||
drawShader (_fullscreenShader pdata) 4
|
||||
drawShader (fst $ _fullscreenShader pdata) 4
|
||||
glBlendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
|
||||
-- bind base buffer for drawing bloom then clouds
|
||||
glBindFramebuffer GL_FRAMEBUFFER (_unFBO (fst (_fboBase pdata)))
|
||||
@@ -239,11 +241,11 @@ doDrawing' win pdata u = do
|
||||
glEnable GL_BLEND
|
||||
glBlendFunc GL_SRC_ALPHA GL_ONE
|
||||
glBindTexture GL_TEXTURE_2D (_unTO . snd $ _fboHalf1 pdata)
|
||||
drawShader (_fullscreenShader pdata) 4
|
||||
drawShader (fst $ _fullscreenShader pdata) 4
|
||||
glBlendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
|
||||
--draw shadowed clouds onto base buffer
|
||||
glBindTexture GL_TEXTURE_2D (_unTO . fst . snd $ _fboCloud pdata)
|
||||
drawShader (_fullscreenShader pdata) 4
|
||||
drawShader (fst $ _fullscreenShader pdata) 4
|
||||
--set viewport for radial distortion
|
||||
setViewportSize (round winx) (round winy)
|
||||
glDepthFunc GL_ALWAYS
|
||||
@@ -253,13 +255,13 @@ doDrawing' win pdata u = do
|
||||
[] -> do
|
||||
bindTO $ fst $ snd $ _fboBase pdata
|
||||
glBindFramebuffer GL_FRAMEBUFFER 0
|
||||
drawShader (_fullscreenShader pdata) 4
|
||||
drawShader (fst $ _fullscreenShader pdata) 4
|
||||
rds -> do
|
||||
let bindDrawDist :: Distortion -> IO ()
|
||||
bindDrawDist (RadialDistortion (V2 a b) (V2 c d) (V2 e f) g) = do
|
||||
pokeArray (shadVBOptr $ _barrelShader pdata) [a, b, c, d, e, f, g]
|
||||
bindShaderBuffers [_barrelShader pdata] [1]
|
||||
drawShader (_barrelShader pdata) 1
|
||||
bindShaderBuffers [snd $ _barrelShader pdata] [1]
|
||||
drawShader (fst $ _barrelShader pdata) 1
|
||||
fboList =
|
||||
take (length rds - 1) (concat (repeat [fst $ _fbo2 pdata, fst $ _fbo3 pdata]))
|
||||
++ [FBO 0]
|
||||
|
||||
Reference in New Issue
Block a user