Use vertex pulling for clouds

This commit is contained in:
2025-11-12 19:57:07 +00:00
parent ce1937c78e
commit 409180959c
11 changed files with 202 additions and 107 deletions
+19 -19
View File
@@ -58,7 +58,8 @@ preloadRender = do
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 (fromIntegral shapessbosize)
shptr <- mallocArray (8 * 65536)
let shVBO = VBO shapessbo shptr shapeVerxSize
ishapessbo <- mglCreate glCreateBuffers
@@ -74,27 +75,26 @@ preloadRender = do
glBindBufferBase GL_SHADER_STORAGE_BUFFER 5 ieshapessbo
ieptr <- mallocArray 65536 -- so we can go back to glushort...
cloudbo <- mglCreate glCreateBuffers
let cvsize = (sizeOf (0::Float)) * 8
cloudbosize = fromIntegral cvsize * 65536 -- this should be changed
glNamedBufferStorage cloudbo cloudbosize nullPtr GL_DYNAMIC_STORAGE_BIT
glBindBufferBase GL_SHADER_STORAGE_BUFFER 6 cloudbo
cloudptr <- mallocBytes (fromIntegral cloudbosize)
let cloudvbo = VBO cloudbo cloudptr cvsize
dummyvao <- mglCreate glGenVertexArrays
winpull <- makeShaderUsingVAO "pull/window" [vert,frag] pmTriangles (VAO dummyvao)
wallpull <- makeShaderUsingVAO "pull/wall" [vert,frag] pmTriangles (VAO dummyvao)
putStrLn "Setup shape VBO, VAO, EBO"
-- shVBO <- setupVBO shapeVerxSize
-- shPosVAO <- setupVAOUsingVBO [VertexAttribute 4 GL_FLOAT GL_FALSE 0] shVBO
-- shEBO <- setupEBO shPosVAO
-- note the shape shader vao is distinct from the position vao, but they
-- share an EBO
-- shapeshader <- makeShaderUsingVBO "shape/basic" [vert, frag] shapeVerxAttributes
-- pmTriangles
-- shVBO
-- glVertexArrayElementBuffer (shapeshader ^. shaderVAO . vaoName) (shEBO ^. uiboName)
shapeshader <-
makeShaderUsingVAO "shape/basic" [vert, frag] pmTriangles (VAO dummyvao)
putStrLn "Setup wall/windows VBO, VAO, EBO, shader"
-- winvbo <- setupVBO (floatSize * 8)
cloudshader <- makeShaderUsingVAO "pull/cloud" [vert,frag] pmTriangles (VAO dummyvao)
putStrLn "Setup lighting shaders"
lightingWallShadShad <-
makeShaderUsingVAO "lighting/wallShadow" [vert] pmTriangles (VAO dummyvao)
@@ -158,11 +158,11 @@ preloadRender = do
(toFloatVAs [3])
pmTriangles
chasmvbo
putStrLn "Setup cloud VBO, shader"
let cloudverxsizes = [4, 4, 4]
cloudvbo <- setupVBO (floatSize * sum cloudverxsizes)
(cloudshader, cloudebo) <-
makeShaderEBO "cloud/basic" [vert, frag] (toFloatVAs cloudverxsizes) pmTriangles cloudvbo
-- putStrLn "Setup cloud VBO, shader"
-- let cloudverxsizes = [4, 4, 4]
-- cloudvbo <- setupVBO (floatSize * sum cloudverxsizes)
-- (cloudshader, cloudebo) <-
-- makeShaderEBO "cloud/basic" [vert, frag] (toFloatVAs cloudverxsizes) pmTriangles cloudvbo
framebuf2 <- newTextureFramebuffer
framebuf3 <- newTextureFramebuffer
@@ -240,7 +240,7 @@ preloadRender = do
-- , _wallShader = wallshader
, _cloudVBO = cloudvbo
, _cloudShader = cloudshader
, _cloudEBO = cloudebo
-- , _cloudEBO = cloudebo
, _screenTextureVAO = screentexturevao
, _dummyVAO = VAO dummyvao
}