Cleanup
This commit is contained in:
+36
-33
@@ -5,6 +5,7 @@ module Preload.Render (
|
||||
cleanUpRenderPreload,
|
||||
) where
|
||||
|
||||
import Control.Lens
|
||||
import Control.Monad
|
||||
import Data.Preload.Render
|
||||
import qualified Data.Vector.Mutable as MV
|
||||
@@ -46,8 +47,8 @@ preloadRender = do
|
||||
bindVertexArrayObject $= Just wpColVAOname
|
||||
setupVertexAttribPointer 0 4 8 0
|
||||
setupVertexAttribPointer 1 4 8 4
|
||||
let wpVAO = VAO{_vao = wpVAOname, _vaoVBO = wpVBO}
|
||||
wpColVAO = VAO{_vao = wpColVAOname, _vaoVBO = wpVBO}
|
||||
let wpVAO = VAO{_vaoName = wpVAOname, _vaoVBO = wpVBO}
|
||||
wpColVAO = VAO{_vaoName = wpColVAOname, _vaoVBO = wpVBO}
|
||||
-- setup window points VBO, VAOs and shaders
|
||||
winVBOname <- genObjectName
|
||||
winVBOptr <- mallocArray (8 * numDrawableWalls)
|
||||
@@ -62,7 +63,7 @@ preloadRender = do
|
||||
bindVertexArrayObject $= Just winColVAOname
|
||||
setupVertexAttribPointer 0 4 8 0
|
||||
setupVertexAttribPointer 1 4 8 4
|
||||
let winColVAO = VAO{_vao = winColVAOname, _vaoVBO = winVBO}
|
||||
let winColVAO = VAO{_vaoName = winColVAOname, _vaoVBO = winVBO}
|
||||
-- setup shape geometry/cap VBO and two VAOs
|
||||
shEBOname <- genObjectName
|
||||
shEBOptr <- mallocArray numDrawableElements
|
||||
@@ -93,8 +94,8 @@ preloadRender = do
|
||||
bindBuffer ArrayBuffer $= Just shVBOname
|
||||
setupVertexAttribPointer 0 3 7 0
|
||||
bindBuffer ElementArrayBuffer $= Just shEBOname
|
||||
let shPosColVAO = VAO{_vao = shPosColVAOname, _vaoVBO = shVBO}
|
||||
shPosVAO = VAO{_vao = shPosVAOname, _vaoVBO = shVBO}
|
||||
let shPosColVAO = VAO{_vaoName = shPosColVAOname, _vaoVBO = shVBO}
|
||||
shPosVAO = VAO{_vaoName = shPosVAOname, _vaoVBO = shVBO}
|
||||
--setup silhouette edge VAO
|
||||
shEdgeVAOname <- genObjectName
|
||||
bindVertexArrayObject $= Just shEdgeVAOname
|
||||
@@ -111,56 +112,58 @@ preloadRender = do
|
||||
, StreamDraw
|
||||
)
|
||||
let silEBO = EBO{_ebo = silEBOname, _eboPtr = silEBOptr}
|
||||
shEdgeVAO = VAO{_vao = shEdgeVAOname, _vaoVBO = shVBO}
|
||||
shEdgeVAO = VAO{_vaoName = shEdgeVAOname, _vaoVBO = shVBO}
|
||||
-- lighting shaders
|
||||
lightingWallShadShad <-
|
||||
makeShaderUsingVAO' "lighting/wallShadow" [vert', geom', frag'] EPoints wpVAO
|
||||
>>= addUniforms' ["lightPos"]
|
||||
makeShaderUsingVAO "lighting/wallShadow" [vert', geom', frag'] EPoints wpVAO
|
||||
>>= addUniforms ["lightPos"]
|
||||
lightingCapShad <-
|
||||
makeShaderUsingVAO' "lighting/cap" [vert', geom', frag'] ETriangles shPosVAO
|
||||
>>= addUniforms' ["lightPos"]
|
||||
makeShaderUsingVAO "lighting/cap" [vert', geom', frag'] ETriangles shPosVAO
|
||||
>>= addUniforms ["lightPos"]
|
||||
lightingLineShadowShad <-
|
||||
makeShaderUsingVAO' "lighting/lineShadow" [vert', geom', frag'] ELinesAdjacency shEdgeVAO
|
||||
>>= addUniforms' ["lightPos", "radiusUniform"]
|
||||
makeShaderUsingVAO "lighting/lineShadow" [vert', geom', frag'] ELinesAdjacency shEdgeVAO
|
||||
>>= addUniforms ["lightPos", "radiusUniform"]
|
||||
-- positional shader
|
||||
positionalBlankShad <- makeShader' "positional/blank" [vert', frag'] [3] ETriangles
|
||||
positionalBlankShad <- makeShader "positional/blank" [vert', frag'] [3] ETriangles
|
||||
-- 2D draw shaders
|
||||
bslist <- makeShader' "dualTwoD/basic" [vert', frag'] [3, 4] ETriangles
|
||||
bslista <- makeShader' "dualTwoD/basic" [vert', frag'] [3, 4] ETriangles
|
||||
aslist <- makeShader' "dualTwoD/arc" [vert', frag'] [3, 4, 3] ETriangles
|
||||
eslist <- makeShader' "dualTwoD/ellipse" [vert', geom', frag'] [3, 4] ETriangles
|
||||
bezierQuadShader <- makeShader' "dualTwoD/bezierQuad" [vert', frag'] [3, 4, 4] ETriangleStrip
|
||||
bslist <- makeShader "dualTwoD/basic" [vert', frag'] [3, 4] ETriangles
|
||||
bslista <- makeShader "dualTwoD/basic" [vert', frag'] [3, 4] ETriangles
|
||||
aslist <- makeShader "dualTwoD/arc" [vert', frag'] [3, 4, 3] ETriangles
|
||||
eslist <- makeShader "dualTwoD/ellipse" [vert', geom', frag'] [3, 4] ETriangles
|
||||
bezierQuadShader <- makeShader "dualTwoD/bezierQuad" [vert', frag'] [3, 4, 4] ETriangleStrip
|
||||
cslist <-
|
||||
makeShader' "dualTwoD/character" [vert', frag'] [3, 4, 2] ETriangles
|
||||
>>= vaddTextureNoFilter' "data/texture/charMap.png"
|
||||
makeShader "dualTwoD/character" [vert', frag'] [3, 4, 2] ETriangles
|
||||
>>= vaddTextureNoFilter "data/texture/charMap.png"
|
||||
-- this should really be a 2d texture array
|
||||
basicTweakZShad <- makeShader' "dualTwoD/basicTweakZ" [vert', frag'] [4, 4] ETriangles
|
||||
basicTweakZShad <- makeShader "dualTwoD/basicTweakZ" [vert', frag'] [4, 4] ETriangles
|
||||
-- fullscreen shaders
|
||||
--fullscreenAlphaHalveShad <- makeShaderSized "fullscreen/alphaHalve" [vert,frag] [2] 4 ETriangleStrip
|
||||
--pokeArray (shadVBOptr fullscreenAlphaHalveShad) $ concat cornerListNoCoord
|
||||
-- texture shaders, no textures attached
|
||||
fsShad <- makeShaderSized' "texture/simple" [vert', frag'] [2, 2] 4 ETriangleStrip
|
||||
fsShad <- makeShaderSized "texture/simple" [vert', frag'] [2, 2] 4 ETriangleStrip
|
||||
-- note we directly poke the shader vertex data here
|
||||
-- could possibly use an indirect draw call
|
||||
pokeArray (shadVBOptr' fsShad) $ concat cornerList
|
||||
|
||||
bloomBlurShad <- makeShaderUsingShaderVAO' "texture/bloomBlur" [vert', frag'] ETriangleStrip fsShad
|
||||
colorBlurShad <- makeShaderUsingShaderVAO' "texture/colorBlur" [vert', frag'] ETriangleStrip fsShad
|
||||
grayscaleShad <- makeShaderUsingShaderVAO' "texture/grayscale" [vert', frag'] ETriangleStrip fsShad
|
||||
let fsshadvao = fsShad ^. shadVAO'
|
||||
|
||||
bloomBlurShad <- makeShaderUsingVAO "texture/bloomBlur" [vert', frag'] ETriangleStrip fsshadvao
|
||||
colorBlurShad <- makeShaderUsingVAO "texture/colorBlur" [vert', frag'] ETriangleStrip fsshadvao
|
||||
grayscaleShad <- makeShaderUsingVAO "texture/grayscale" [vert', frag'] ETriangleStrip fsshadvao
|
||||
lightingTextureShad <-
|
||||
makeShaderUsingShaderVAO' "lighting/texture" [vert', frag'] ETriangleStrip fsShad
|
||||
>>= addUniforms' ["lightPos", "lumRad"]
|
||||
barrelShad <- makeShader' "texture/barrel" [vert', geom', frag'] [2, 2, 2, 1] EPoints
|
||||
makeShaderUsingVAO "lighting/texture" [vert', frag'] ETriangleStrip fsshadvao
|
||||
>>= addUniforms ["lightPos", "lumRad"]
|
||||
barrelShad <- makeShader "texture/barrel" [vert', geom', frag'] [2, 2, 2, 1] EPoints
|
||||
-- blank wallShader
|
||||
wallBlankShad <- makeShaderUsingVAO' "wall/blank" [vert', geom', frag'] EPoints wpColVAO
|
||||
wallBlankShad <- makeShaderUsingVAO "wall/blank" [vert', geom', frag'] EPoints wpColVAO
|
||||
-- textured wallShader
|
||||
wallTextureShad <-
|
||||
makeShaderUsingVAO' "wall/texture" [vert', geom', frag'] EPoints wpColVAO
|
||||
>>= addTexture' "data/texture/grayscaleDirt.png"
|
||||
makeShaderUsingVAO "wall/texture" [vert', geom', frag'] EPoints wpColVAO
|
||||
>>= addTexture "data/texture/grayscaleDirt.png"
|
||||
---- texture array shader
|
||||
textArrayShad <-
|
||||
makeShader' "texture/arrayPos" [vert', frag'] [3, 3] ETriangles
|
||||
>>= addTextureArray' "data/texture/ayene_wooden_floor_transformed.png"
|
||||
makeShader "texture/arrayPos" [vert', frag'] [3, 3] ETriangles
|
||||
>>= addTextureArray "data/texture/ayene_wooden_floor_transformed.png"
|
||||
-- >>= addTextureArray "data/texture/ayene_wooden_floor.png"
|
||||
-- bind fixed vertex data
|
||||
bindShaderBuffers' [fsShad] [4, 4]
|
||||
|
||||
+41
-26
@@ -1,41 +1,56 @@
|
||||
{-# LANGUAGE OverloadedStrings #-}
|
||||
module Preload.Update
|
||||
( pdataResizeUpdate
|
||||
) where
|
||||
|
||||
module Preload.Update (
|
||||
pdataResizeUpdate,
|
||||
) where
|
||||
|
||||
import Control.Lens
|
||||
import qualified Data.ByteString as BS
|
||||
import qualified Data.ByteString.Char8 as BSC
|
||||
import Data.Preload
|
||||
import Data.Preload.Render
|
||||
import Framebuffer.Update
|
||||
import Shader.Compile
|
||||
import Shader.Data
|
||||
import Data.Preload.Render
|
||||
|
||||
import qualified Data.ByteString as BS
|
||||
import qualified Data.ByteString.Char8 as BSC
|
||||
pdataResizeUpdate
|
||||
:: Int -- ^ Scaled width
|
||||
-> Int -- ^ Scaled height
|
||||
-> Int -- ^ Full width
|
||||
-> Int -- ^ Full height
|
||||
-> PreloadData
|
||||
-> IO PreloadData
|
||||
pdataResizeUpdate ::
|
||||
-- | Scaled width
|
||||
Int ->
|
||||
-- | Scaled height
|
||||
Int ->
|
||||
-- | Full width
|
||||
Int ->
|
||||
-- | Full height
|
||||
Int ->
|
||||
PreloadData ->
|
||||
IO PreloadData
|
||||
pdataResizeUpdate xsize ysize xfull yfull pdata = do
|
||||
rd <- renderDataResizeUpdate xsize ysize xfull yfull (_renderData pdata)
|
||||
return (pdata {_renderData = rd})
|
||||
return (pdata{_renderData = rd})
|
||||
|
||||
renderDataResizeUpdate
|
||||
:: Int -- ^ Scaled width
|
||||
-> Int -- ^ Scaled height
|
||||
-> Int -- ^ Full width
|
||||
-> Int -- ^ Full height
|
||||
-> RenderData
|
||||
-> IO RenderData
|
||||
renderDataResizeUpdate ::
|
||||
-- | Scaled width
|
||||
Int ->
|
||||
-- | Scaled height
|
||||
Int ->
|
||||
-- | Full width
|
||||
Int ->
|
||||
-- | Full height
|
||||
Int ->
|
||||
RenderData ->
|
||||
IO RenderData
|
||||
renderDataResizeUpdate xsize ysize xfull yfull rdata = do
|
||||
rdata' <- sizeFBOs xsize ysize xfull yfull rdata
|
||||
bbVert <- BS.readFile "shader/texture/bloomBlur.vert"
|
||||
bbFrag <- BS.readFile "shader/texture/bloomBlur.frag"
|
||||
let (bh,bmid) = BS.breakSubstring "(" bbFrag
|
||||
(_,btt) = BS.breakSubstring ")" bmid
|
||||
let (bh, bmid) = BS.breakSubstring "(" bbFrag
|
||||
(_, btt) = BS.breakSubstring ")" bmid
|
||||
bbFrag' = BS.append bh $ BS.append (BSC.pack $ '(' : show xsize ++ "," ++ show ysize) btt
|
||||
--BSC.putStrLn bbFrag'
|
||||
bbShad <- makeByteStringShaderUsingVAO' "bloomBlur" [(vert',bbVert),(frag',bbFrag')] ETriangleStrip
|
||||
(_fullscreenShader rdata)
|
||||
return (rdata' {_bloomBlurShader = bbShad})
|
||||
bbShad <-
|
||||
makeByteStringShaderUsingVAO
|
||||
"bloomBlur"
|
||||
[(vert', bbVert), (frag', bbFrag')]
|
||||
ETriangleStrip
|
||||
(rdata ^. fullscreenShader . shadVAO')
|
||||
return (rdata'{_bloomBlurShader = bbShad})
|
||||
|
||||
Reference in New Issue
Block a user