Cleanup
This commit is contained in:
+69
-88
@@ -94,40 +94,14 @@ doDrawing' win pdata u = do
|
||||
(V.fromList $ w ^. cWorld . lWorld . dusts)
|
||||
-- bind wall points, silhouette data, surface geometry
|
||||
bufferShaderLayers shadV pokeCounts
|
||||
mapM_
|
||||
(uncurry bufferPokedVBO)
|
||||
[ (_vboShapes pdata, nShapeVs)
|
||||
-- , (pdata ^. cloudVBO, nCloudVs) should probably do it this way
|
||||
-- eventually
|
||||
]
|
||||
mapM_
|
||||
(uncurry bufferEBO)
|
||||
[-- (_cloudEBO pdata, nCloudIs)
|
||||
(_shapeEBO pdata, nIndices)
|
||||
]
|
||||
bufferPokedVBO (_vboShapes pdata) nShapeVs
|
||||
bufferPokedVBO (pdata ^. winVBO) nWins
|
||||
bufferPokedVBO (pdata ^. wallVBO) trueNWalls
|
||||
bufferPokedVBO (pdata ^. cloudVBO) nCloudVs
|
||||
bufferEBO (_shapeEBO pdata) nIndices
|
||||
bufferEBO (pdata ^. silhouetteEBO) nSilIndices
|
||||
-- set the coordinate uniform ready for drawing elements using world coordinates
|
||||
bufferPerspectiveMatrixUBO cfig (w ^. wCam) (pdata ^. matUBO)
|
||||
glNamedBufferSubData (pdata ^. winVBO . vboName) 0
|
||||
(fromIntegral $ nWins * sizeOf (0::Float) * 8)
|
||||
(pdata ^. winVBO . vboPtr)
|
||||
-- bufferFloatBO function
|
||||
glNamedBufferSubData (pdata ^. wallVBO . vboName) 0
|
||||
(fromIntegral $ trueNWalls * sizeOf (0::Float) * 8)
|
||||
(pdata ^. wallVBO . vboPtr)
|
||||
-- glNamedBufferSubData (pdata ^. vboShapes . vboName) 0
|
||||
-- (fromIntegral $ nShapeVs * shapeVerxSize)
|
||||
-- (pdata ^. vboShapes . vboPtr)
|
||||
glNamedBufferSubData (pdata ^. shapeEBO . uiboName) 0
|
||||
(fromIntegral $ nIndices * (sizeOf (0::GLuint)))
|
||||
(pdata ^. shapeEBO . uiboPtr)
|
||||
bufferEBO (pdata ^. silhouetteEBO) nSilIndices
|
||||
-- withArray [0::Float,0,30,1,1,1,1,1] $
|
||||
-- glNamedBufferSubData (pdata ^. cloudVBO . vboName) 0
|
||||
-- (fromIntegral (sizeOf (0::Float)) * 8)
|
||||
glNamedBufferSubData (pdata ^. cloudVBO . vboName)
|
||||
0
|
||||
(fromIntegral $ 8 * nCloudVs * (sizeOf (0::Float)))
|
||||
(pdata ^. cloudVBO . vboPtr)
|
||||
setViewport _gr_world_res cfig
|
||||
glBindFramebuffer GL_FRAMEBUFFER (pdata ^. fboBase . _1 . unFBO)
|
||||
glDepthMask GL_TRUE
|
||||
@@ -136,11 +110,11 @@ doDrawing' win pdata u = do
|
||||
-- clear depth and stencil buffers
|
||||
glStencilMask 255 -- to alter the entire stencil
|
||||
glClearNamedFramebufferfi
|
||||
(pdata ^. fboBase . _1 . unFBO)
|
||||
GL_DEPTH_STENCIL
|
||||
0
|
||||
1
|
||||
0
|
||||
(pdata ^. fboBase . _1 . unFBO)
|
||||
GL_DEPTH_STENCIL
|
||||
0
|
||||
1
|
||||
0
|
||||
-- draw wall occlusions from the camera's point of view
|
||||
glStencilFunc GL_NOTEQUAL 128 255
|
||||
glStencilOp GL_KEEP GL_KEEP GL_REPLACE
|
||||
@@ -148,7 +122,7 @@ doDrawing' win pdata u = do
|
||||
glCullFace GL_BACK
|
||||
unless (debugOn Remove_LOS cfig) $ do
|
||||
glUseProgram (pdata ^. ceilingStencilShader . shaderUINT)
|
||||
-- glBindVertexArray $ pdata ^. ceilingStencilShader . shaderVAO . vaoName
|
||||
-- glBindVertexArray $ pdata ^. ceilingStencilShader . shaderVAO . vaoName
|
||||
glBindVertexArray $ pdata ^. dummyVAO . vaoName
|
||||
glEnable GL_DEPTH_CLAMP
|
||||
glDrawArrays
|
||||
@@ -168,12 +142,12 @@ doDrawing' win pdata u = do
|
||||
--draw walls onto base buffer
|
||||
glEnable GL_CULL_FACE
|
||||
glCullFace GL_BACK
|
||||
-- glUseProgram (pdata ^. wallShader . shaderUINT)
|
||||
-- glBindVertexArray $ pdata ^. wallShader . shaderVAO . vaoName
|
||||
-- glDrawArrays
|
||||
-- (_unPrimitiveMode $ pdata ^. wallShader . shaderPrimitive)
|
||||
-- 0
|
||||
-- (fromIntegral trueNWalls)
|
||||
-- glUseProgram (pdata ^. wallShader . shaderUINT)
|
||||
-- glBindVertexArray $ pdata ^. wallShader . shaderVAO . vaoName
|
||||
-- glDrawArrays
|
||||
-- (_unPrimitiveMode $ pdata ^. wallShader . shaderPrimitive)
|
||||
-- 0
|
||||
-- (fromIntegral trueNWalls)
|
||||
glUseProgram (pdata ^. pullWallShader . shaderUINT)
|
||||
--glBindVertexArray $ pdata ^. dummyVAO . vaoName
|
||||
glDrawArrays GL_TRIANGLES 0 (fromIntegral trueNWalls * 6)
|
||||
@@ -256,11 +230,11 @@ doDrawing' win pdata u = do
|
||||
glBindVertexArray $ pdata ^. cloudShader . shaderVAO . vaoName
|
||||
glDrawArrays GL_TRIANGLES 0 (fromIntegral nCloudVs * 6)
|
||||
--glDrawArrays GL_TRIANGLES 0 6
|
||||
-- glDrawElements
|
||||
-- (pdata ^. cloudShader . shaderPrimitive . unPrimitiveMode)
|
||||
-- (fromIntegral nCloudIs)
|
||||
-- GL_UNSIGNED_INT
|
||||
-- nullPtr
|
||||
-- glDrawElements
|
||||
-- (pdata ^. cloudShader . shaderPrimitive . unPrimitiveMode)
|
||||
-- (fromIntegral nCloudIs)
|
||||
-- GL_UNSIGNED_INT
|
||||
-- nullPtr
|
||||
glDepthMask GL_TRUE
|
||||
|
||||
--setup downscale viewport for blurring bloom
|
||||
@@ -273,15 +247,18 @@ doDrawing' win pdata u = do
|
||||
-- this all needs more tuning + more thought
|
||||
-- a fade effect would be cool, so not to fully reset last frames bloom
|
||||
-- buffers...
|
||||
-- withArray [0, 0, 0, 0] $
|
||||
-- glClearNamedFramebufferfv (pdata ^. fboHalf1 . _1 . unFBO) GL_COLOR 0
|
||||
-- withArray [0, 0, 0, 0] $
|
||||
-- glClearNamedFramebufferfv (pdata ^. fboHalf2 . _1 . unFBO) GL_COLOR 0
|
||||
-- glBlendFunc GL_ONE GL_ONE_MINUS_SRC_ALPHA
|
||||
-- withArray [0, 0, 0, 0] $
|
||||
-- glClearNamedFramebufferfv (pdata ^. fboHalf1 . _1 . unFBO) GL_COLOR 0
|
||||
-- withArray [0, 0, 0, 0] $
|
||||
-- glClearNamedFramebufferfv (pdata ^. fboHalf2 . _1 . unFBO) GL_COLOR 0
|
||||
-- glBlendFunc GL_ONE GL_ONE_MINUS_SRC_ALPHA
|
||||
drawShader (_bloomBlurShader pdata) 4
|
||||
when (cfig ^. gr_bloom) $ do
|
||||
replicateM_ 2 $ pingPongBetween
|
||||
(_fboHalf1 pdata) (_fboHalf2 pdata) (_bloomBlurShader pdata)
|
||||
replicateM_ 2 $
|
||||
pingPongBetween
|
||||
(_fboHalf1 pdata)
|
||||
(_fboHalf2 pdata)
|
||||
(_bloomBlurShader pdata)
|
||||
glEnable GL_BLEND
|
||||
setViewport _gr_world_res cfig
|
||||
--draw clouds onto cloud buffer
|
||||
@@ -302,20 +279,20 @@ doDrawing' win pdata u = do
|
||||
glBindVertexArray $ pdata ^. cloudShader . shaderVAO . vaoName
|
||||
glDrawArrays GL_TRIANGLES 0 (fromIntegral nCloudVs * 6)
|
||||
--glDrawArrays GL_TRIANGLES 0 6
|
||||
---- glDrawElements
|
||||
---- (pdata ^. cloudShader . shaderPrimitive . unPrimitiveMode)
|
||||
---- (fromIntegral nCloudIs)
|
||||
---- GL_UNSIGNED_INT
|
||||
---- nullPtr
|
||||
-- glEnable GL_CULL_FACE
|
||||
-- glEnable GL_DEPTH_CLAMP
|
||||
-- glCullFace GL_BACK
|
||||
---- drawShader (_windowShader pdata) nWins
|
||||
-- glDisable GL_DEPTH_CLAMP
|
||||
-- glDisable GL_CULL_FACE
|
||||
---- glDrawElements
|
||||
---- (pdata ^. cloudShader . shaderPrimitive . unPrimitiveMode)
|
||||
---- (fromIntegral nCloudIs)
|
||||
---- GL_UNSIGNED_INT
|
||||
---- nullPtr
|
||||
-- glEnable GL_CULL_FACE
|
||||
-- glEnable GL_DEPTH_CLAMP
|
||||
-- glCullFace GL_BACK
|
||||
---- drawShader (_windowShader pdata) nWins
|
||||
-- glDisable GL_DEPTH_CLAMP
|
||||
-- glDisable GL_CULL_FACE
|
||||
when (_gr_cloud_shadows cfig) $ do
|
||||
----render transparency depths
|
||||
-- glDepthMask GL_TRUE
|
||||
-- glDepthMask GL_TRUE
|
||||
glDepthFunc GL_ALWAYS
|
||||
glDisable GL_BLEND
|
||||
withArray [GL_NONE, GL_COLOR_ATTACHMENT1, GL_COLOR_ATTACHMENT2] $
|
||||
@@ -333,7 +310,7 @@ doDrawing' win pdata u = do
|
||||
glBlendFunci 2 GL_SRC_ALPHA GL_ONE
|
||||
glUseProgram (pdata ^. cloudShader . shaderUINT)
|
||||
glBindVertexArray $ pdata ^. cloudShader . shaderVAO . vaoName
|
||||
-- glDepthMask GL_TRUE
|
||||
-- glDepthMask GL_TRUE
|
||||
glDrawArrays GL_TRIANGLES 0 (fromIntegral nCloudVs * 6)
|
||||
--glDrawArrays GL_TRIANGLES 0 6
|
||||
----glDrawElements
|
||||
@@ -342,12 +319,12 @@ doDrawing' win pdata u = do
|
||||
---- GL_UNSIGNED_INT
|
||||
---- nullPtr
|
||||
---
|
||||
-- glEnable GL_CULL_FACE
|
||||
-- glEnable GL_DEPTH_CLAMP
|
||||
-- glCullFace GL_BACK
|
||||
---- drawShader (_windowShader pdata) nWins
|
||||
-- glDisable GL_DEPTH_CLAMP
|
||||
-- glDisable GL_CULL_FACE
|
||||
-- glEnable GL_CULL_FACE
|
||||
-- glEnable GL_DEPTH_CLAMP
|
||||
-- glCullFace GL_BACK
|
||||
---- drawShader (_windowShader pdata) nWins
|
||||
-- glDisable GL_DEPTH_CLAMP
|
||||
-- glDisable GL_CULL_FACE
|
||||
-- drawShader (_windowShader pdata) nWins
|
||||
glBindFramebuffer GL_FRAMEBUFFER (pdata ^. fboPos . _1 . unFBO)
|
||||
withArray [0, 0, 0, 0] $ \ptr ->
|
||||
@@ -386,8 +363,8 @@ doDrawing' win pdata u = do
|
||||
glDepthFunc GL_LEQUAL
|
||||
glCullFace GL_BACK
|
||||
glDisable GL_BLEND
|
||||
-- glDepthFunc GL_ALWAYS
|
||||
-- glDisable GL_CULL_FACE
|
||||
-- glDepthFunc GL_ALWAYS
|
||||
-- glDisable GL_CULL_FACE
|
||||
glUseProgram $ pdata ^. windowPullShader . shaderUINT
|
||||
glBindVertexArray $ pdata ^. dummyVAO . vaoName
|
||||
glDrawArrays GL_TRIANGLES 0 (fromIntegral nWins * 6)
|
||||
@@ -408,17 +385,16 @@ doDrawing' win pdata u = do
|
||||
drawShader (_fullscreenShader pdata) 4
|
||||
glBlendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
|
||||
|
||||
|
||||
-- bind base buffer for drawing clouds and bloom
|
||||
--glBindFramebuffer GL_FRAMEBUFFER (_unFBO (fst (_fboBase pdata)))
|
||||
glBindFramebuffer GL_FRAMEBUFFER (pdata ^. fboBase . _1 . unFBO)
|
||||
|
||||
-- --draw shadowed clouds onto base buffer
|
||||
-- glBindTextureUnit 0 (pdata ^. fboCloud . _2 . _1 . unTO)
|
||||
-- drawShader (_fullscreenShader pdata) 4
|
||||
-- --draw shadowed clouds onto base buffer
|
||||
-- glBindTextureUnit 0 (pdata ^. fboCloud . _2 . _1 . unTO)
|
||||
-- drawShader (_fullscreenShader pdata) 4
|
||||
|
||||
glBlendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
|
||||
-- --draw windows onto base buffer
|
||||
-- --draw windows onto base buffer
|
||||
glBlendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
|
||||
glBindTextureUnit 0 (pdata ^. fboWindow . _2 . _1 . unTO)
|
||||
glBindTextureUnit 1 (pdata ^. fboWindow . _2 . _2 . unTO)
|
||||
@@ -433,8 +409,7 @@ doDrawing' win pdata u = do
|
||||
--glBlendFunc GL_ONE GL_ONE
|
||||
glBindTextureUnit 0 (_unTO . snd $ _fboHalf1 pdata)
|
||||
drawShader (_fullscreenShader pdata) 4
|
||||
-- glBlendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
|
||||
|
||||
-- glBlendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
|
||||
|
||||
--set viewport for radial distortion
|
||||
--setViewportSize (round winx) (round winy)
|
||||
@@ -479,10 +454,16 @@ doDrawing' win pdata u = do
|
||||
SDL.glSwapWindow win
|
||||
|
||||
bufferPerspectiveMatrixUBO :: Config -> Camera -> GLuint -> IO ()
|
||||
bufferPerspectiveMatrixUBO cfig cam uboid = withArray
|
||||
(perspectiveMatrixb (cam ^. camRot) (cam ^. camZoom) (cam ^. camCenter)
|
||||
(V2 (windowXFloat cfig) (windowYFloat cfig)) (cam ^. camViewFrom))
|
||||
$ glNamedBufferSubData uboid 0 64
|
||||
bufferPerspectiveMatrixUBO cfig cam uboid =
|
||||
withArray
|
||||
( perspectiveMatrixb
|
||||
(cam ^. camRot)
|
||||
(cam ^. camZoom)
|
||||
(cam ^. camCenter)
|
||||
(V2 (windowXFloat cfig) (windowYFloat cfig))
|
||||
(cam ^. camViewFrom)
|
||||
)
|
||||
$ glNamedBufferSubData uboid 0 64
|
||||
|
||||
getDistortions :: Config -> World -> [Distortion]
|
||||
getDistortions cfig w
|
||||
|
||||
Reference in New Issue
Block a user