lambdacube-gl 0.5.0.1 → 0.5.0.3
raw patch · 5 files changed
+16/−14 lines, 5 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
Files
- lambdacube-gl.cabal +1/−1
- src/LambdaCube/GL/Backend.hs +5/−4
- src/LambdaCube/GL/Input.hs +7/−6
- src/LambdaCube/GL/Mesh.hs +2/−2
- src/LambdaCube/GL/Util.hs +1/−1
lambdacube-gl.cabal view
@@ -1,5 +1,5 @@ name: lambdacube-gl-version: 0.5.0.1+version: 0.5.0.3 synopsis: OpenGL 3.3 Core Profile backend for LambdaCube 3D description: OpenGL 3.3 Core Profile backend for LambdaCube 3D homepage: http://lambdacube3d.com
src/LambdaCube/GL/Backend.hs view
@@ -4,6 +4,7 @@ import Control.Applicative import Control.Monad import Control.Monad.State+import Data.Maybe import Data.Bits import Data.IORef import Data.IntMap (IntMap)@@ -264,7 +265,7 @@ , inputUniforms = Map.fromList inUniforms , inputTextures = Map.fromList inTextures , inputTextureUniforms = S.fromList $ texUnis- , inputStreams = Map.fromList [(n,(idx, attrName)) | (n,idx) <- Map.toList $ attributes, let Just attrName = Map.lookup n lcStreamName]+ , inputStreams = Map.fromList [(n,(idx, attrName)) | (n,idx) <- Map.toList $ attributes, let attrName = fromMaybe (error $ "missing attribute: " ++ n) $ Map.lookup n lcStreamName] } compileRenderTarget :: Vector TextureDescriptor -> Vector GLTexture -> RenderTarget -> IO GLRenderTarget@@ -393,7 +394,7 @@ buffer <- compileBuffer arrays cmdRef <- newIORef [] let toStream (n,i) = (n,Stream- { streamType = fromJust $ toStreamType =<< Map.lookup n (IR.streamType s)+ { streamType = fromMaybe (error $ "missing attribute: " ++ n) $ toStreamType =<< Map.lookup n (IR.streamType s) , streamBuffer = buffer , streamArrIdx = i , streamStart = 0@@ -436,7 +437,7 @@ uniInputType (GLUniform ty _) = ty -- object attribute stream commands- streamCmds = [attrCmd i s | (i,name) <- Map.elems attrMap, let Just s = Map.lookup name attrs]+ streamCmds = [attrCmd i s | (i,name) <- Map.elems attrMap, let s = fromMaybe (error $ "missing attribute: " ++ name) $ Map.lookup name attrs] where attrMap = inputStreams prg attrCmd i s = case s of@@ -603,7 +604,7 @@ return (i,Nothing) -- create input connection let sm = slotMap input- pToI = [i | n <- glSlotNames, let Just i = Map.lookup n sm]+ pToI = [i | n <- glSlotNames, let i = fromMaybe (error $ "missing object array: " ++ n) $ Map.lookup n sm] iToP = V.update (V.replicate (Map.size sm) Nothing) (V.imap (\i v -> (v, Just i)) pToI) writeIORef glInput $ Just $ InputConnection idx input pToI iToP
src/LambdaCube/GL/Input.hs view
@@ -5,6 +5,7 @@ import Control.Exception import Control.Monad import Control.Monad.Writer+import Data.Maybe import Data.IORef import Data.Map (Map) import Data.IntMap (IntMap)@@ -78,15 +79,15 @@ addObject input slotName prim indices attribs uniformNames = do let sch = schema input forM_ uniformNames $ \n -> case Map.lookup n (uniforms sch) of- Nothing -> throw $ userError $ "Unknown uniform: " ++ show n+ Nothing -> fail $ "Unknown uniform: " ++ show n _ -> return () case Map.lookup slotName (objectArrays sch) of- Nothing -> throw $ userError $ "Unknown slot: " ++ show slotName+ Nothing -> fail $ "Unknown slot: " ++ show slotName Just (ObjectArraySchema sPrim sAttrs) -> do- when (sPrim /= (primitiveToFetchPrimitive prim)) $ throw $ userError $+ when (sPrim /= (primitiveToFetchPrimitive prim)) $ fail $ "Primitive mismatch for slot (" ++ show slotName ++ ") expected " ++ show sPrim ++ " but got " ++ show prim let sType = fmap streamToStreamType attribs- when (sType /= sAttrs) $ throw $ userError $ unlines $ + when (sType /= sAttrs) $ fail $ unlines $ [ "Attribute stream mismatch for slot (" ++ show slotName ++ ") expected " , show sAttrs , " but got "@@ -101,7 +102,7 @@ enabled <- newIORef True index <- readIORef seed modifyIORef seed (1+)- (setters,unis) <- mkUniform [(n,t) | n <- uniformNames, let Just t = Map.lookup n (uniforms sch)]+ (setters,unis) <- mkUniform [(n,t) | n <- uniformNames, let t = fromMaybe (error $ "missing uniform: " ++ n) $ Map.lookup n (uniforms sch)] cmdsRef <- newIORef (V.singleton V.empty) let obj = Object { objSlot = slotIdx@@ -216,7 +217,7 @@ uniInputType (GLUniform ty _) = ty -- object attribute stream commands- objStreamCmds = [attrCmd i s | (i,name) <- Map.elems attrMap, let Just s = Map.lookup name objAttrs]+ objStreamCmds = [attrCmd i s | (i,name) <- Map.elems attrMap, let s = fromMaybe (error $ "missing attribute: " ++ name) $ Map.lookup name objAttrs] where attrMap = inputStreams prg objAttrs = objAttributes obj
src/LambdaCube/GL/Mesh.hs view
@@ -50,7 +50,7 @@ addMeshToObjectArray :: GLStorage -> String -> [String] -> GPUMesh -> IO Object addMeshToObjectArray input slotName objUniNames (GPUMesh _ (GPUData prim streams indices _)) = do -- select proper attributes- let Just (ObjectArraySchema slotPrim slotStreams) = Map.lookup slotName $! objectArrays $! schema input+ let (ObjectArraySchema slotPrim slotStreams) = fromMaybe (error $ "missing object array: " ++ slotName) $ Map.lookup slotName $! objectArrays $! schema input filterStream n _ = Map.member n slotStreams addObject input slotName prim indices (Map.filterWithKey filterStream streams) objUniNames @@ -82,7 +82,7 @@ updateMesh (GPUMesh (Mesh dMA dMP) (GPUData _ dS dI _)) al mp = do -- check type match let arrayChk (Array t1 s1 _) (Array t2 s2 _) = t1 == t2 && s1 == s2- ok = and [Map.member n dMA && arrayChk (meshAttrToArray a1) (meshAttrToArray a2) | (n,a1) <- al, let Just a2 = Map.lookup n dMA]+ ok = and [Map.member n dMA && arrayChk (meshAttrToArray a1) (meshAttrToArray a2) | (n,a1) <- al, let a2 = fromMaybe (error $ "missing mesh attribute: " ++ n) $ Map.lookup n dMA] if not ok then putStrLn "updateMesh: attribute mismatch!" else do forM_ al $ \(n,a) -> do
src/LambdaCube/GL/Util.hs view
@@ -341,7 +341,7 @@ | 0 <= i && i < V.length a && if elem t integralTypes then elem at integralArrTypes else True -> fromStreamType t- | otherwise -> throw $ userError "streamToInputType failed"+ | otherwise -> error "streamToInputType failed" where at = arrType $! (a V.! i) integralTypes = [Attribute_Word, Attribute_V2U, Attribute_V3U, Attribute_V4U, Attribute_Int, Attribute_V2I, Attribute_V3I, Attribute_V4I]