diff --git a/shader/picture/charArray.frag b/shader/picture/charArray.frag index a829e327b..4b5212afa 100644 --- a/shader/picture/charArray.frag +++ b/shader/picture/charArray.frag @@ -4,6 +4,4 @@ layout (binding=50) uniform sampler2DArray thetexture; in vec4 vColor; in vec3 vTexCoord; void main() -{ - fColor = texture(thetexture, vec3 (vTexCoord.xyz)) * vColor; -} +{ fColor = texture(thetexture, vec3 (vTexCoord.xyz)) * vColor; } diff --git a/src/Data/Preload/Render.hs b/src/Data/Preload/Render.hs index ceaf074e4..39cdea825 100644 --- a/src/Data/Preload/Render.hs +++ b/src/Data/Preload/Render.hs @@ -26,7 +26,7 @@ data RenderData = RenderData , _shapeShader :: GLuint , _shapeEBO :: UintBO , _silhouetteEBO :: UintBO - , _pictureShaders :: MV.MVector (PrimState IO) (Shader,VBO) + , _pictureShaders :: MV.MVector (PrimState IO) (GLuint,VBO) , _fbo2 :: (FBO, TO) , _fboHalf1 :: (FBO, TO) , _fboHalf2 :: (FBO, TO) diff --git a/src/Render.hs b/src/Render.hs index 2aef1cf9b..68c229fd9 100644 --- a/src/Render.hs +++ b/src/Render.hs @@ -221,7 +221,7 @@ pingPongBetween (fb1, to1) (fb2, to2) fs = do renderLayer :: Layer -> - MV.MVector (PrimState IO) (Shader, VBO) -> + MV.MVector (PrimState IO) (GLuint, VBO) -> UMV.MVector (PrimState IO) Int -> IO () renderLayer layer shads counts = do diff --git a/src/Shader.hs b/src/Shader.hs index 4c5a15200..030426ab7 100644 --- a/src/Shader.hs +++ b/src/Shader.hs @@ -1,28 +1,23 @@ module Shader (drawShaderLay) where -import Control.Lens import Control.Monad.Primitive import qualified Data.Vector.Unboxed.Mutable as UMV import Graphics.GL.Core45 import Shader.Data import Shader.Parameters -drawShaderLay :: Int -> UMV.MVector (PrimState IO) Int -> Int -> (Shader, VBO) -> IO () +drawShaderLay :: Int -> UMV.MVector (PrimState IO) Int -> Int -> (GLuint, VBO) -> IO () {-# INLINE drawShaderLay #-} drawShaderLay l countsVector shadIn fs = do i <- UMV.read countsVector shadIn - glUseProgram (_shaderUINT $ fst fs) - glBindVertexArray $ fs ^. _1 . shaderVAO . unVAO + glUseProgram (fst fs) glUniform1i 0 . fromIntegral $ (l * numSubElements) glDrawArrays GL_TRIANGLES (fromIntegral $ l * numSubElements) - --(drawCountMod shadIn i) (drawCountMod shadIn i) - --(fromIntegral i) drawCountMod :: Int -> Int -> GLsizei drawCountMod i n --- | i == 3 = fromIntegral $ 2 * n -- modifies ellipse draw count | i == 3 = fromIntegral $ 2 * n -- modifies ellipse draw count | otherwise = fromIntegral n diff --git a/src/Shader/Bind.hs b/src/Shader/Bind.hs index 9621006c7..81d529300 100644 --- a/src/Shader/Bind.hs +++ b/src/Shader/Bind.hs @@ -30,7 +30,7 @@ bufferEBO x i = glNamedBufferSubData (x ^. uiboName) 0 (fromIntegral $ gluintSize * i) (x ^. uiboPtr) bufferShaderLayers - :: MV.MVector (PrimState IO) (Shader, VBO) -> UMV.MVector (PrimState IO) Int -> IO () + :: MV.MVector (PrimState IO) (GLuint, VBO) -> UMV.MVector (PrimState IO) Int -> IO () bufferShaderLayers shads counts = MV.imapM_ f shads where f i shad = do diff --git a/src/Shader/Compile.hs b/src/Shader/Compile.hs index 5c70c911b..17f990b28 100644 --- a/src/Shader/Compile.hs +++ b/src/Shader/Compile.hs @@ -28,16 +28,12 @@ makeShaderVBO :: [GLenum] -> -- | The input vertex sizes [VertexAttribute] -> - IO (Shader, VBO) + IO (GLuint, VBO) makeShaderVBO s shaderlist sizes = do prog <- makeSourcedShader s shaderlist - (vao, vbo) <- setupVBOVAO sizes + vbo <- setupVBO (vasTightStride sizes) return - ( Shader - { _shaderUINT = prog - , _shaderVAO = vao --- , _shaderPrimitive = pm - } + ( prog , vbo ) diff --git a/src/Shader/Poke.hs b/src/Shader/Poke.hs index c008e6c0e..d8d20ff7c 100644 --- a/src/Shader/Poke.hs +++ b/src/Shader/Poke.hs @@ -468,14 +468,14 @@ normalTo8 = over each f . normalize f x = floor $ x * 127 pokeLayVerxs :: - MV.MVector (PrimState IO) (Shader, VBO) -> + MV.MVector (PrimState IO) (GLuint, VBO) -> UMV.MVector (PrimState IO) Int -> Picture -> IO () pokeLayVerxs vbos counts = VFSM.mapM_ (pokeLayVerx vbos counts) . VFSM.fromList pokeLayVerx - :: MV.MVector (PrimState IO) (Shader, VBO) + :: MV.MVector (PrimState IO) (GLuint, VBO) -> UMV.MVector (PrimState IO) Int -> Verx -> IO ()