This commit is contained in:
2025-11-12 21:23:03 +00:00
parent 383beeae82
commit be64e786f9
3 changed files with 122 additions and 142 deletions
+50 -49
View File
@@ -2,10 +2,9 @@
--{-# OPTIONS_GHC -Wno-unused-top-binds #-}
module Preload.Render (
preloadRender,
-- cleanUpRenderPreload,
-- 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:
@@ -40,43 +41,42 @@ preloadRender = do
glBindBufferBase GL_UNIFORM_BUFFER 0 theUBO
winssbo <- mglCreate glCreateBuffers
let winssbosize = sizeOf (0::Float) * 8 * 1024
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
winptr <- mallocBytes winssbosize
let winvbo = VBO winssbo winptr (sizeOf (0::Float) * 8)
let wallsn = 4096
wallssbo <- mglCreate glCreateBuffers
let wallssbosize = sizeOf (0::Float) * 8 * wallsn
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
wallssboptr <- mallocBytes wallssbosize
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
ishapessbo <- mglCreate glCreateBuffers
let ishapessbosize = fromIntegral (sizeOf (0::GLuint) * 65536)
let ishapessbosize = fromIntegral (sizeOf (0 :: GLuint) * 65536)
glNamedBufferStorage ishapessbo ishapessbosize nullPtr GL_DYNAMIC_STORAGE_BIT
glBindBufferBase GL_SHADER_STORAGE_BUFFER 4 ishapessbo
ishptr <- mallocArray 65536
ishptr <- mallocArray 65536
let shEBO = UintBO ishapessbo ishptr
ieshapessbo <- mglCreate glCreateBuffers
let ieshapessbosize = fromIntegral (sizeOf (0::GLuint) * 65536)
let ieshapessbosize = fromIntegral (sizeOf (0 :: GLuint) * 65536)
glNamedBufferStorage ieshapessbo ieshapessbosize nullPtr GL_DYNAMIC_STORAGE_BIT
glBindBufferBase GL_SHADER_STORAGE_BUFFER 5 ieshapessbo
ieptr <- mallocArray 65536 -- so we can go back to glushort...
ieptr <- mallocArray 65536 -- so we can go back to glushort...
cloudbo <- mglCreate glCreateBuffers
let cvsize = (sizeOf (0::Float)) * 8
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
@@ -85,15 +85,14 @@ preloadRender = do
dummyvao <- mglCreate glGenVertexArrays
winpull <- makeShaderUsingVAO "pull/window" [vert, frag] pmTriangles (VAO dummyvao)
winpull <- makeShaderUsingVAO "pull/window" [vert,frag] pmTriangles (VAO dummyvao)
wallpull <- makeShaderUsingVAO "pull/wall" [vert,frag] pmTriangles (VAO dummyvao)
wallpull <- makeShaderUsingVAO "pull/wall" [vert, frag] pmTriangles (VAO dummyvao)
shapeshader <-
makeShaderUsingVAO "shape/basic" [vert, frag] pmTriangles (VAO dummyvao)
makeShaderUsingVAO "shape/basic" [vert, frag] pmTriangles (VAO dummyvao)
cloudshader <- makeShaderUsingVAO "pull/cloud" [vert,frag] pmTriangles (VAO dummyvao)
cloudshader <- makeShaderUsingVAO "pull/cloud" [vert, frag] pmTriangles (VAO dummyvao)
putStrLn "Setup lighting shaders"
lightingWallShadShad <-
@@ -102,8 +101,12 @@ preloadRender = do
makeShaderUsingVAO "lighting/cap" [vert] pmTriangles (VAO dummyvao)
lightingLineShadowShad <-
makeShaderUsingVAO "lighting/lineShadow" [vert] pmTriangles (VAO dummyvao)
ceilingstencilshader <- makeShaderUsingVAO "ceiling/stencil" [vert] pmTriangles
(VAO dummyvao)
ceilingstencilshader <-
makeShaderUsingVAO
"ceiling/stencil"
[vert]
pmTriangles
(VAO dummyvao)
putStrLn "Setup 2D shaders"
bslist <- makeShaderVBO "dualTwoD/basic" [vert, frag] (toFloatVAs [3, 4]) pmTriangles
@@ -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
@@ -158,11 +159,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
@@ -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
-- , _wallSSBO = wallssbo
-- , _shapeSSBO = shapessbo
-- , _ishapeSSBO = ishapessbo
-- , _ieshapeSSBO = ieshapessbo
-- , _lightsUBO = lightsubo
-- , _vboWindows = winvbo
, _vboShapes = shVBO
, -- , _winSSBO = winssbo
-- , _wallSSBO = wallssbo
-- , _shapeSSBO = shapessbo
-- , _ishapeSSBO = ishapessbo
-- , _ieshapeSSBO = ieshapessbo
-- , _lightsUBO = lightsubo
-- , _vboWindows = winvbo
_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
}