Cleanup
This commit is contained in:
+69
-88
@@ -94,40 +94,14 @@ doDrawing' win pdata u = do
|
|||||||
(V.fromList $ w ^. cWorld . lWorld . dusts)
|
(V.fromList $ w ^. cWorld . lWorld . dusts)
|
||||||
-- bind wall points, silhouette data, surface geometry
|
-- bind wall points, silhouette data, surface geometry
|
||||||
bufferShaderLayers shadV pokeCounts
|
bufferShaderLayers shadV pokeCounts
|
||||||
mapM_
|
bufferPokedVBO (_vboShapes pdata) nShapeVs
|
||||||
(uncurry bufferPokedVBO)
|
bufferPokedVBO (pdata ^. winVBO) nWins
|
||||||
[ (_vboShapes pdata, nShapeVs)
|
bufferPokedVBO (pdata ^. wallVBO) trueNWalls
|
||||||
-- , (pdata ^. cloudVBO, nCloudVs) should probably do it this way
|
bufferPokedVBO (pdata ^. cloudVBO) nCloudVs
|
||||||
-- eventually
|
bufferEBO (_shapeEBO pdata) nIndices
|
||||||
]
|
bufferEBO (pdata ^. silhouetteEBO) nSilIndices
|
||||||
mapM_
|
|
||||||
(uncurry bufferEBO)
|
|
||||||
[-- (_cloudEBO pdata, nCloudIs)
|
|
||||||
(_shapeEBO pdata, nIndices)
|
|
||||||
]
|
|
||||||
-- set the coordinate uniform ready for drawing elements using world coordinates
|
-- set the coordinate uniform ready for drawing elements using world coordinates
|
||||||
bufferPerspectiveMatrixUBO cfig (w ^. wCam) (pdata ^. matUBO)
|
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
|
setViewport _gr_world_res cfig
|
||||||
glBindFramebuffer GL_FRAMEBUFFER (pdata ^. fboBase . _1 . unFBO)
|
glBindFramebuffer GL_FRAMEBUFFER (pdata ^. fboBase . _1 . unFBO)
|
||||||
glDepthMask GL_TRUE
|
glDepthMask GL_TRUE
|
||||||
@@ -136,11 +110,11 @@ doDrawing' win pdata u = do
|
|||||||
-- clear depth and stencil buffers
|
-- clear depth and stencil buffers
|
||||||
glStencilMask 255 -- to alter the entire stencil
|
glStencilMask 255 -- to alter the entire stencil
|
||||||
glClearNamedFramebufferfi
|
glClearNamedFramebufferfi
|
||||||
(pdata ^. fboBase . _1 . unFBO)
|
(pdata ^. fboBase . _1 . unFBO)
|
||||||
GL_DEPTH_STENCIL
|
GL_DEPTH_STENCIL
|
||||||
0
|
0
|
||||||
1
|
1
|
||||||
0
|
0
|
||||||
-- draw wall occlusions from the camera's point of view
|
-- draw wall occlusions from the camera's point of view
|
||||||
glStencilFunc GL_NOTEQUAL 128 255
|
glStencilFunc GL_NOTEQUAL 128 255
|
||||||
glStencilOp GL_KEEP GL_KEEP GL_REPLACE
|
glStencilOp GL_KEEP GL_KEEP GL_REPLACE
|
||||||
@@ -148,7 +122,7 @@ doDrawing' win pdata u = do
|
|||||||
glCullFace GL_BACK
|
glCullFace GL_BACK
|
||||||
unless (debugOn Remove_LOS cfig) $ do
|
unless (debugOn Remove_LOS cfig) $ do
|
||||||
glUseProgram (pdata ^. ceilingStencilShader . shaderUINT)
|
glUseProgram (pdata ^. ceilingStencilShader . shaderUINT)
|
||||||
-- glBindVertexArray $ pdata ^. ceilingStencilShader . shaderVAO . vaoName
|
-- glBindVertexArray $ pdata ^. ceilingStencilShader . shaderVAO . vaoName
|
||||||
glBindVertexArray $ pdata ^. dummyVAO . vaoName
|
glBindVertexArray $ pdata ^. dummyVAO . vaoName
|
||||||
glEnable GL_DEPTH_CLAMP
|
glEnable GL_DEPTH_CLAMP
|
||||||
glDrawArrays
|
glDrawArrays
|
||||||
@@ -168,12 +142,12 @@ doDrawing' win pdata u = do
|
|||||||
--draw walls onto base buffer
|
--draw walls onto base buffer
|
||||||
glEnable GL_CULL_FACE
|
glEnable GL_CULL_FACE
|
||||||
glCullFace GL_BACK
|
glCullFace GL_BACK
|
||||||
-- glUseProgram (pdata ^. wallShader . shaderUINT)
|
-- glUseProgram (pdata ^. wallShader . shaderUINT)
|
||||||
-- glBindVertexArray $ pdata ^. wallShader . shaderVAO . vaoName
|
-- glBindVertexArray $ pdata ^. wallShader . shaderVAO . vaoName
|
||||||
-- glDrawArrays
|
-- glDrawArrays
|
||||||
-- (_unPrimitiveMode $ pdata ^. wallShader . shaderPrimitive)
|
-- (_unPrimitiveMode $ pdata ^. wallShader . shaderPrimitive)
|
||||||
-- 0
|
-- 0
|
||||||
-- (fromIntegral trueNWalls)
|
-- (fromIntegral trueNWalls)
|
||||||
glUseProgram (pdata ^. pullWallShader . shaderUINT)
|
glUseProgram (pdata ^. pullWallShader . shaderUINT)
|
||||||
--glBindVertexArray $ pdata ^. dummyVAO . vaoName
|
--glBindVertexArray $ pdata ^. dummyVAO . vaoName
|
||||||
glDrawArrays GL_TRIANGLES 0 (fromIntegral trueNWalls * 6)
|
glDrawArrays GL_TRIANGLES 0 (fromIntegral trueNWalls * 6)
|
||||||
@@ -256,11 +230,11 @@ doDrawing' win pdata u = do
|
|||||||
glBindVertexArray $ pdata ^. cloudShader . shaderVAO . vaoName
|
glBindVertexArray $ pdata ^. cloudShader . shaderVAO . vaoName
|
||||||
glDrawArrays GL_TRIANGLES 0 (fromIntegral nCloudVs * 6)
|
glDrawArrays GL_TRIANGLES 0 (fromIntegral nCloudVs * 6)
|
||||||
--glDrawArrays GL_TRIANGLES 0 6
|
--glDrawArrays GL_TRIANGLES 0 6
|
||||||
-- glDrawElements
|
-- glDrawElements
|
||||||
-- (pdata ^. cloudShader . shaderPrimitive . unPrimitiveMode)
|
-- (pdata ^. cloudShader . shaderPrimitive . unPrimitiveMode)
|
||||||
-- (fromIntegral nCloudIs)
|
-- (fromIntegral nCloudIs)
|
||||||
-- GL_UNSIGNED_INT
|
-- GL_UNSIGNED_INT
|
||||||
-- nullPtr
|
-- nullPtr
|
||||||
glDepthMask GL_TRUE
|
glDepthMask GL_TRUE
|
||||||
|
|
||||||
--setup downscale viewport for blurring bloom
|
--setup downscale viewport for blurring bloom
|
||||||
@@ -273,15 +247,18 @@ doDrawing' win pdata u = do
|
|||||||
-- this all needs more tuning + more thought
|
-- this all needs more tuning + more thought
|
||||||
-- a fade effect would be cool, so not to fully reset last frames bloom
|
-- a fade effect would be cool, so not to fully reset last frames bloom
|
||||||
-- buffers...
|
-- buffers...
|
||||||
-- withArray [0, 0, 0, 0] $
|
-- withArray [0, 0, 0, 0] $
|
||||||
-- glClearNamedFramebufferfv (pdata ^. fboHalf1 . _1 . unFBO) GL_COLOR 0
|
-- glClearNamedFramebufferfv (pdata ^. fboHalf1 . _1 . unFBO) GL_COLOR 0
|
||||||
-- withArray [0, 0, 0, 0] $
|
-- withArray [0, 0, 0, 0] $
|
||||||
-- glClearNamedFramebufferfv (pdata ^. fboHalf2 . _1 . unFBO) GL_COLOR 0
|
-- glClearNamedFramebufferfv (pdata ^. fboHalf2 . _1 . unFBO) GL_COLOR 0
|
||||||
-- glBlendFunc GL_ONE GL_ONE_MINUS_SRC_ALPHA
|
-- glBlendFunc GL_ONE GL_ONE_MINUS_SRC_ALPHA
|
||||||
drawShader (_bloomBlurShader pdata) 4
|
drawShader (_bloomBlurShader pdata) 4
|
||||||
when (cfig ^. gr_bloom) $ do
|
when (cfig ^. gr_bloom) $ do
|
||||||
replicateM_ 2 $ pingPongBetween
|
replicateM_ 2 $
|
||||||
(_fboHalf1 pdata) (_fboHalf2 pdata) (_bloomBlurShader pdata)
|
pingPongBetween
|
||||||
|
(_fboHalf1 pdata)
|
||||||
|
(_fboHalf2 pdata)
|
||||||
|
(_bloomBlurShader pdata)
|
||||||
glEnable GL_BLEND
|
glEnable GL_BLEND
|
||||||
setViewport _gr_world_res cfig
|
setViewport _gr_world_res cfig
|
||||||
--draw clouds onto cloud buffer
|
--draw clouds onto cloud buffer
|
||||||
@@ -302,20 +279,20 @@ doDrawing' win pdata u = do
|
|||||||
glBindVertexArray $ pdata ^. cloudShader . shaderVAO . vaoName
|
glBindVertexArray $ pdata ^. cloudShader . shaderVAO . vaoName
|
||||||
glDrawArrays GL_TRIANGLES 0 (fromIntegral nCloudVs * 6)
|
glDrawArrays GL_TRIANGLES 0 (fromIntegral nCloudVs * 6)
|
||||||
--glDrawArrays GL_TRIANGLES 0 6
|
--glDrawArrays GL_TRIANGLES 0 6
|
||||||
---- glDrawElements
|
---- glDrawElements
|
||||||
---- (pdata ^. cloudShader . shaderPrimitive . unPrimitiveMode)
|
---- (pdata ^. cloudShader . shaderPrimitive . unPrimitiveMode)
|
||||||
---- (fromIntegral nCloudIs)
|
---- (fromIntegral nCloudIs)
|
||||||
---- GL_UNSIGNED_INT
|
---- GL_UNSIGNED_INT
|
||||||
---- nullPtr
|
---- nullPtr
|
||||||
-- glEnable GL_CULL_FACE
|
-- glEnable GL_CULL_FACE
|
||||||
-- glEnable GL_DEPTH_CLAMP
|
-- glEnable GL_DEPTH_CLAMP
|
||||||
-- glCullFace GL_BACK
|
-- glCullFace GL_BACK
|
||||||
---- drawShader (_windowShader pdata) nWins
|
---- drawShader (_windowShader pdata) nWins
|
||||||
-- glDisable GL_DEPTH_CLAMP
|
-- glDisable GL_DEPTH_CLAMP
|
||||||
-- glDisable GL_CULL_FACE
|
-- glDisable GL_CULL_FACE
|
||||||
when (_gr_cloud_shadows cfig) $ do
|
when (_gr_cloud_shadows cfig) $ do
|
||||||
----render transparency depths
|
----render transparency depths
|
||||||
-- glDepthMask GL_TRUE
|
-- glDepthMask GL_TRUE
|
||||||
glDepthFunc GL_ALWAYS
|
glDepthFunc GL_ALWAYS
|
||||||
glDisable GL_BLEND
|
glDisable GL_BLEND
|
||||||
withArray [GL_NONE, GL_COLOR_ATTACHMENT1, GL_COLOR_ATTACHMENT2] $
|
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
|
glBlendFunci 2 GL_SRC_ALPHA GL_ONE
|
||||||
glUseProgram (pdata ^. cloudShader . shaderUINT)
|
glUseProgram (pdata ^. cloudShader . shaderUINT)
|
||||||
glBindVertexArray $ pdata ^. cloudShader . shaderVAO . vaoName
|
glBindVertexArray $ pdata ^. cloudShader . shaderVAO . vaoName
|
||||||
-- glDepthMask GL_TRUE
|
-- glDepthMask GL_TRUE
|
||||||
glDrawArrays GL_TRIANGLES 0 (fromIntegral nCloudVs * 6)
|
glDrawArrays GL_TRIANGLES 0 (fromIntegral nCloudVs * 6)
|
||||||
--glDrawArrays GL_TRIANGLES 0 6
|
--glDrawArrays GL_TRIANGLES 0 6
|
||||||
----glDrawElements
|
----glDrawElements
|
||||||
@@ -342,12 +319,12 @@ doDrawing' win pdata u = do
|
|||||||
---- GL_UNSIGNED_INT
|
---- GL_UNSIGNED_INT
|
||||||
---- nullPtr
|
---- nullPtr
|
||||||
---
|
---
|
||||||
-- glEnable GL_CULL_FACE
|
-- glEnable GL_CULL_FACE
|
||||||
-- glEnable GL_DEPTH_CLAMP
|
-- glEnable GL_DEPTH_CLAMP
|
||||||
-- glCullFace GL_BACK
|
-- glCullFace GL_BACK
|
||||||
---- drawShader (_windowShader pdata) nWins
|
---- drawShader (_windowShader pdata) nWins
|
||||||
-- glDisable GL_DEPTH_CLAMP
|
-- glDisable GL_DEPTH_CLAMP
|
||||||
-- glDisable GL_CULL_FACE
|
-- glDisable GL_CULL_FACE
|
||||||
-- drawShader (_windowShader pdata) nWins
|
-- drawShader (_windowShader pdata) nWins
|
||||||
glBindFramebuffer GL_FRAMEBUFFER (pdata ^. fboPos . _1 . unFBO)
|
glBindFramebuffer GL_FRAMEBUFFER (pdata ^. fboPos . _1 . unFBO)
|
||||||
withArray [0, 0, 0, 0] $ \ptr ->
|
withArray [0, 0, 0, 0] $ \ptr ->
|
||||||
@@ -386,8 +363,8 @@ doDrawing' win pdata u = do
|
|||||||
glDepthFunc GL_LEQUAL
|
glDepthFunc GL_LEQUAL
|
||||||
glCullFace GL_BACK
|
glCullFace GL_BACK
|
||||||
glDisable GL_BLEND
|
glDisable GL_BLEND
|
||||||
-- glDepthFunc GL_ALWAYS
|
-- glDepthFunc GL_ALWAYS
|
||||||
-- glDisable GL_CULL_FACE
|
-- glDisable GL_CULL_FACE
|
||||||
glUseProgram $ pdata ^. windowPullShader . shaderUINT
|
glUseProgram $ pdata ^. windowPullShader . shaderUINT
|
||||||
glBindVertexArray $ pdata ^. dummyVAO . vaoName
|
glBindVertexArray $ pdata ^. dummyVAO . vaoName
|
||||||
glDrawArrays GL_TRIANGLES 0 (fromIntegral nWins * 6)
|
glDrawArrays GL_TRIANGLES 0 (fromIntegral nWins * 6)
|
||||||
@@ -408,17 +385,16 @@ doDrawing' win pdata u = do
|
|||||||
drawShader (_fullscreenShader pdata) 4
|
drawShader (_fullscreenShader pdata) 4
|
||||||
glBlendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
|
glBlendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
|
||||||
|
|
||||||
|
|
||||||
-- bind base buffer for drawing clouds and bloom
|
-- bind base buffer for drawing clouds and bloom
|
||||||
--glBindFramebuffer GL_FRAMEBUFFER (_unFBO (fst (_fboBase pdata)))
|
--glBindFramebuffer GL_FRAMEBUFFER (_unFBO (fst (_fboBase pdata)))
|
||||||
glBindFramebuffer GL_FRAMEBUFFER (pdata ^. fboBase . _1 . unFBO)
|
glBindFramebuffer GL_FRAMEBUFFER (pdata ^. fboBase . _1 . unFBO)
|
||||||
|
|
||||||
-- --draw shadowed clouds onto base buffer
|
-- --draw shadowed clouds onto base buffer
|
||||||
-- glBindTextureUnit 0 (pdata ^. fboCloud . _2 . _1 . unTO)
|
-- glBindTextureUnit 0 (pdata ^. fboCloud . _2 . _1 . unTO)
|
||||||
-- drawShader (_fullscreenShader pdata) 4
|
-- drawShader (_fullscreenShader pdata) 4
|
||||||
|
|
||||||
glBlendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
|
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
|
glBlendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
|
||||||
glBindTextureUnit 0 (pdata ^. fboWindow . _2 . _1 . unTO)
|
glBindTextureUnit 0 (pdata ^. fboWindow . _2 . _1 . unTO)
|
||||||
glBindTextureUnit 1 (pdata ^. fboWindow . _2 . _2 . unTO)
|
glBindTextureUnit 1 (pdata ^. fboWindow . _2 . _2 . unTO)
|
||||||
@@ -433,8 +409,7 @@ doDrawing' win pdata u = do
|
|||||||
--glBlendFunc GL_ONE GL_ONE
|
--glBlendFunc GL_ONE GL_ONE
|
||||||
glBindTextureUnit 0 (_unTO . snd $ _fboHalf1 pdata)
|
glBindTextureUnit 0 (_unTO . snd $ _fboHalf1 pdata)
|
||||||
drawShader (_fullscreenShader pdata) 4
|
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
|
--set viewport for radial distortion
|
||||||
--setViewportSize (round winx) (round winy)
|
--setViewportSize (round winx) (round winy)
|
||||||
@@ -479,10 +454,16 @@ doDrawing' win pdata u = do
|
|||||||
SDL.glSwapWindow win
|
SDL.glSwapWindow win
|
||||||
|
|
||||||
bufferPerspectiveMatrixUBO :: Config -> Camera -> GLuint -> IO ()
|
bufferPerspectiveMatrixUBO :: Config -> Camera -> GLuint -> IO ()
|
||||||
bufferPerspectiveMatrixUBO cfig cam uboid = withArray
|
bufferPerspectiveMatrixUBO cfig cam uboid =
|
||||||
(perspectiveMatrixb (cam ^. camRot) (cam ^. camZoom) (cam ^. camCenter)
|
withArray
|
||||||
(V2 (windowXFloat cfig) (windowYFloat cfig)) (cam ^. camViewFrom))
|
( perspectiveMatrixb
|
||||||
$ glNamedBufferSubData uboid 0 64
|
(cam ^. camRot)
|
||||||
|
(cam ^. camZoom)
|
||||||
|
(cam ^. camCenter)
|
||||||
|
(V2 (windowXFloat cfig) (windowYFloat cfig))
|
||||||
|
(cam ^. camViewFrom)
|
||||||
|
)
|
||||||
|
$ glNamedBufferSubData uboid 0 64
|
||||||
|
|
||||||
getDistortions :: Config -> World -> [Distortion]
|
getDistortions :: Config -> World -> [Distortion]
|
||||||
getDistortions cfig w
|
getDistortions cfig w
|
||||||
|
|||||||
+47
-46
@@ -2,10 +2,9 @@
|
|||||||
--{-# OPTIONS_GHC -Wno-unused-top-binds #-}
|
--{-# OPTIONS_GHC -Wno-unused-top-binds #-}
|
||||||
module Preload.Render (
|
module Preload.Render (
|
||||||
preloadRender,
|
preloadRender,
|
||||||
-- cleanUpRenderPreload,
|
-- cleanUpRenderPreload,
|
||||||
) where
|
) where
|
||||||
|
|
||||||
import Shape.Parameters
|
|
||||||
import Control.Concurrent
|
import Control.Concurrent
|
||||||
--import Control.Lens
|
--import Control.Lens
|
||||||
import Control.Monad
|
import Control.Monad
|
||||||
@@ -19,6 +18,8 @@ import Shader.AuxAddition
|
|||||||
import Shader.Compile
|
import Shader.Compile
|
||||||
import Shader.Data
|
import Shader.Data
|
||||||
import Shader.Parameters
|
import Shader.Parameters
|
||||||
|
import Shape.Parameters
|
||||||
|
|
||||||
--import Shape.Parameters
|
--import Shape.Parameters
|
||||||
|
|
||||||
{- BINDING LIST:
|
{- BINDING LIST:
|
||||||
@@ -40,43 +41,42 @@ preloadRender = do
|
|||||||
glBindBufferBase GL_UNIFORM_BUFFER 0 theUBO
|
glBindBufferBase GL_UNIFORM_BUFFER 0 theUBO
|
||||||
|
|
||||||
winssbo <- mglCreate glCreateBuffers
|
winssbo <- mglCreate glCreateBuffers
|
||||||
let winssbosize = sizeOf (0::Float) * 8 * 1024
|
let winssbosize = sizeOf (0 :: Float) * 8 * 1024
|
||||||
glNamedBufferStorage winssbo (fromIntegral winssbosize) nullPtr GL_DYNAMIC_STORAGE_BIT
|
glNamedBufferStorage winssbo (fromIntegral winssbosize) nullPtr GL_DYNAMIC_STORAGE_BIT
|
||||||
glBindBufferBase GL_SHADER_STORAGE_BUFFER 1 winssbo
|
glBindBufferBase GL_SHADER_STORAGE_BUFFER 1 winssbo
|
||||||
winptr <- mallocBytes winssbosize
|
winptr <- mallocBytes winssbosize
|
||||||
let winvbo = VBO winssbo winptr 8
|
let winvbo = VBO winssbo winptr (sizeOf (0::Float) * 8)
|
||||||
|
|
||||||
let wallsn = 4096
|
let wallsn = 4096
|
||||||
wallssbo <- mglCreate glCreateBuffers
|
wallssbo <- mglCreate glCreateBuffers
|
||||||
let wallssbosize = sizeOf (0::Float) * 8 * wallsn
|
let wallssbosize = sizeOf (0 :: Float) * 8 * wallsn
|
||||||
glNamedBufferStorage wallssbo (fromIntegral wallssbosize) nullPtr GL_DYNAMIC_STORAGE_BIT
|
glNamedBufferStorage wallssbo (fromIntegral wallssbosize) nullPtr GL_DYNAMIC_STORAGE_BIT
|
||||||
glBindBufferBase GL_SHADER_STORAGE_BUFFER 2 wallssbo
|
glBindBufferBase GL_SHADER_STORAGE_BUFFER 2 wallssbo
|
||||||
wallssboptr <- mallocBytes wallssbosize
|
wallssboptr <- mallocBytes wallssbosize
|
||||||
let wallvbo = VBO wallssbo wallssboptr 8
|
let wallvbo = VBO wallssbo wallssboptr (sizeOf (0::Float) * 8)
|
||||||
|
|
||||||
shapessbo <- mglCreate glCreateBuffers
|
shapessbo <- mglCreate glCreateBuffers
|
||||||
let shapessbosize = fromIntegral shapeVerxSize * 65536
|
let shapessbosize = fromIntegral shapeVerxSize * 65536
|
||||||
glNamedBufferStorage shapessbo shapessbosize nullPtr GL_DYNAMIC_STORAGE_BIT
|
glNamedBufferStorage shapessbo shapessbosize nullPtr GL_DYNAMIC_STORAGE_BIT
|
||||||
glBindBufferBase GL_SHADER_STORAGE_BUFFER 3 shapessbo
|
glBindBufferBase GL_SHADER_STORAGE_BUFFER 3 shapessbo
|
||||||
--shptr <- mallocArray (fromIntegral shapessbosize)
|
|
||||||
shptr <- mallocArray (8 * 65536)
|
shptr <- mallocArray (8 * 65536)
|
||||||
let shVBO = VBO shapessbo shptr shapeVerxSize
|
let shVBO = VBO shapessbo shptr shapeVerxSize
|
||||||
|
|
||||||
ishapessbo <- mglCreate glCreateBuffers
|
ishapessbo <- mglCreate glCreateBuffers
|
||||||
let ishapessbosize = fromIntegral (sizeOf (0::GLuint) * 65536)
|
let ishapessbosize = fromIntegral (sizeOf (0 :: GLuint) * 65536)
|
||||||
glNamedBufferStorage ishapessbo ishapessbosize nullPtr GL_DYNAMIC_STORAGE_BIT
|
glNamedBufferStorage ishapessbo ishapessbosize nullPtr GL_DYNAMIC_STORAGE_BIT
|
||||||
glBindBufferBase GL_SHADER_STORAGE_BUFFER 4 ishapessbo
|
glBindBufferBase GL_SHADER_STORAGE_BUFFER 4 ishapessbo
|
||||||
ishptr <- mallocArray 65536
|
ishptr <- mallocArray 65536
|
||||||
let shEBO = UintBO ishapessbo ishptr
|
let shEBO = UintBO ishapessbo ishptr
|
||||||
|
|
||||||
ieshapessbo <- mglCreate glCreateBuffers
|
ieshapessbo <- mglCreate glCreateBuffers
|
||||||
let ieshapessbosize = fromIntegral (sizeOf (0::GLuint) * 65536)
|
let ieshapessbosize = fromIntegral (sizeOf (0 :: GLuint) * 65536)
|
||||||
glNamedBufferStorage ieshapessbo ieshapessbosize nullPtr GL_DYNAMIC_STORAGE_BIT
|
glNamedBufferStorage ieshapessbo ieshapessbosize nullPtr GL_DYNAMIC_STORAGE_BIT
|
||||||
glBindBufferBase GL_SHADER_STORAGE_BUFFER 5 ieshapessbo
|
glBindBufferBase GL_SHADER_STORAGE_BUFFER 5 ieshapessbo
|
||||||
ieptr <- mallocArray 65536 -- so we can go back to glushort...
|
ieptr <- mallocArray 65536 -- so we can go back to glushort...
|
||||||
|
|
||||||
cloudbo <- mglCreate glCreateBuffers
|
cloudbo <- mglCreate glCreateBuffers
|
||||||
let cvsize = (sizeOf (0::Float)) * 8
|
let cvsize = (sizeOf (0 :: Float)) * 8
|
||||||
cloudbosize = fromIntegral cvsize * 65536 -- this should be changed
|
cloudbosize = fromIntegral cvsize * 65536 -- this should be changed
|
||||||
glNamedBufferStorage cloudbo cloudbosize nullPtr GL_DYNAMIC_STORAGE_BIT
|
glNamedBufferStorage cloudbo cloudbosize nullPtr GL_DYNAMIC_STORAGE_BIT
|
||||||
glBindBufferBase GL_SHADER_STORAGE_BUFFER 6 cloudbo
|
glBindBufferBase GL_SHADER_STORAGE_BUFFER 6 cloudbo
|
||||||
@@ -85,15 +85,14 @@ preloadRender = do
|
|||||||
|
|
||||||
dummyvao <- mglCreate glGenVertexArrays
|
dummyvao <- mglCreate glGenVertexArrays
|
||||||
|
|
||||||
|
winpull <- makeShaderUsingVAO "pull/window" [vert, frag] pmTriangles (VAO dummyvao)
|
||||||
|
|
||||||
winpull <- makeShaderUsingVAO "pull/window" [vert,frag] pmTriangles (VAO dummyvao)
|
wallpull <- makeShaderUsingVAO "pull/wall" [vert, frag] pmTriangles (VAO dummyvao)
|
||||||
|
|
||||||
wallpull <- makeShaderUsingVAO "pull/wall" [vert,frag] pmTriangles (VAO dummyvao)
|
|
||||||
|
|
||||||
shapeshader <-
|
shapeshader <-
|
||||||
makeShaderUsingVAO "shape/basic" [vert, frag] pmTriangles (VAO dummyvao)
|
makeShaderUsingVAO "shape/basic" [vert, frag] pmTriangles (VAO dummyvao)
|
||||||
|
|
||||||
cloudshader <- makeShaderUsingVAO "pull/cloud" [vert,frag] pmTriangles (VAO dummyvao)
|
cloudshader <- makeShaderUsingVAO "pull/cloud" [vert, frag] pmTriangles (VAO dummyvao)
|
||||||
|
|
||||||
putStrLn "Setup lighting shaders"
|
putStrLn "Setup lighting shaders"
|
||||||
lightingWallShadShad <-
|
lightingWallShadShad <-
|
||||||
@@ -102,8 +101,12 @@ preloadRender = do
|
|||||||
makeShaderUsingVAO "lighting/cap" [vert] pmTriangles (VAO dummyvao)
|
makeShaderUsingVAO "lighting/cap" [vert] pmTriangles (VAO dummyvao)
|
||||||
lightingLineShadowShad <-
|
lightingLineShadowShad <-
|
||||||
makeShaderUsingVAO "lighting/lineShadow" [vert] pmTriangles (VAO dummyvao)
|
makeShaderUsingVAO "lighting/lineShadow" [vert] pmTriangles (VAO dummyvao)
|
||||||
ceilingstencilshader <- makeShaderUsingVAO "ceiling/stencil" [vert] pmTriangles
|
ceilingstencilshader <-
|
||||||
(VAO dummyvao)
|
makeShaderUsingVAO
|
||||||
|
"ceiling/stencil"
|
||||||
|
[vert]
|
||||||
|
pmTriangles
|
||||||
|
(VAO dummyvao)
|
||||||
|
|
||||||
putStrLn "Setup 2D shaders"
|
putStrLn "Setup 2D shaders"
|
||||||
bslist <- makeShaderVBO "dualTwoD/basic" [vert, frag] (toFloatVAs [3, 4]) pmTriangles
|
bslist <- makeShaderVBO "dualTwoD/basic" [vert, frag] (toFloatVAs [3, 4]) pmTriangles
|
||||||
@@ -120,20 +123,18 @@ preloadRender = do
|
|||||||
, aslist
|
, aslist
|
||||||
, eslist
|
, eslist
|
||||||
]
|
]
|
||||||
-- initTexture2DArray 50 "data/texture/charMapVertBig.png" 2 32 64 95 GL_NEAREST_MIPMAP_LINEAR GL_LINEAR
|
-- GL_NEAREST_MIPMAP_LINEAR GL_LINEAR ?
|
||||||
--initTexture2DArray 50 "data/texture/charMapVert16Block.png" 2 16 32 95 GL_NEAREST GL_NEAREST
|
|
||||||
--initTexture2DArray 50 "data/charMaps/charMapVert16Tall.png" 2 16 32 95 GL_NEAREST GL_NEAREST
|
|
||||||
initTexture2DArray 50 "data/charMaps/cMap16x32.Custom.png" 2 16 32 256 GL_NEAREST GL_NEAREST
|
initTexture2DArray 50 "data/charMaps/cMap16x32.Custom.png" 2 16 32 256 GL_NEAREST GL_NEAREST
|
||||||
--initTexture2DArray 50 "data/texture/charMapVert8Block.png" 2 8 16 95 GL_NEAREST GL_NEAREST
|
|
||||||
--initTexture2DArray 50 "data/texture/charMapVertBig.png" 2 32 64 95 GL_LINEAR_MIPMAP_LINEAR GL_LINEAR
|
|
||||||
--initTexture2DArray 50 "data/texture/charMapVertBig.png" 2 32 64 95 GL_LINEAR_MIPMAP_NEAREST GL_LINEAR
|
|
||||||
|
|
||||||
putStrLn "Setup full screen shaders"
|
putStrLn "Setup full screen shaders"
|
||||||
(_, screentexturevao) <- setupStaticVBOVAO (toFloatVAs [2, 2]) (concat cornerList)
|
(_, screentexturevao) <- setupStaticVBOVAO (toFloatVAs [2, 2]) (concat cornerList)
|
||||||
alphadivideshader <- makeShaderUsingVAO "texture2D/alphaDivide" [vert, frag] pmTriangleStrip screentexturevao
|
alphadivideshader <- makeShaderUsingVAO "texture2D/alphaDivide" [vert, frag] pmTriangleStrip screentexturevao
|
||||||
fsShad <- makeShaderUsingVAO "texture/simple" [vert, frag] pmTriangleStrip screentexturevao
|
fsShad <- makeShaderUsingVAO "texture/simple" [vert, frag] pmTriangleStrip screentexturevao
|
||||||
transcompshader <- makeShaderUsingVAO
|
transcompshader <-
|
||||||
"fullscreen/transparencyComp" [vert, frag] pmTriangleStrip screentexturevao
|
makeShaderUsingVAO
|
||||||
|
"fullscreen/transparencyComp"
|
||||||
|
[vert, frag]
|
||||||
|
pmTriangleStrip
|
||||||
|
screentexturevao
|
||||||
bloomBlurShad <- makeShaderUsingVAO "texture/bloomBlur" [vert, frag] pmTriangleStrip screentexturevao
|
bloomBlurShad <- makeShaderUsingVAO "texture/bloomBlur" [vert, frag] pmTriangleStrip screentexturevao
|
||||||
colorBlurShad <- makeShaderUsingVAO "texture/colorBlur" [vert, frag] pmTriangleStrip screentexturevao
|
colorBlurShad <- makeShaderUsingVAO "texture/colorBlur" [vert, frag] pmTriangleStrip screentexturevao
|
||||||
grayscaleShad <- makeShaderUsingVAO "texture/grayscale" [vert, frag] pmTriangleStrip screentexturevao
|
grayscaleShad <- makeShaderUsingVAO "texture/grayscale" [vert, frag] pmTriangleStrip screentexturevao
|
||||||
@@ -158,11 +159,11 @@ preloadRender = do
|
|||||||
(toFloatVAs [3])
|
(toFloatVAs [3])
|
||||||
pmTriangles
|
pmTriangles
|
||||||
chasmvbo
|
chasmvbo
|
||||||
-- putStrLn "Setup cloud VBO, shader"
|
-- putStrLn "Setup cloud VBO, shader"
|
||||||
-- let cloudverxsizes = [4, 4, 4]
|
-- let cloudverxsizes = [4, 4, 4]
|
||||||
-- cloudvbo <- setupVBO (floatSize * sum cloudverxsizes)
|
-- cloudvbo <- setupVBO (floatSize * sum cloudverxsizes)
|
||||||
-- (cloudshader, cloudebo) <-
|
-- (cloudshader, cloudebo) <-
|
||||||
-- makeShaderEBO "cloud/basic" [vert, frag] (toFloatVAs cloudverxsizes) pmTriangles cloudvbo
|
-- makeShaderEBO "cloud/basic" [vert, frag] (toFloatVAs cloudverxsizes) pmTriangles cloudvbo
|
||||||
framebuf2 <- newTextureFramebuffer
|
framebuf2 <- newTextureFramebuffer
|
||||||
framebuf3 <- newTextureFramebuffer
|
framebuf3 <- newTextureFramebuffer
|
||||||
|
|
||||||
@@ -200,8 +201,8 @@ preloadRender = do
|
|||||||
, _lightingLineShadowShader = lightingLineShadowShad
|
, _lightingLineShadowShader = lightingLineShadowShad
|
||||||
, _lightingWallShadShader = lightingWallShadShad
|
, _lightingWallShadShader = lightingWallShadShad
|
||||||
, _ceilingStencilShader = ceilingstencilshader
|
, _ceilingStencilShader = ceilingstencilshader
|
||||||
-- , _windowShader = windowshader
|
, -- , _windowShader = windowshader
|
||||||
, _windowPullShader = winpull
|
_windowPullShader = winpull
|
||||||
, _pullWallShader = wallpull
|
, _pullWallShader = wallpull
|
||||||
, _fullscreenShader = fsShad
|
, _fullscreenShader = fsShad
|
||||||
, _transparencyCompShader = transcompshader
|
, _transparencyCompShader = transcompshader
|
||||||
@@ -223,25 +224,25 @@ preloadRender = do
|
|||||||
, _fboPos = fboPosName
|
, _fboPos = fboPosName
|
||||||
, _rboBaseBloom = rboBaseBloomName
|
, _rboBaseBloom = rboBaseBloomName
|
||||||
, _matUBO = theUBO
|
, _matUBO = theUBO
|
||||||
-- , _winSSBO = winssbo
|
, -- , _winSSBO = winssbo
|
||||||
-- , _wallSSBO = wallssbo
|
-- , _wallSSBO = wallssbo
|
||||||
-- , _shapeSSBO = shapessbo
|
-- , _shapeSSBO = shapessbo
|
||||||
-- , _ishapeSSBO = ishapessbo
|
-- , _ishapeSSBO = ishapessbo
|
||||||
-- , _ieshapeSSBO = ieshapessbo
|
-- , _ieshapeSSBO = ieshapessbo
|
||||||
-- , _lightsUBO = lightsubo
|
-- , _lightsUBO = lightsubo
|
||||||
-- , _vboWindows = winvbo
|
-- , _vboWindows = winvbo
|
||||||
, _vboShapes = shVBO
|
_vboShapes = shVBO
|
||||||
, _floorVBO = floorvbo
|
, _floorVBO = floorvbo
|
||||||
, _floorShader = floorshader
|
, _floorShader = floorshader
|
||||||
, _chasmVBO = chasmvbo
|
, _chasmVBO = chasmvbo
|
||||||
, _chasmShader = chasmshader
|
, _chasmShader = chasmshader
|
||||||
, _wallVBO = wallvbo
|
, _wallVBO = wallvbo
|
||||||
, _winVBO = winvbo
|
, _winVBO = winvbo
|
||||||
-- , _wallShader = wallshader
|
, -- , _wallShader = wallshader
|
||||||
, _cloudVBO = cloudvbo
|
_cloudVBO = cloudvbo
|
||||||
, _cloudShader = cloudshader
|
, _cloudShader = cloudshader
|
||||||
-- , _cloudEBO = cloudebo
|
, -- , _cloudEBO = cloudebo
|
||||||
, _screenTextureVAO = screentexturevao
|
_screenTextureVAO = screentexturevao
|
||||||
, _dummyVAO = VAO dummyvao
|
, _dummyVAO = VAO dummyvao
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+3
-5
@@ -83,12 +83,10 @@ data VBO = VBO
|
|||||||
-- add int for AMOUNT of data poked!
|
-- add int for AMOUNT of data poked!
|
||||||
}
|
}
|
||||||
|
|
||||||
data BOType = WindowPoss
|
|
||||||
|
|
||||||
data FloatBO = FloatBO
|
data FloatBO = FloatBO
|
||||||
{ _boName :: GLuint
|
{ _flboName :: GLuint
|
||||||
, _boPtr :: Ptr Float
|
, _flboPtr :: Ptr Float
|
||||||
, _boType :: BOType
|
, _flboStride :: Int
|
||||||
}
|
}
|
||||||
|
|
||||||
data UintBO = UintBO
|
data UintBO = UintBO
|
||||||
|
|||||||
Reference in New Issue
Block a user