Draw floors using vertex pulling

This commit is contained in:
2025-11-13 22:22:19 +00:00
parent 836c0ba772
commit cffa75c014
8 changed files with 34 additions and 34 deletions
+2 -6
View File
@@ -155,13 +155,9 @@ doDrawing' win pdata u = do
glNamedFramebufferDrawBuffers (pdata ^. fboBase . _1 . unFBO) 3
glDepthMask GL_TRUE
--draw floor onto base buffer
glUseProgram (pdata ^. floorShader . shaderUINT)
glBindVertexArray $ pdata ^. floorShader . shaderVAO . vaoName
glUseProgram (pdata ^. floorShader)
glStencilFunc GL_EQUAL 0 255
glDrawArrays
(_unPrimitiveMode $ pdata ^. floorShader . shaderPrimitive)
0
(fromIntegral nFls)
glDrawArrays GL_TRIANGLES 0 (fromIntegral nFls)
--glDisable GL_STENCIL_TEST
glDisable GL_CULL_FACE
glEnable GL_BLEND
+11 -7
View File
@@ -1,23 +1,27 @@
module Dodge.WorldLoad (postUniverseLoadSideEffect) where
import Shader.Parameters
import Graphics.GL.Core45
import Control.Lens
import Control.Monad
import Data.Preload.Render
import Dodge.Data.Universe
import Shader.Bind
import Graphics.GL.Core45
import Shader.Data
import Shader.Parameters
import Shader.Poke.Floor
postUniverseLoadSideEffect :: Universe -> Universe
postUniverseLoadSideEffect = uvIOEffects %~
(\f uv -> (uvWorld . cWorld) (postWorldLoad (uv ^. preloadData . renderData)) uv >>= f)
postUniverseLoadSideEffect =
uvIOEffects
%~ (\f uv -> (uvWorld . cWorld) (postWorldLoad (uv ^. preloadData . renderData)) uv >>= f)
postWorldLoad :: RenderData -> CWorld -> IO CWorld
postWorldLoad rdata cw = do
nfloorvxs <- foldM (pokeTile (rdata ^. floorVBO . vboPtr)) 0 (cw ^. cwTiles)
bufferPokedVBO (rdata ^. floorVBO) nfloorvxs
let floorbo = (rdata ^. floorVBO . vboName)
floorptr = (rdata ^. floorVBO . vboPtr)
nfloorvxs <- foldM (pokeTile floorptr) 0 (cw ^. cwTiles)
glInvalidateBufferData floorbo
glNamedBufferStorage floorbo (fromIntegral $ 8 * nfloorvxs * floatSize) floorptr 0
glBindBufferBase GL_SHADER_STORAGE_BUFFER 8 floorbo
let chbo = rdata ^. chasmVBO . vboName
chptr = rdata ^. chasmVBO . vboPtr
nchasmvxs <- foldM (pokeChasm chptr) 0 (cw ^. chasms)