keid-resource-gltf 0.1.0.0 → 0.1.0.1
raw patch · 4 files changed
+30/−35 lines, 4 filesdep −derive-storabledep −derive-storable-plugindep −rio-appdep ~geomancyPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependencies removed: derive-storable, derive-storable-plugin, rio-app, vulkan
Dependency ranges changed: geomancy
API changes (from Hackage documentation)
+ Resource.Gltf.Model: instance GHC.Generics.Generic Resource.Gltf.Model.VertexAttrs
+ Resource.Gltf.Model: instance Geomancy.Gl.Block.Block Resource.Gltf.Model.VertexAttrs
- Resource.Gltf.Load: loadMeshPrimitives :: HasLogFunc env => Bool -> Bool -> FilePath -> RIO env (GlTF, Vector (Vector MeshPrimitive))
+ Resource.Gltf.Load: loadMeshPrimitives :: (MonadReader env m, HasLogFunc env, MonadThrow m, MonadUnliftIO m) => Bool -> Bool -> FilePath -> m (GlTF, Vector (Vector MeshPrimitive))
Files
- ChangeLog.md +3/−1
- keid-resource-gltf.cabal +3/−7
- src/Resource/Gltf/Load.hs +17/−9
- src/Resource/Gltf/Model.hs +7/−18
ChangeLog.md view
@@ -1,3 +1,5 @@ # Changelog for keid-resource-gltf -## Unreleased changes+## 0.1.0.1++- Switch to block-derived Storable instance.
keid-resource-gltf.cabal view
@@ -1,11 +1,11 @@ cabal-version: 1.12 --- This file has been generated from package.yaml by hpack version 0.34.4.+-- This file has been generated from package.yaml by hpack version 0.35.1. -- -- see: https://github.com/sol/hpack name: keid-resource-gltf-version: 0.1.0.0+version: 0.1.0.1 synopsis: GLTF loader for Keid engine. category: Game Engine author: IC Rainbow@@ -93,12 +93,8 @@ base >=4.7 && <5 , bytestring , containers- , derive-storable- , derive-storable-plugin- , geomancy+ , geomancy >=0.2.5.0 , gltf-codec , keid-core , rio >=0.1.12.0- , rio-app- , vulkan default-language: Haskell2010
src/Resource/Gltf/Load.hs view
@@ -68,11 +68,15 @@ -- XXX: OTOH, it may be better to unfold scene first 🤔 loadMeshPrimitives- :: HasLogFunc env+ :: ( MonadReader env m+ , HasLogFunc env+ , MonadThrow m+ , MonadUnliftIO m+ ) => Bool -> Bool -> FilePath- -> RIO env+ -> m ( Root.GlTF , Vector (Vector MeshPrimitive) )@@ -268,14 +272,18 @@ pure (root, meshPrimitives) accessBuffer- :: forall a env . (Storable a)- => (Accessor.AccessorIx -> RIO env Accessor.Accessor)- -> (BufferView.BufferViewIx -> RIO env BufferView.BufferView)- -> (Buffer.BufferIx -> RIO env ByteString)+ :: forall a m+ . ( MonadThrow m+ , MonadIO m+ , Storable a+ )+ => (Accessor.AccessorIx -> m Accessor.Accessor)+ -> (BufferView.BufferViewIx -> m BufferView.BufferView)+ -> (Buffer.BufferIx -> m ByteString) -> Accessor.AttributeType -> Accessor.ComponentType -> Accessor.AccessorIx- -> RIO env [a]+ -> m [a] accessBuffer getAccessor getBufferView getBuffer expectAttribute expectComponent aix = do Accessor.Accessor{bufferView, byteOffset=accOffset, componentType, count, type'} <- getAccessor aix @@ -304,11 +312,11 @@ Foreign.peekArray count . Foreign.castPtr unexpected- :: (Eq e, Exception exception)+ :: (Eq e, Exception exception, MonadThrow m) => (e -> e -> exception) -> e -> e- -> RIO env ()+ -> m () unexpected cons expected got = unless (expected == got) $ throwM $ cons expected got
src/Resource/Gltf/Model.hs view
@@ -1,3 +1,5 @@+{-# LANGUAGE DeriveAnyClass #-}+ module Resource.Gltf.Model ( Mesh , MeshPrimitive@@ -15,9 +17,10 @@ import RIO import Codec.GlTF.Material qualified as GlTF (Material)-import Foreign qualified import Data.Semigroup (Semigroup(..)) import Geomancy (Vec2)+import Geomancy.Gl.Block (Block)+import Geomancy.Gl.Block qualified as Block import Geomancy.Vec3 qualified as Vec3 import RIO.List qualified as List import RIO.Vector qualified as Vector@@ -103,20 +106,6 @@ { vaTexCoord :: Vec2 , vaNormal :: Vec3.Packed , vaTangent :: Vec3.Packed- } deriving (Eq, Ord, Show)--instance Storable VertexAttrs where- alignment ~_ = 16-- sizeOf ~_ = 8 + 12 + 12-- peek ptr = do- vaTexCoord <- Foreign.peekByteOff ptr 0 -- +8- vaNormal <- Foreign.peekByteOff ptr 8 -- +12- vaTangent <- Foreign.peekByteOff ptr 20 -- +12- pure VertexAttrs{..}-- poke ptr VertexAttrs{..} = do- Foreign.pokeByteOff ptr 0 vaTexCoord- Foreign.pokeByteOff ptr 8 vaNormal- Foreign.pokeByteOff ptr 20 vaTangent+ }+ deriving (Eq, Ord, Show, Generic, Block)+ deriving Storable via (Block.Packed VertexAttrs)