Work on lightmaps, add file
This commit is contained in:
+14
-51
@@ -29,9 +29,6 @@ import Graphics.GL.Core45
|
||||
50 charMapVert
|
||||
-}
|
||||
|
||||
numDrawableWalls :: Int
|
||||
numDrawableWalls = 5000
|
||||
|
||||
preloadRender :: IO RenderData
|
||||
preloadRender = do
|
||||
-- set up uniform buffer object
|
||||
@@ -47,40 +44,6 @@ preloadRender = do
|
||||
glNamedBufferData lightsubo 640 nullPtr GL_STREAM_DRAW
|
||||
glBindBufferBase GL_UNIFORM_BUFFER 1 lightsubo
|
||||
|
||||
-- setup wall points VBO, VAOs and shaders
|
||||
wpVBOname <- mglCreate glCreateBuffers
|
||||
wpVBOptr <- mallocArray (8 * numDrawableWalls)
|
||||
glNamedBufferData wpVBOname
|
||||
( fromIntegral $ floatSize * numDrawableWalls * 8)
|
||||
nullPtr
|
||||
GL_STREAM_DRAW
|
||||
let wpVBO = VBO{_vboName = wpVBOname, _vboPtr = wpVBOptr, _vboVertexSize = 8}
|
||||
wpVAOname <- mglCreate glCreateVertexArrays
|
||||
glBindVertexArray wpVAOname
|
||||
glVertexArrayVertexBuffer wpVAOname 0 wpVBOname 0 (fromIntegral $ floatSize * 8)
|
||||
setupVertexAttribPointer wpVAOname 0 4 0
|
||||
wpColVAOname <- mglCreate glCreateVertexArrays
|
||||
glBindVertexArray wpColVAOname
|
||||
glVertexArrayVertexBuffer wpColVAOname 0 wpVBOname 0 (fromIntegral $ floatSize * 8)
|
||||
setupVertexAttribPointer wpColVAOname 0 4 0
|
||||
setupVertexAttribPointer wpColVAOname 1 4 4
|
||||
let wpVAO = VAO{_vaoName = wpVAOname}
|
||||
wpColVAO = VAO{_vaoName = wpColVAOname}
|
||||
-- setup window points VBO, VAOs and shaders
|
||||
winVBOname <- mglCreate glCreateBuffers
|
||||
winVBOptr <- mallocArray (8 * numDrawableWalls)
|
||||
glNamedBufferData wpVBOname
|
||||
( fromIntegral $ floatSize * numDrawableWalls * 8)
|
||||
nullPtr
|
||||
GL_STREAM_DRAW
|
||||
let winVBO = VBO{_vboName = winVBOname, _vboPtr = winVBOptr, _vboVertexSize = 8}
|
||||
winColVAOname <- mglCreate glCreateVertexArrays
|
||||
glBindVertexArray winColVAOname
|
||||
glVertexArrayVertexBuffer winColVAOname 0 winVBOname 0 (fromIntegral $ floatSize * 8)
|
||||
setupVertexAttribPointer winColVAOname 0 4 0
|
||||
setupVertexAttribPointer winColVAOname 1 4 4
|
||||
let winColVAO = VAO
|
||||
{_vaoName = winColVAOname}
|
||||
-- setup shape geometry/cap VBO and two VAOs
|
||||
shVBO <- setupVBO nShapeVerxComp
|
||||
shPosVAOname <- mglCreate glCreateVertexArrays
|
||||
@@ -105,10 +68,12 @@ preloadRender = do
|
||||
GL_STREAM_DRAW
|
||||
let silEBO = EBO{_eboName = silEBOname, _eboPtr = silEBOptr}
|
||||
shEdgeVAO = VAO{_vaoName = shEdgeVAOname}
|
||||
-- shEdgeVAO is unecessary?
|
||||
-- lighting shaders
|
||||
|
||||
let wallverxstrd = 8
|
||||
wallvbo <- setupVBO wallverxstrd
|
||||
lightingWallShadShad <-
|
||||
makeShaderUsingVAO "lighting/wallShadow" [vert, geom, frag] pmPoints wpVAO
|
||||
makeShaderUsingVBO "lighting/wallShadow" [vert, geom, frag] [4] pmPoints wallvbo
|
||||
|
||||
lightingCapShad <-
|
||||
makeShaderUsingVAO "lighting/cap" [vert, geom] pmTriangles shPosVAO
|
||||
lightingLineShadowShad <-
|
||||
@@ -119,7 +84,7 @@ preloadRender = do
|
||||
shadowcapshader <-
|
||||
makeShaderUsingVAO "shadow/cap" [vert, geom] pmTriangles shPosVAO
|
||||
shadowwallshader <-
|
||||
makeShaderUsingVAO "shadow/wallShadow" [vert, geom] pmPoints wpVAO
|
||||
makeShaderUsingVBO "shadow/wallShadow" [vert, geom] [4] pmPoints wallvbo
|
||||
shadowlightshader <- makeShaderSized "shadow/light" [vert, geom, frag]
|
||||
[1] 1
|
||||
pmPoints
|
||||
@@ -128,14 +93,14 @@ preloadRender = do
|
||||
|
||||
-- 2D draw shaders
|
||||
bslist <- makeShaderVBO "dualTwoD/basic" [vert, frag] [3, 4] pmTriangles
|
||||
bslista <- makeShaderUsingVBO "shape/basic" [vert, frag] shapeVerxSizes nShapeVerxComp pmTriangles shVBO
|
||||
bslista <- makeShaderUsingVBO "shape/basic" [vert, frag] shapeVerxSizes pmTriangles shVBO
|
||||
glVertexArrayElementBuffer (bslista ^. shaderVAO . vaoName) (shEBO' ^. eboName)
|
||||
--glVertexArrayElementBuffer (bslista ^. shaderVAO . vaoName) shEBOname
|
||||
aslist <- makeShaderVBO "dualTwoD/arc" [vert, frag] [3, 4, 3] pmTriangles
|
||||
eslist <- makeShaderVBO "dualTwoD/ellipse" [vert, geom, frag] [3, 4] pmTriangles
|
||||
cslist <-
|
||||
makeShaderVBO "picture/charArray" [vert, frag] [3, 4, 4] pmTriangles
|
||||
initTexture2DArray 50 "data/texture/charMapVert.png" 2 16 32 95 GL_NEAREST_MIPMAP_LINEAR GL_LINEAR
|
||||
initTexture2DArray 50 "data/texture/charMapVertBig.png" 2 32 64 95 GL_NEAREST_MIPMAP_LINEAR GL_LINEAR
|
||||
|
||||
screentexturevbo <- mglCreate glCreateBuffers
|
||||
withArray (concat cornerList) $ \ptr ->
|
||||
@@ -154,13 +119,12 @@ preloadRender = do
|
||||
makeShaderUsingVAO "lighting/texture" [vert, frag] pmTriangleStrip screentexturevao
|
||||
barrelShad <- makeShaderVBO "texture/barrel" [vert, geom, frag] [2, 2, 2, 1] pmPoints
|
||||
-- blank wallShader
|
||||
wallBlankShad <- makeShaderUsingVAO "wall/blank" [vert, geom, frag] pmPoints wpColVAO
|
||||
let wallverxstrd = 8
|
||||
wallvbo <- setupVBO wallverxstrd
|
||||
wallshader <- makeShaderUsingVBO "wall/basic" [vert,geom,frag] [4,4] wallverxstrd pmPoints wallvbo
|
||||
winvbo <- setupVBO 8
|
||||
windowshader <- makeShaderUsingVBO "wall/blank" [vert, geom, frag] [4,4] pmPoints winvbo
|
||||
wallshader <- makeShaderUsingVBO "wall/basic" [vert,geom,frag] [4,4] pmPoints wallvbo
|
||||
let floorverxstrd = 8
|
||||
floorvbo <- setupVBOStatic floorverxstrd
|
||||
floorshader <- makeShaderUsingVBO "floor/arrayPos" [vert, frag] [4,4] floorverxstrd pmTriangles floorvbo
|
||||
floorshader <- makeShaderUsingVBO "floor/arrayPos" [vert, frag] [4,4] pmTriangles floorvbo
|
||||
initTexture2DArraySquare 40 3 GL_LINEAR_MIPMAP_LINEAR GL_LINEAR "data/normalMaps/diffuseArray.png"
|
||||
initTexture2DArraySquare 41 3 GL_LINEAR_MIPMAP_LINEAR GL_LINEAR "data/normalMaps/normalArray.png"
|
||||
|
||||
@@ -218,7 +182,7 @@ preloadRender = do
|
||||
, _shadowWallShader = shadowwallshader
|
||||
, _shadowLightShader = shadowlightshader
|
||||
, _shadowCombineShader = shadowcombineshader
|
||||
, _windowShader = wallBlankShad{_shaderVAO = winColVAO}
|
||||
, _windowShader = windowshader
|
||||
, _fullscreenShader = fsShad
|
||||
, _alphaDivideShader = alphadivideshader
|
||||
, _lightingTextureShader = lightingTextureShad
|
||||
@@ -241,8 +205,7 @@ preloadRender = do
|
||||
, _matUBO = theUBO
|
||||
, _orthonormalMatUBO = orthonormalUBO
|
||||
, _lightsUBO = lightsubo
|
||||
, _vboWalls = wpVBO
|
||||
, _vboWindows = winVBO
|
||||
, _vboWindows = winvbo
|
||||
, _vboShapes = shVBO
|
||||
, _floorVBO = floorvbo
|
||||
, _floorShader = floorshader
|
||||
|
||||
Reference in New Issue
Block a user