Refactor shader code

This commit is contained in:
2023-03-20 11:18:53 +00:00
parent 32ecf46343
commit f4038fde46
4 changed files with 48 additions and 4 deletions
+1
View File
@@ -10,4 +10,5 @@ void main() {
if ( d > 1) { discard; }
fCol = mix (gColE , gColC, d);
fPos = vec4(gPos,1);
}
+4
View File
@@ -169,6 +169,10 @@ preloadRender = do
floorshader <- makeShader4 "floor/arrayPos" [vert, frag] [4,4] floorverxstrd ETriangles floorvbo
tonormalmap <- initTexture2DArray 3 GL_LINEAR_MIPMAP_LINEAR GL_LINEAR "data/normalMaps/normalArray.png"
todiffusemap <- initTexture2DArray 3 GL_LINEAR_MIPMAP_LINEAR GL_LINEAR "data/normalMaps/diffuseArray.png"
-- let cloudverxstrd = 16
-- cloudvbo <- setupVBO' cloudverxstrd
-- cloudshader <- makeShader4 "floor/arrayPos" [vert, frag] [4,4,4,4] cloudverxstrd ETriangles floorvbo
-- bind fixed vertex data
bufferPokedVBO (snd fsShad) 4
framebuf2 <- setupTextureFramebuffer 800 600
+35
View File
@@ -1,6 +1,7 @@
module Shader.Compile (
setupVBO,
setupVBO',
makeShaderVAOEBO,
makeShader,
makeShader4,
makeByteStringShaderUsingVAO,
@@ -46,6 +47,28 @@ makeShader s shaderlist sizes pm = do
}
, vbo)
makeShaderVAOEBO ::
-- | First part of the name of the shader
String ->
-- | shader types
[GLenum] ->
-- | The input vertex sizes
[Int] ->
-- | The stride
Int ->
GLenum ->
VBO ->
IO (Shader, VAO, EBO)
makeShaderVAOEBO s shaderlist sizes strd pm vbo = do
prog <- makeSourcedShader s shaderlist
vao <- setupVAOvbo sizes strd vbo
ebo <- setupEBO vao
return
( Shader prog pm
, vao
, ebo
)
makeShader4 ::
-- | First part of the name of the shader
String ->
@@ -181,6 +204,18 @@ setupVAOvbo sizes strd vbo = do
{ _vaoName = vaoname
}
setupEBO :: VAO -> IO EBO
setupEBO vao = do
eboptr <- mallocArray numDrawableElements
eboname <- mglCreate glCreateBuffers
glNamedBufferData
eboname
( fromIntegral $ glushortSize * numDrawableElements)
nullPtr
GL_STREAM_DRAW
glVertexArrayElementBuffer (vao ^. vaoName) eboname
return $ EBO eboname eboptr
setupVAOSized :: Int -> [Int] -> IO (VAO,VBO)
setupVAOSized ndraw sizes = do
vaoname <- mglCreate glCreateVertexArrays
+8 -4
View File
@@ -5,15 +5,14 @@ module Shader.Data
( VAO (..)
, VBO (..)
, EBO (..)
-- , FullShader (..)
, Shader (..)
, FullShader (..)
, ShaderTexture (..)
, EPrimitiveMode (..)
-- | Lens functions
, vaoName
-- , vaoVBO
-- , vaoAttribSizes
-- , vaoStride
, shaderUINT
, shaderPrimitive
, textureObject
@@ -43,6 +42,10 @@ data FullShader = FullShader
, _shadPrim' :: EPrimitiveMode
, _shadTex' :: Maybe ShaderTexture
}
data Shader = Shader
{ _shaderUINT :: GLuint -- should be shaderID
, _shaderPrimitive :: GLenum
}
{- | Vertex array object: contains the reference to the object,
and its buffer targets. -}
newtype VAO = VAO
@@ -90,3 +93,4 @@ makeLenses ''VBO
makeLenses ''FullShader
makeLenses ''EBO
makeLenses ''ShaderTexture
makeLenses ''Shader