diff --git a/src/Data/Preload/Render.hs b/src/Data/Preload/Render.hs index 169cfee5c..294806411 100644 --- a/src/Data/Preload/Render.hs +++ b/src/Data/Preload/Render.hs @@ -42,20 +42,17 @@ data RenderData = RenderData , _fboLighting :: (FBO, TO) , _rboBaseBloom :: GLuint -- RenderbufferObject id , _matUBO :: GLuint -- BufferObject id - , _winSSBO :: GLuint - , _wallSSBO :: GLuint +-- , _winSSBO :: GLuint +-- , _wallSSBO :: GLuint , _shapeSSBO :: GLuint , _ishapeSSBO :: GLuint --- , _ieshapeSSBO :: GLuint --- , _lightsUBO :: GLuint -- BufferObject id - , _vboWindows :: VBO , _vboShapes :: VBO , _floorVBO :: VBO , _floorShader :: Shader , _chasmVBO :: VBO , _chasmShader :: Shader + , _winVBO :: VBO , _wallVBO :: VBO --- , _wallShader :: Shader , _cloudVBO :: VBO , _cloudShader :: Shader , _cloudEBO :: UintBO diff --git a/src/Dodge/Render.hs b/src/Dodge/Render.hs index f91b1bfc5..ca60cb0bb 100644 --- a/src/Dodge/Render.hs +++ b/src/Dodge/Render.hs @@ -69,7 +69,7 @@ doDrawing' win pdata u = do wp ) ( pokeWallsWindows - (pdata ^. vboWindows . vboPtr) + (pdata ^. winVBO . vboPtr) (pdata ^. wallVBO . vboPtr) windowPoints wallsToPoke @@ -107,10 +107,11 @@ doDrawing' win pdata u = do ] -- set the coordinate uniform ready for drawing elements using world coordinates bufferPerspectiveMatrixUBO cfig (w ^. wCam) (pdata ^. matUBO) - glNamedBufferSubData (pdata ^. winSSBO) 0 + glNamedBufferSubData (pdata ^. winVBO . vboName) 0 (fromIntegral $ nWins * sizeOf (0::Float) * 8) - (pdata ^. vboWindows . vboPtr) - glNamedBufferSubData (pdata ^. wallSSBO) 0 + (pdata ^. winVBO . vboPtr) + -- bufferFloatBO function + glNamedBufferSubData (pdata ^. wallVBO . vboName) 0 (fromIntegral $ trueNWalls * sizeOf (0::Float) * 8) (pdata ^. wallVBO . vboPtr) glNamedBufferSubData (pdata ^. shapeSSBO) 0 @@ -120,9 +121,6 @@ doDrawing' win pdata u = do (fromIntegral $ nIndices * (sizeOf (0::GLuint))) (pdata ^. shapeEBO . uiboPtr) bufferEBO (pdata ^. silhouetteEBO) nSilIndices --- glNamedBufferSubData (pdata ^. ieshapeSSBO) 0 --- (fromIntegral $ nSilIndices * (sizeOf (0::GLuint))) --- (pdata ^. silhouetteEBO . uiboPtr) setViewport _gr_world_res cfig glBindFramebuffer GL_FRAMEBUFFER (pdata ^. fboBase . _1 . unFBO) glDepthMask GL_TRUE diff --git a/src/Preload/Render.hs b/src/Preload/Render.hs index 330347e5b..bc11071a0 100644 --- a/src/Preload/Render.hs +++ b/src/Preload/Render.hs @@ -43,16 +43,22 @@ preloadRender = do let winssbosize = sizeOf (0::Float) * 8 * 1024 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 wallsn = 4096 wallssbo <- mglCreate glCreateBuffers - let wallssbosize = sizeOf (0::Float) * 8 * 2048 + let wallssbosize = sizeOf (0::Float) * 8 * wallsn 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 shapessbo <- mglCreate glCreateBuffers let shapessbosize = fromIntegral (sizeOf (0::Float) * 12) * 65536 glNamedBufferStorage shapessbo shapessbosize nullPtr GL_DYNAMIC_STORAGE_BIT glBindBufferBase GL_SHADER_STORAGE_BUFFER 3 shapessbo + ishapessbo <- mglCreate glCreateBuffers let ishapessbosize = fromIntegral (sizeOf (0::GLuint) * 65536) glNamedBufferStorage ishapessbo ishapessbosize nullPtr GL_DYNAMIC_STORAGE_BIT @@ -70,7 +76,6 @@ preloadRender = do wallpull <- makeShaderUsingVAO "pull/wall" [vert,frag] pmTriangles (VAO dummyvao) - -- setup shape geometry/cap VBO and two VAOs putStrLn "Setup shape VBO, VAO, EBO" shVBO <- setupVBO shapeVerxSize shPosVAO <- setupVAOUsingVBO [VertexAttribute 4 GL_FLOAT GL_FALSE 0] shVBO @@ -86,30 +91,17 @@ preloadRender = do shVBO glVertexArrayElementBuffer (shapeshader ^. shaderVAO . vaoName) (shEBO ^. uiboName) - --setup silhouette edge VAO --- putStrLn "Setup silhouette VAO, EBO" --- shedgevao <- setupVAOUsingVBO [VertexAttribute 4 GL_FLOAT GL_FALSE 0] shVBO --- shedgeebo <- setupEBO shedgevao - putStrLn "Setup wall/windows VBO, VAO, EBO, shader" - let wallverxstrd = 8 - wallvbo <- setupVBO (floatSize * wallverxstrd) - winvbo <- setupVBO (floatSize * 8) --- wallshader <- makeShaderUsingVBO "wall/basic" [vert, geom, frag] (toFloatVAs [4, 4]) pmPoints wallvbo +-- winvbo <- setupVBO (floatSize * 8) putStrLn "Setup lighting shaders" lightingWallShadShad <- - --makeShaderUsingVBO "lighting/wallShadow" [vert, geom] (toFloatVAs [4]) pmPoints wallvbo makeShaderUsingVAO "lighting/wallShadow" [vert] pmTriangles (VAO dummyvao) lightingCapShad <- - --makeShaderUsingVAO "lighting/cap" [vert, geom] pmTriangles shPosVAO makeShaderUsingVAO "lighting/cap" [vert] pmTriangles (VAO dummyvao) lightingLineShadowShad <- - --makeShaderUsingVAO "lighting/lineShadow" [vert, geom] pmLinesAdjacency shedgevao makeShaderUsingVAO "lighting/lineShadow" [vert] pmTriangles (VAO dummyvao) - ceilingstencilshader <- makeShaderUsingVAO "ceiling/stencil" [vert] pmTriangles (VAO dummyvao) --- makeShaderUsingVBO "ceiling/stencil" [vert, geom] (toFloatVAs [4]) pmPoints wallvbo putStrLn "Setup 2D shaders" bslist <- makeShaderVBO "dualTwoD/basic" [vert, frag] (toFloatVAs [3, 4]) pmTriangles @@ -229,19 +221,20 @@ preloadRender = do , _fboPos = fboPosName , _rboBaseBloom = rboBaseBloomName , _matUBO = theUBO - , _winSSBO = winssbo - , _wallSSBO = wallssbo +-- , _winSSBO = winssbo +-- , _wallSSBO = wallssbo , _shapeSSBO = shapessbo , _ishapeSSBO = ishapessbo -- , _ieshapeSSBO = ieshapessbo -- , _lightsUBO = lightsubo - , _vboWindows = winvbo +-- , _vboWindows = winvbo , _vboShapes = shVBO , _floorVBO = floorvbo , _floorShader = floorshader , _chasmVBO = chasmvbo , _chasmShader = chasmshader , _wallVBO = wallvbo + , _winVBO = winvbo -- , _wallShader = wallshader , _cloudVBO = cloudvbo , _cloudShader = cloudshader diff --git a/src/Shader/Bind.hs b/src/Shader/Bind.hs index fa404ce5e..db3253d56 100644 --- a/src/Shader/Bind.hs +++ b/src/Shader/Bind.hs @@ -26,12 +26,12 @@ bufferPokedVBO theVBO numVs = (_vboPtr theVBO) bufferEBO :: UintBO -> Int -> IO () -bufferEBO ebo numis = - glNamedBufferSubData - (ebo ^. uiboName) - 0 - (fromIntegral $ gluintSize * numis) - (ebo ^. uiboPtr) +bufferEBO x i = + glNamedBufferSubData (x ^. uiboName) 0 (fromIntegral $ gluintSize * i) (x ^. uiboPtr) + +--bufferFloatBO :: VBO -> Int -> IO () +--bufferFloatBO x i = undefined +-- glNamedBufferSubData (x ^. uiboName) 0 (fromIntegral $ gluintSize * i) (x ^. uiboPtr) bufferShaderLayers :: MV.MVector (PrimState IO) (Shader, VBO) -> UMV.MVector (PrimState IO) Int -> IO () bufferShaderLayers shads counts = MV.imapM_ f shads