Cleanup, start to add creature silhouettes
This commit is contained in:
@@ -33,7 +33,7 @@ addTexture texturePath shad = do
|
||||
glTexSubImage2D GL_TEXTURE_2D 0 0 0 wtex htex GL_RGBA GL_UNSIGNED_BYTE ptr
|
||||
textureFilter Texture2DArray $= ((Linear',Just Linear') , Linear')
|
||||
generateMipmap' Texture2D
|
||||
return $ shad & shaderTexture ?~ ShaderTexture {_textureObject = textureOb}
|
||||
return $ shad & shadTex ?~ ShaderTexture {_textureObject = textureOb}
|
||||
|
||||
vaddTextureNoFilter :: String -> FullShader -> IO FullShader
|
||||
vaddTextureNoFilter texturePath shad = do
|
||||
@@ -48,7 +48,7 @@ vaddTextureNoFilter texturePath shad = do
|
||||
--withArray texData $ \ptr -> do
|
||||
V.unsafeWith (imageData tex) $ \ptr -> do
|
||||
glTexSubImage2D GL_TEXTURE_2D 0 0 0 wtex htex GL_RGBA GL_UNSIGNED_BYTE ptr
|
||||
return $ shad & shaderTexture ?~ ShaderTexture {_textureObject = textureOb}
|
||||
return $ shad & shadTex ?~ ShaderTexture {_textureObject = textureOb}
|
||||
|
||||
addTextureNoFilter :: String -> FullShader -> IO FullShader
|
||||
addTextureNoFilter texturePath shad = do
|
||||
@@ -62,7 +62,7 @@ addTextureNoFilter texturePath shad = do
|
||||
glTexStorage2D GL_TEXTURE_2D 1 GL_RGBA8 wtex htex
|
||||
V.unsafeWith (imageData tex) $ \ptr -> do
|
||||
glTexSubImage2D GL_TEXTURE_2D 0 0 0 wtex htex GL_RGBA GL_UNSIGNED_BYTE ptr
|
||||
return $ shad & shaderTexture ?~ ShaderTexture {_textureObject = textureOb}
|
||||
return $ shad & shadTex ?~ ShaderTexture {_textureObject = textureOb}
|
||||
|
||||
-- | for transforming a 256x256 image containing 64 tiles of 16x16 pixels into
|
||||
-- an image that was directly readable by glTexSubImage3D, used the
|
||||
@@ -84,7 +84,7 @@ addTextureArray texturePath shad = do
|
||||
glTexSubImage3D GL_TEXTURE_2D_ARRAY 0 0 0 0 32 32 64 GL_RGBA GL_UNSIGNED_BYTE ptr
|
||||
textureFilter Texture2DArray $= ((Linear',Just Linear') , Linear')
|
||||
generateMipmap' Texture2DArray
|
||||
return $ shad & shaderTexture ?~ ShaderTexture {_textureObject = textureOb}
|
||||
return $ shad & shadTex ?~ ShaderTexture {_textureObject = textureOb}
|
||||
|
||||
-- I am completely unclear on why this works with its current parameters
|
||||
tilesToLine
|
||||
@@ -96,5 +96,5 @@ tilesToLine n w = concat . concat . transpose . chunksOf n . chunksOf w
|
||||
|
||||
addUniforms :: [String] -> FullShader -> IO FullShader
|
||||
addUniforms uniStrings shad = do
|
||||
uniLocs <- mapM (uniformLocation $ _shaderProgram shad) uniStrings
|
||||
return $ shad & shaderCustomUnis %~ (++ uniLocs)
|
||||
uniLocs <- mapM (uniformLocation $ _shadProg shad) uniStrings
|
||||
return $ shad & shadUnis %~ (++ uniLocs)
|
||||
|
||||
+3
-3
@@ -29,7 +29,7 @@ bindShaderLayers :: MV.MVector (PrimState IO) FullShader -> UMV.MVector (PrimSta
|
||||
bindShaderLayers shads counts = MV.imapM_ f shads
|
||||
where
|
||||
f i shad = do
|
||||
let theVBO = _vaoVBO $ _shaderVAO shad
|
||||
let theVBO = _vaoVBO $ _shadVAO shad
|
||||
stride = sum $ _vboAttribSizes theVBO
|
||||
bindBuffer ArrayBuffer $= (Just . _vbo $ theVBO)
|
||||
VS.mapM_ (g stride theVBO) $ VS.enumFromStepN 0 1 6 -- [0..5]
|
||||
@@ -46,9 +46,9 @@ bindShaderLayers shads counts = MV.imapM_ f shads
|
||||
bindShader :: MV.MVector (PrimState IO) FullShader -> UMV.MVector (PrimState IO) Int -> IO ()
|
||||
bindShader shads counts = MV.imapM_ f shads
|
||||
where
|
||||
f i shad = UMV.read counts i >>= flip bindArrayBuffers (_vaoVBO . _shaderVAO $ shad)
|
||||
f i shad = UMV.read counts i >>= flip bindArrayBuffers (_vaoVBO . _shadVAO $ shad)
|
||||
|
||||
bindShaderBuffers :: [FullShader] -> [Int] -> IO ()
|
||||
bindShaderBuffers = zipWithM_ f
|
||||
where
|
||||
f fs i = bindArrayBuffers i $ _vaoVBO $ _shaderVAO fs
|
||||
f fs i = bindArrayBuffers i $ _vaoVBO $ _shadVAO fs
|
||||
|
||||
+23
-23
@@ -30,11 +30,11 @@ makeShader s shaderlist sizes pm = do
|
||||
prog <- makeSourcedShader s shaderlist
|
||||
vaob <- setupVAO sizes
|
||||
return $ FullShader
|
||||
{ _shaderProgram = prog
|
||||
, _shaderVAO = vaob
|
||||
, _shaderDrawPrimitive = pm
|
||||
, _shaderTexture = Nothing
|
||||
, _shaderCustomUnis = []
|
||||
{ _shadProg = prog
|
||||
, _shadVAO = vaob
|
||||
, _shadPrim = pm
|
||||
, _shadTex = Nothing
|
||||
, _shadUnis = []
|
||||
}
|
||||
makeByteStringShader
|
||||
:: String -- ^ (Arbitrary) name of the shader
|
||||
@@ -46,11 +46,11 @@ makeByteStringShader s shaderlist sizes pm = do
|
||||
prog <- makeShaderProgram s shaderlist
|
||||
vaob <- setupVAO sizes
|
||||
return $ FullShader
|
||||
{ _shaderProgram = prog
|
||||
, _shaderVAO = vaob
|
||||
, _shaderDrawPrimitive = pm
|
||||
, _shaderTexture = Nothing
|
||||
, _shaderCustomUnis = []
|
||||
{ _shadProg = prog
|
||||
, _shadVAO = vaob
|
||||
, _shadPrim = pm
|
||||
, _shadTex = Nothing
|
||||
, _shadUnis = []
|
||||
}
|
||||
makeByteStringShaderUsingVAO
|
||||
:: String -- ^ (Arbitrary) name of the shader
|
||||
@@ -61,10 +61,10 @@ makeByteStringShaderUsingVAO
|
||||
makeByteStringShaderUsingVAO s shaderlist pm fs = do
|
||||
prog <- makeShaderProgram s shaderlist
|
||||
return $ fs
|
||||
{ _shaderProgram = prog
|
||||
, _shaderDrawPrimitive = pm
|
||||
, _shaderTexture = Nothing
|
||||
, _shaderCustomUnis = []
|
||||
{ _shadProg = prog
|
||||
, _shadPrim = pm
|
||||
, _shadTex = Nothing
|
||||
, _shadUnis = []
|
||||
}
|
||||
|
||||
-- | Takes the VAO from another shader
|
||||
@@ -77,10 +77,10 @@ makeShaderUsingShaderVAO
|
||||
makeShaderUsingShaderVAO s shaderlist pm fs = do
|
||||
prog <- makeSourcedShader s shaderlist
|
||||
return $ fs
|
||||
{ _shaderProgram = prog
|
||||
, _shaderDrawPrimitive = pm
|
||||
, _shaderTexture = Nothing
|
||||
, _shaderCustomUnis = []
|
||||
{ _shadProg = prog
|
||||
, _shadPrim = pm
|
||||
, _shadTex = Nothing
|
||||
, _shadUnis = []
|
||||
}
|
||||
{- |
|
||||
Compiles a full shader found within the shader directory.
|
||||
@@ -97,11 +97,11 @@ makeShaderSized s shaderlist sizes ndraw pm = do
|
||||
prog <- makeSourcedShader s shaderlist
|
||||
vaob <- setupVAOSized sizes ndraw
|
||||
return $ FullShader
|
||||
{ _shaderProgram = prog
|
||||
, _shaderVAO = vaob
|
||||
, _shaderDrawPrimitive = pm
|
||||
, _shaderTexture = Nothing
|
||||
, _shaderCustomUnis = []
|
||||
{ _shadProg = prog
|
||||
, _shadVAO = vaob
|
||||
, _shadPrim = pm
|
||||
, _shadTex = Nothing
|
||||
, _shadUnis = []
|
||||
}
|
||||
|
||||
-- | Compile shader and get its uniform locations.
|
||||
|
||||
+10
-10
@@ -10,11 +10,11 @@ module Shader.Data
|
||||
-- | Lens functions
|
||||
, vao
|
||||
, vaoVBO
|
||||
, shaderProgram
|
||||
, shaderVAO
|
||||
, shaderDrawPrimitive
|
||||
, shaderTexture
|
||||
, shaderCustomUnis
|
||||
, shadProg
|
||||
, shadVAO
|
||||
, shadPrim
|
||||
, shadTex
|
||||
, shadUnis
|
||||
, vbo
|
||||
, vboPtr
|
||||
, vboAttribSizes
|
||||
@@ -29,11 +29,11 @@ import Foreign
|
||||
import Control.Lens
|
||||
{- | Datatype containing the necessary information for a single shader. -}
|
||||
data FullShader = FullShader
|
||||
{ _shaderProgram :: Program
|
||||
, _shaderVAO :: VAO
|
||||
, _shaderDrawPrimitive :: EPrimitiveMode
|
||||
, _shaderTexture :: Maybe ShaderTexture
|
||||
, _shaderCustomUnis :: [UniformLocation]
|
||||
{ _shadProg :: Program
|
||||
, _shadVAO :: VAO
|
||||
, _shadPrim :: EPrimitiveMode
|
||||
, _shadTex :: Maybe ShaderTexture
|
||||
, _shadUnis :: [UniformLocation]
|
||||
}
|
||||
{- | Vertex array object: contains the reference to the object,
|
||||
and its buffer targets. -}
|
||||
|
||||
+2
-2
@@ -29,7 +29,7 @@ pokeVerxs vbos count vxs = VS.mapM_ (pokeVerx vbos count) $ VS.fromList vxs
|
||||
pokeVerx :: MV.MVector (PrimState IO) FullShader -> UMV.MVector (PrimState IO) Int -> Verx -> IO ()
|
||||
pokeVerx vbos offsets Verx{_vxPos=thePos,_vxCol=theCol,_vxExt=ext,_vxShadNum=theShadNum} = do
|
||||
typeOff <- UMV.unsafeRead offsets sn
|
||||
basePtr <- _vboPtr . _vaoVBO . _shaderVAO <$> MV.read vbos sn
|
||||
basePtr <- _vboPtr . _vaoVBO . _shadVAO <$> MV.read vbos sn
|
||||
let thePtr = plusPtr basePtr (typeOff * pokeStride sn * floatSize)
|
||||
poke34 thePtr thePos theCol
|
||||
pokeArrayOff thePtr 7 ext
|
||||
@@ -48,7 +48,7 @@ pokeLayVerx :: MV.MVector (PrimState IO) FullShader -> UMV.MVector (PrimState IO
|
||||
--{-# INLINE pokeLayVerx #-}
|
||||
pokeLayVerx vbos counts vx = do
|
||||
theOff <- UMV.unsafeRead counts vecPos
|
||||
basePtr <- _vboPtr . _vaoVBO . _shaderVAO <$> MV.unsafeRead vbos sn
|
||||
basePtr <- _vboPtr . _vaoVBO . _shadVAO <$> MV.unsafeRead vbos sn
|
||||
let thePtr = plusPtr basePtr ((theOff + layOff) * theStride * floatSize)
|
||||
poke34 thePtr thePos theCol
|
||||
pokeArrayOff thePtr 7 (_vxExt vx)
|
||||
|
||||
Reference in New Issue
Block a user