Refactor shader types

This commit is contained in:
2023-03-22 14:08:07 +00:00
parent c0579fae00
commit 5769477ad4
20 changed files with 303 additions and 330 deletions
+39 -38
View File
@@ -38,16 +38,16 @@ makeShader ::
[GLenum] ->
-- | The input vertex sizes
[Int] ->
EPrimitiveMode ->
IO (FullShader,VBO)
PrimitiveMode ->
IO (Shader,VBO)
makeShader s shaderlist sizes pm = do
prog <- makeSourcedShader s shaderlist
(vao,vbo) <- setupVAO sizes
return ( FullShader
{ _shadName = prog
, _shadVAO = vao
, _shadPrim' = pm
, _shadTex' = Nothing
return ( Shader
{ _shaderUINT = prog
, _shaderVAO = vao
, _shaderPrimitive = pm
, _shaderTextures = mempty
}
, vbo)
@@ -60,7 +60,7 @@ makeShaderEBO ::
[Int] ->
-- | The stride
Int ->
GLenum ->
PrimitiveMode ->
VBO ->
IO (Shader, EBO)
makeShaderEBO s shaderlist sizes strd pm vbo = do
@@ -68,7 +68,7 @@ makeShaderEBO s shaderlist sizes strd pm vbo = do
vao <- setupVAOvbo sizes strd vbo
ebo <- setupEBO vao
return
( Shader prog pm vao
( Shader prog pm vao []
, ebo
)
@@ -81,17 +81,17 @@ makeShader4 ::
[Int] ->
-- | The stride
Int ->
EPrimitiveMode ->
PrimitiveMode ->
VBO ->
IO FullShader
IO Shader
makeShader4 s shaderlist sizes strd pm vbo = do
prog <- makeSourcedShader s shaderlist
vao <- setupVAOvbo sizes strd vbo
return $ FullShader
{ _shadName = prog
, _shadVAO = vao
, _shadPrim' = pm
, _shadTex' = Nothing
return $ Shader
{ _shaderUINT = prog
, _shaderVAO = vao
, _shaderPrimitive = pm
, _shaderTextures = mempty
}
makeShader4UsingVAO ::
@@ -99,7 +99,7 @@ makeShader4UsingVAO ::
String ->
-- | shader types
[GLenum] ->
GLenum ->
PrimitiveMode ->
VAO ->
IO Shader
makeShader4UsingVAO s shaderlist pm vao = do
@@ -108,6 +108,7 @@ makeShader4UsingVAO s shaderlist pm vao = do
{ _shaderUINT = prog
, _shaderVAO = vao
, _shaderPrimitive = pm
, _shaderTextures = []
}
setupVBO :: Int -> IO VBO
@@ -137,17 +138,17 @@ makeByteStringShaderUsingVAO ::
String ->
-- | Filetype extensions and shader data
[(GLenum, BS.ByteString)] ->
EPrimitiveMode ->
PrimitiveMode ->
VAO ->
IO FullShader
IO Shader
makeByteStringShaderUsingVAO s shaderlist pm vao = do
prog <- makeShaderProgram s shaderlist
return $
FullShader
{ _shadName = prog
, _shadVAO = vao
, _shadPrim' = pm
, _shadTex' = Nothing
Shader
{ _shaderUINT = prog
, _shaderVAO = vao
, _shaderPrimitive = pm
, _shaderTextures = mempty
}
-- | Takes the VAO from elsewhere
@@ -156,17 +157,17 @@ makeShaderUsingVAO ::
String ->
-- | shader types
[GLenum] ->
EPrimitiveMode ->
PrimitiveMode ->
VAO ->
IO FullShader
IO Shader
makeShaderUsingVAO s shaderlist pm theVAO = do
prog <- makeSourcedShader s shaderlist
return $
FullShader
{ _shadName = prog
, _shadVAO = theVAO
, _shadPrim' = pm
, _shadTex' = Nothing
Shader
{ _shaderUINT = prog
, _shaderVAO = theVAO
, _shaderPrimitive = pm
, _shaderTextures = mempty
}
{- |
@@ -182,16 +183,16 @@ makeShaderSized ::
[Int] ->
-- | Number of vertexes that can be poked
Int ->
EPrimitiveMode ->
IO (FullShader,VBO)
PrimitiveMode ->
IO (Shader,VBO)
makeShaderSized s shaderlist sizes ndraw pm = do
prog <- makeSourcedShader s shaderlist
(vao,vbo) <- setupVAOSized ndraw sizes
return ( FullShader
{ _shadName = prog
, _shadVAO = vao
, _shadPrim' = pm
, _shadTex' = Nothing
return ( Shader
{ _shaderUINT = prog
, _shaderVAO = vao
, _shaderPrimitive = pm
, _shaderTextures = mempty
}
, vbo)