Replace explicit matrix uniforms with single ubo

This commit is contained in:
jgk
2021-06-24 17:58:15 +02:00
parent 7ab932db93
commit 97598bc171
26 changed files with 39 additions and 174 deletions
+4 -6
View File
@@ -25,11 +25,10 @@ makeShader
-> (RenderType -> [[Float]]) -- ^ Poke strategy: method for creating a list of vertex data to be bound
-> IO FullShader
makeShader s shaderlist sizes pm renStrat = do
(prog,unis) <- makeSourcedShader s shaderlist
vaob <- setupVAO sizes
prog <- makeSourcedShader s shaderlist
vaob <- setupVAO sizes
return $ FullShader
{ _shaderProgram = prog
, _shaderMatrixUniform = unis
, _shaderVAO = vaob
, _shaderPokeStrategy = renStrat
, _shaderDrawPrimitive = pm
@@ -40,12 +39,11 @@ makeShader s shaderlist sizes pm renStrat = do
-- | Compile shader and get its uniform locations.
-- supposes the shader code is in the shader folder, with the string names
-- followed by .vert/.geom/.frag.
makeSourcedShader :: String -> [ShaderType] -> IO (Program, UniformLocation)
makeSourcedShader :: String -> [ShaderType] -> IO Program
makeSourcedShader s sts = do
sources <- forM sts $ \st -> BS.readFile ("shader/" ++ s ++ shaderTypeExt st)
prog <- makeShaderProgram s $ zip sts sources
uniformLocations <- uniformLocation prog "worldMat"
return (prog,uniformLocations)
return prog
shaderTypeExt :: ShaderType -> String
shaderTypeExt VertexShader = ".vert"
-2
View File
@@ -12,7 +12,6 @@ module Shader.Data
, vaoVBO
, shaderProgram
, shaderMatrixUniform
, shaderVAO
, shaderPokeStrategy
, shaderDrawPrimitive
@@ -45,7 +44,6 @@ data VBO = VBO
{- | Datatype containing the necessary information for a single shader. -}
data FullShader = FullShader
{ _shaderProgram :: Program
, _shaderMatrixUniform :: UniformLocation
, _shaderVAO :: VAO
, _shaderPokeStrategy :: RenderType -> [[Float]]-- -> F.FoldM IO RenderType Int
, _shaderDrawPrimitive :: PrimitiveMode