Cleanup
This commit is contained in:
+20
-39
@@ -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
|
||||
@@ -280,8 +254,11 @@ doDrawing' win pdata u = do
|
||||
-- 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
|
||||
@@ -408,7 +385,6 @@ 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)
|
||||
@@ -435,7 +411,6 @@ doDrawing' win pdata u = do
|
||||
drawShader (_fullscreenShader pdata) 4
|
||||
-- glBlendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
|
||||
|
||||
|
||||
--set viewport for radial distortion
|
||||
--setViewportSize (round winx) (round winy)
|
||||
setViewport (const FullRes) cfig
|
||||
@@ -479,9 +454,15 @@ 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))
|
||||
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]
|
||||
|
||||
+24
-23
@@ -5,7 +5,6 @@ module Preload.Render (
|
||||
-- cleanUpRenderPreload,
|
||||
) where
|
||||
|
||||
import Shape.Parameters
|
||||
import Control.Concurrent
|
||||
--import Control.Lens
|
||||
import Control.Monad
|
||||
@@ -19,6 +18,8 @@ import Shader.AuxAddition
|
||||
import Shader.Compile
|
||||
import Shader.Data
|
||||
import Shader.Parameters
|
||||
import Shape.Parameters
|
||||
|
||||
--import Shape.Parameters
|
||||
|
||||
{- BINDING LIST:
|
||||
@@ -44,7 +45,7 @@ preloadRender = do
|
||||
glNamedBufferStorage winssbo (fromIntegral winssbosize) nullPtr GL_DYNAMIC_STORAGE_BIT
|
||||
glBindBufferBase GL_SHADER_STORAGE_BUFFER 1 winssbo
|
||||
winptr <- mallocBytes winssbosize
|
||||
let winvbo = VBO winssbo winptr 8
|
||||
let winvbo = VBO winssbo winptr (sizeOf (0::Float) * 8)
|
||||
|
||||
let wallsn = 4096
|
||||
wallssbo <- mglCreate glCreateBuffers
|
||||
@@ -52,13 +53,12 @@ preloadRender = do
|
||||
glNamedBufferStorage wallssbo (fromIntegral wallssbosize) nullPtr GL_DYNAMIC_STORAGE_BIT
|
||||
glBindBufferBase GL_SHADER_STORAGE_BUFFER 2 wallssbo
|
||||
wallssboptr <- mallocBytes wallssbosize
|
||||
let wallvbo = VBO wallssbo wallssboptr 8
|
||||
let wallvbo = VBO wallssbo wallssboptr (sizeOf (0::Float) * 8)
|
||||
|
||||
shapessbo <- mglCreate glCreateBuffers
|
||||
let shapessbosize = fromIntegral shapeVerxSize * 65536
|
||||
glNamedBufferStorage shapessbo shapessbosize nullPtr GL_DYNAMIC_STORAGE_BIT
|
||||
glBindBufferBase GL_SHADER_STORAGE_BUFFER 3 shapessbo
|
||||
--shptr <- mallocArray (fromIntegral shapessbosize)
|
||||
shptr <- mallocArray (8 * 65536)
|
||||
let shVBO = VBO shapessbo shptr shapeVerxSize
|
||||
|
||||
@@ -85,7 +85,6 @@ preloadRender = do
|
||||
|
||||
dummyvao <- mglCreate glGenVertexArrays
|
||||
|
||||
|
||||
winpull <- makeShaderUsingVAO "pull/window" [vert, frag] pmTriangles (VAO dummyvao)
|
||||
|
||||
wallpull <- makeShaderUsingVAO "pull/wall" [vert, frag] pmTriangles (VAO dummyvao)
|
||||
@@ -102,7 +101,11 @@ preloadRender = do
|
||||
makeShaderUsingVAO "lighting/cap" [vert] pmTriangles (VAO dummyvao)
|
||||
lightingLineShadowShad <-
|
||||
makeShaderUsingVAO "lighting/lineShadow" [vert] pmTriangles (VAO dummyvao)
|
||||
ceilingstencilshader <- makeShaderUsingVAO "ceiling/stencil" [vert] pmTriangles
|
||||
ceilingstencilshader <-
|
||||
makeShaderUsingVAO
|
||||
"ceiling/stencil"
|
||||
[vert]
|
||||
pmTriangles
|
||||
(VAO dummyvao)
|
||||
|
||||
putStrLn "Setup 2D shaders"
|
||||
@@ -120,20 +123,18 @@ preloadRender = do
|
||||
, aslist
|
||||
, eslist
|
||||
]
|
||||
-- initTexture2DArray 50 "data/texture/charMapVertBig.png" 2 32 64 95 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
|
||||
-- GL_NEAREST_MIPMAP_LINEAR GL_LINEAR ?
|
||||
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"
|
||||
(_, screentexturevao) <- setupStaticVBOVAO (toFloatVAs [2, 2]) (concat cornerList)
|
||||
alphadivideshader <- makeShaderUsingVAO "texture2D/alphaDivide" [vert, frag] pmTriangleStrip screentexturevao
|
||||
fsShad <- makeShaderUsingVAO "texture/simple" [vert, frag] pmTriangleStrip screentexturevao
|
||||
transcompshader <- makeShaderUsingVAO
|
||||
"fullscreen/transparencyComp" [vert, frag] pmTriangleStrip screentexturevao
|
||||
transcompshader <-
|
||||
makeShaderUsingVAO
|
||||
"fullscreen/transparencyComp"
|
||||
[vert, frag]
|
||||
pmTriangleStrip
|
||||
screentexturevao
|
||||
bloomBlurShad <- makeShaderUsingVAO "texture/bloomBlur" [vert, frag] pmTriangleStrip screentexturevao
|
||||
colorBlurShad <- makeShaderUsingVAO "texture/colorBlur" [vert, frag] pmTriangleStrip screentexturevao
|
||||
grayscaleShad <- makeShaderUsingVAO "texture/grayscale" [vert, frag] pmTriangleStrip screentexturevao
|
||||
@@ -200,8 +201,8 @@ preloadRender = do
|
||||
, _lightingLineShadowShader = lightingLineShadowShad
|
||||
, _lightingWallShadShader = lightingWallShadShad
|
||||
, _ceilingStencilShader = ceilingstencilshader
|
||||
-- , _windowShader = windowshader
|
||||
, _windowPullShader = winpull
|
||||
, -- , _windowShader = windowshader
|
||||
_windowPullShader = winpull
|
||||
, _pullWallShader = wallpull
|
||||
, _fullscreenShader = fsShad
|
||||
, _transparencyCompShader = transcompshader
|
||||
@@ -223,25 +224,25 @@ preloadRender = do
|
||||
, _fboPos = fboPosName
|
||||
, _rboBaseBloom = rboBaseBloomName
|
||||
, _matUBO = theUBO
|
||||
-- , _winSSBO = winssbo
|
||||
, -- , _winSSBO = winssbo
|
||||
-- , _wallSSBO = wallssbo
|
||||
-- , _shapeSSBO = shapessbo
|
||||
-- , _ishapeSSBO = ishapessbo
|
||||
-- , _ieshapeSSBO = ieshapessbo
|
||||
-- , _lightsUBO = lightsubo
|
||||
-- , _vboWindows = winvbo
|
||||
, _vboShapes = shVBO
|
||||
_vboShapes = shVBO
|
||||
, _floorVBO = floorvbo
|
||||
, _floorShader = floorshader
|
||||
, _chasmVBO = chasmvbo
|
||||
, _chasmShader = chasmshader
|
||||
, _wallVBO = wallvbo
|
||||
, _winVBO = winvbo
|
||||
-- , _wallShader = wallshader
|
||||
, _cloudVBO = cloudvbo
|
||||
, -- , _wallShader = wallshader
|
||||
_cloudVBO = cloudvbo
|
||||
, _cloudShader = cloudshader
|
||||
-- , _cloudEBO = cloudebo
|
||||
, _screenTextureVAO = screentexturevao
|
||||
, -- , _cloudEBO = cloudebo
|
||||
_screenTextureVAO = screentexturevao
|
||||
, _dummyVAO = VAO dummyvao
|
||||
}
|
||||
|
||||
|
||||
+3
-5
@@ -83,12 +83,10 @@ data VBO = VBO
|
||||
-- add int for AMOUNT of data poked!
|
||||
}
|
||||
|
||||
data BOType = WindowPoss
|
||||
|
||||
data FloatBO = FloatBO
|
||||
{ _boName :: GLuint
|
||||
, _boPtr :: Ptr Float
|
||||
, _boType :: BOType
|
||||
{ _flboName :: GLuint
|
||||
, _flboPtr :: Ptr Float
|
||||
, _flboStride :: Int
|
||||
}
|
||||
|
||||
data UintBO = UintBO
|
||||
|
||||
Reference in New Issue
Block a user