Use vertex pulling for clouds
This commit is contained in:
+19
-19
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user