Tweak vbo
This commit is contained in:
+15
-15
@@ -38,39 +38,39 @@ makeLenses ''RenderData
|
||||
preloadRender :: IO RenderData
|
||||
preloadRender = do
|
||||
-- lighting shaders
|
||||
lightningFloorShad <- makeShader "lighting/floor" [vert,geom,frag] [(0,4)] Points
|
||||
lightningFloorShad <- makeShader "lighting/floor" [vert,geom,frag] [4] Points
|
||||
(return . return . flat4 . _unRender1111)
|
||||
wsShad <- makeShader "lighting/occlude" [vert,geom,frag] [(0,4)] Points pokeWPStrat
|
||||
wsShad <- makeShader "lighting/occlude" [vert,geom,frag] [4] Points pokeWPStrat
|
||||
>>= addUniforms ["lightPos"]
|
||||
wlLightShad
|
||||
<- makeShader "lighting/wall" [vert,geom,frag] [(0,4)] Points pokeWPStrat
|
||||
<- makeShader "lighting/wall" [vert,geom,frag] [4] Points pokeWPStrat
|
||||
>>= addUniforms ["lightPos","radLum"]
|
||||
-- 2D draw shaders
|
||||
bslist <- makeShader "twoD/basic" [vert,frag] [(0,3),(1,4)] Triangles pokeTriStrat
|
||||
lslist <- makeShader "twoD/basic" [vert,frag] [(0,3),(1,4)] Lines pokeLineStrat
|
||||
aslist <- makeShader "twoD/arc" [vert,geom,frag] [(0,3),(1,4),(2,4)] Points pokeArcStrat
|
||||
eslist <- makeShader "twoD/ellipse" [vert,geom,frag] [(0,3),(1,4)] Triangles pokeEllStrat
|
||||
bslist <- makeShader "twoD/basic" [vert,frag] [3,4] Triangles pokeTriStrat
|
||||
lslist <- makeShader "twoD/basic" [vert,frag] [3,4] Lines pokeLineStrat
|
||||
aslist <- makeShader "twoD/arc" [vert,geom,frag] [3,4,4] Points pokeArcStrat
|
||||
eslist <- makeShader "twoD/ellipse" [vert,geom,frag] [3,4] Triangles pokeEllStrat
|
||||
bezierQuadShader <- makeShader
|
||||
"twoD/bezierQuad" [vert,frag] [(0,3),(1,4),(2,4)] TriangleStrip pokeBezQStrat
|
||||
"twoD/bezierQuad" [vert,frag] [3,4,4] TriangleStrip pokeBezQStrat
|
||||
cslist <- makeShader "twoD/character" [vert,geom,frag]
|
||||
[(0,3),(1,4),(2,3)] Points pokeCharStrat
|
||||
[3,4,3] Points pokeCharStrat
|
||||
>>= addTexture "data/texture/charMap.png"
|
||||
-- texture shaders, no textures attached
|
||||
fsShad <- makeShader "texture/simple" [vert,frag] [(0,2),(1,2)] TriangleStrip $ const
|
||||
fsShad <- makeShader "texture/simple" [vert,frag] [2,2] TriangleStrip $ const
|
||||
[[[-1, 1],[0,1]]
|
||||
,[[ 1, 1],[1,1]]
|
||||
,[[-1,-1],[0,0]]
|
||||
,[[ 1,-1],[1,0]]
|
||||
]
|
||||
_ <- F.foldM (pokeShader fsShad) [RenderConst] -- fix fullscreen vertex positions now
|
||||
boxBlurShad <- makeShader "texture/boxBlur" [vert,frag] [(0,2),(1,2)] TriangleStrip $ const
|
||||
boxBlurShad <- makeShader "texture/boxBlur" [vert,frag] [2,2] TriangleStrip $ const
|
||||
[[[-1, 1],[0,1]]
|
||||
,[[ 1, 1],[1,1]]
|
||||
,[[-1,-1],[0,0]]
|
||||
,[[ 1,-1],[1,0]]
|
||||
]
|
||||
_ <- F.foldM (pokeShader boxBlurShad) [RenderConst] -- fix fullscreen vertex positions now
|
||||
grayscaleShad <- makeShader "texture/grayscale" [vert,frag] [(0,2),(1,2)] TriangleStrip $ const
|
||||
grayscaleShad <- makeShader "texture/grayscale" [vert,frag] [2,2] TriangleStrip $ const
|
||||
[[[-1, 1],[0,1]]
|
||||
,[[ 1, 1],[1,1]]
|
||||
,[[-1,-1],[0,0]]
|
||||
@@ -78,13 +78,13 @@ preloadRender = do
|
||||
]
|
||||
_ <- F.foldM (pokeShader grayscaleShad) [RenderConst] -- fix fullscreen vertex positions now
|
||||
-- background shader
|
||||
bgShad <- makeShader "background" [vert,geom,frag] [(0,4),(1,2)] Points pokeBGStrat
|
||||
bgShad <- makeShader "background" [vert,geom,frag] [4,2] Points pokeBGStrat
|
||||
>>= addTexture "data/texture/marbleSlabs.png"
|
||||
-- >>= addTexture "data/texture/smudgedDirt.png"
|
||||
-- blank wallShader
|
||||
wlBlank <- makeShader "wall/blank" [vert,geom,frag] [(0,4),(1,4)] Points pokeWPColStrat
|
||||
wlBlank <- makeShader "wall/blank" [vert,geom,frag] [4,4] Points pokeWPColStrat
|
||||
-- textured wallShader
|
||||
wlTexture <- makeShader "wall/texture" [vert,geom,frag] [(0,4),(1,4)] Points pokeWPColStrat
|
||||
wlTexture <- makeShader "wall/texture" [vert,geom,frag] [4,4] Points pokeWPColStrat
|
||||
>>= addTexture "data/texture/grayscaleDirt.png"
|
||||
|
||||
---- texture shader
|
||||
|
||||
+9
-8
@@ -117,13 +117,13 @@ The shader is made up of files begining with the inputted string with extensions
|
||||
makeShader
|
||||
:: String -- ^ First part of the name of the shader
|
||||
-> [ShaderType] -- ^ Filetype extensions
|
||||
-> [(GLuint,Int)] -- ^ The shaders input vertices (location, size)
|
||||
-> [Int] -- ^ The input vertex sizes
|
||||
-> PrimitiveMode
|
||||
-> (RenderType -> [[[Float]]]) -- ^ Poke strategy: method for creating a list of vertex data to be bound
|
||||
-> IO (FullShader)
|
||||
makeShader s shaderlist alocs pm renStrat = do
|
||||
makeShader s shaderlist sizes pm renStrat = do
|
||||
(prog,unis) <- makeSourcedShader s shaderlist
|
||||
vaob <- setupVAO alocs
|
||||
vaob <- setupVAO sizes
|
||||
return $ FullShader { _shaderProgram = prog
|
||||
, _shaderMatrixUniform = unis
|
||||
, _shaderVAO = vaob
|
||||
@@ -143,13 +143,13 @@ numDrawableElements :: Int
|
||||
{-# INLINE numDrawableElements #-}
|
||||
numDrawableElements = 50000
|
||||
|
||||
setupVAO :: [(GLuint,Int)] -> IO VAO
|
||||
setupVAO ps = do
|
||||
setupVAO :: [Int] -> IO VAO
|
||||
setupVAO sizes = do
|
||||
theVAO <- genObjectName
|
||||
bindVertexArrayObject $= Just theVAO
|
||||
theVBO <- setupVBO $ map snd ps
|
||||
vbos <- forM ps setupArrayBuffer
|
||||
ptrs <- forM (zip vbos $ map snd ps) setupVBOPointers
|
||||
theVBO <- setupVBO $ sizes
|
||||
vbos <- forM (zip (map fromIntegral [(0::Int)..]) sizes) setupArrayBuffer
|
||||
ptrs <- forM (zip vbos sizes) setupVBOPointers
|
||||
return $ VAO
|
||||
{ _vao = theVAO
|
||||
, _vaoBufferTargets = ptrs
|
||||
@@ -182,6 +182,7 @@ setupVertexAttribPointer
|
||||
setupVertexAttribPointer loc siz strd off = do
|
||||
vertexAttribPointer (AttribLocation (fi loc)) $=
|
||||
(ToFloat, VertexArrayDescriptor (fi' siz) Float (fi'' $ floatSize * strd) (bufferOffset off))
|
||||
vertexAttribArray (AttribLocation (fi loc)) $= Enabled
|
||||
where
|
||||
fi = fromIntegral
|
||||
fi' = fromIntegral
|
||||
|
||||
Reference in New Issue
Block a user