This commit is contained in:
2025-11-12 21:23:03 +00:00
parent 383beeae82
commit be64e786f9
3 changed files with 122 additions and 142 deletions
+69 -88
View File
@@ -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
View File
@@ -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
View File
@@ -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