Replace explicit matrix uniforms with single ubo
This commit is contained in:
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user