-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | Basic rendering programs for Keid engine.
--
-- Basic rendering programs for Keid engine.
@package keid-render-basic
@version 0.1.2.1
module Global.Resource.CubeMap.Base.Paths
pattern BLACK_KTX_ZST :: FilePath
module Global.Resource.CubeMap.Base
data Collection a
Collection :: a -> Collection a
[$sel:black:Collection] :: Collection a -> a
sources :: Collection Source
instance Data.Functor.Rep.Representable Global.Resource.CubeMap.Base.Collection
instance GHC.Base.Applicative Global.Resource.CubeMap.Base.Collection
instance GHC.Generics.Generic1 Global.Resource.CubeMap.Base.Collection
instance GHC.Generics.Generic (Global.Resource.CubeMap.Base.Collection a)
instance Data.Traversable.Traversable Global.Resource.CubeMap.Base.Collection
instance Data.Foldable.Foldable Global.Resource.CubeMap.Base.Collection
instance GHC.Base.Functor Global.Resource.CubeMap.Base.Collection
instance GHC.Show.Show a => GHC.Show.Show (Global.Resource.CubeMap.Base.Collection a)
instance Data.Distributive.Distributive Global.Resource.CubeMap.Base.Collection
module Global.Resource.Texture.Base.Paths
pattern BLACK_KTX_ZST :: FilePath
pattern FLAT_KTX_ZST :: FilePath
pattern IBL_BRDF_LUT_KTX_ZST :: FilePath
module Global.Resource.Texture.Base
data Collection a
Collection :: a -> a -> a -> Collection a
[$sel:black:Collection] :: Collection a -> a
[$sel:flat:Collection] :: Collection a -> a
[$sel:ibl_brdf_lut:Collection] :: Collection a -> a
sources :: Collection Source
instance Data.Functor.Rep.Representable Global.Resource.Texture.Base.Collection
instance GHC.Base.Applicative Global.Resource.Texture.Base.Collection
instance GHC.Generics.Generic1 Global.Resource.Texture.Base.Collection
instance GHC.Generics.Generic (Global.Resource.Texture.Base.Collection a)
instance Data.Traversable.Traversable Global.Resource.Texture.Base.Collection
instance Data.Foldable.Foldable Global.Resource.Texture.Base.Collection
instance GHC.Base.Functor Global.Resource.Texture.Base.Collection
instance GHC.Show.Show a => GHC.Show.Show (Global.Resource.Texture.Base.Collection a)
instance Data.Distributive.Distributive Global.Resource.Texture.Base.Collection
module Render.Code.Lit
raySphereIntersection :: Code
-- | The Henyey-Greenstein Phase Function
hgPhase :: Code
structLight :: Code
structMaterial :: Code
shadowFuns :: Code
litMain :: Code
brdfSpecular :: Code
module Render.Debug.Model
type Model buf = Indexed buf Packed VertexAttrs
type VertexAttrs = "uv" ::: Vec2
vkVertexAttrs :: [Format]
-- | Data for a single element.
data InstanceAttrs
InstanceAttrs :: TextureParams -> Transform -> InstanceAttrs
[$sel:textureParams:InstanceAttrs] :: InstanceAttrs -> TextureParams
[$sel:transformMat4:InstanceAttrs] :: InstanceAttrs -> Transform
instanceAttrs :: Int32 -> Int32 -> [Transform] -> InstanceAttrs
-- | Intermediate data to be shipped.
type StorableAttrs = (Vector TextureParams, Vector Transform)
storableAttrs1 :: Int32 -> Int32 -> [Transform] -> StorableAttrs
-- | GPU-bound data.
data InstanceBuffers textureStage transformStage
InstanceBuffers :: InstanceTexture textureStage -> InstanceTransform transformStage -> InstanceBuffers textureStage transformStage
[$sel:ibTexture:InstanceBuffers] :: InstanceBuffers textureStage transformStage -> InstanceTexture textureStage
[$sel:ibTransform:InstanceBuffers] :: InstanceBuffers textureStage transformStage -> InstanceTransform transformStage
data TextureParams
TextureParams :: Vec2 -> Vec2 -> Vec4 -> Int32 -> Int32 -> TextureParams
[$sel:tpScale:TextureParams] :: TextureParams -> Vec2
[$sel:tpOffset:TextureParams] :: TextureParams -> Vec2
[$sel:tpGamma:TextureParams] :: TextureParams -> Vec4
[$sel:tpSamplerId:TextureParams] :: TextureParams -> Int32
[$sel:tpTextureId:TextureParams] :: TextureParams -> Int32
vkInstanceTexture :: [Format]
allocateInstancesWith :: (MonadResource m, MonadUnliftIO m) => (BufferUsageFlagBits -> Int -> Vector TextureParams -> m (InstanceTexture texture)) -> (BufferUsageFlagBits -> Int -> Vector Transform -> m (InstanceTransform transform)) -> (forall stage a. Allocated stage a -> m ()) -> [InstanceAttrs] -> m (ReleaseKey, InstanceBuffers texture transform)
allocateInstancesCoherent :: (MonadReader env m, HasVulkan env, MonadResource m, MonadUnliftIO m) => [InstanceAttrs] -> m (ReleaseKey, InstanceBuffers 'Coherent 'Coherent)
allocateInstancesCoherent_ :: HasVulkan env => Int -> ResourceT (RIO env) (InstanceBuffers 'Coherent 'Coherent)
updateCoherentResize_ :: (HasVulkan context, MonadUnliftIO m) => context -> InstanceBuffers 'Coherent 'Coherent -> (Vector TextureParams, Vector Transform) -> m (InstanceBuffers 'Coherent 'Coherent)
data Transform
instance GHC.Show.Show Render.Debug.Model.TextureParams
instance Vulkan.Zero.Zero Render.Debug.Model.InstanceAttrs
instance Resource.Model.HasVertexBuffers (Render.Debug.Model.InstanceBuffers textureStage transformStage)
instance Vulkan.Zero.Zero Render.Debug.Model.TextureParams
instance Foreign.Storable.Storable Render.Debug.Model.TextureParams
module Render.DescSets.Set0.Code
set0binding0 :: Code
set0binding1 :: Code
set0binding2 :: Code
set0binding3 :: Code
set0binding4 :: Code
set0binding5 :: Code
set0binding5color :: Code
set0binding6 :: Code
module Render.DescSets.Sun
data Sun
Sun :: Transform -> Vec4 -> Vec4 -> Vec4 -> Vec4 -> Sun
[$sel:sunViewProjection:Sun] :: Sun -> Transform
[$sel:sunShadow:Sun] :: Sun -> Vec4
[$sel:sunPosition:Sun] :: Sun -> Vec4
[$sel:sunDirection:Sun] :: Sun -> Vec4
[$sel:sunColor:Sun] :: Sun -> Vec4
createSet0Ds :: Tagged '[Sun] DescriptorSetLayout -> ResourceT (StageRIO st) (Tagged '[Sun] (Vector DescriptorSet), Allocated 'Coherent Sun)
set0 :: Tagged Sun DsBindings
-- | Maximum "guaranteed" amount for multiview passes
pattern MAX_VIEWS :: Int
instance GHC.Generics.Generic Render.DescSets.Sun.Sun
instance GHC.Show.Show Render.DescSets.Sun.Sun
instance Foreign.Storable.Generic.Internal.GStorable Render.DescSets.Sun.Sun
instance Vulkan.Zero.Zero Render.DescSets.Sun.Sun
module Render.Font.EvanwSdf.Model
type Model buf = Indexed buf Packed VertexAttrs
type VertexAttrs = "uv" ::: Vec2
data InstanceAttrs
InstanceAttrs :: Vec4 -> Vec4 -> Vec4 -> Vec4 -> Int32 -> Int32 -> Float -> Float -> InstanceAttrs
[$sel:vertRect:InstanceAttrs] :: InstanceAttrs -> Vec4
[$sel:fragRect:InstanceAttrs] :: InstanceAttrs -> Vec4
[$sel:color:InstanceAttrs] :: InstanceAttrs -> Vec4
[$sel:outlineColor:InstanceAttrs] :: InstanceAttrs -> Vec4
[$sel:samplerId:InstanceAttrs] :: InstanceAttrs -> Int32
[$sel:textureId:InstanceAttrs] :: InstanceAttrs -> Int32
[$sel:smoothing:InstanceAttrs] :: InstanceAttrs -> Float
[$sel:outlineWidth:InstanceAttrs] :: InstanceAttrs -> Float
vkInstanceAttrs :: [Format]
type InstanceBuffer stage = Allocated stage InstanceAttrs
instance GHC.Show.Show Render.Font.EvanwSdf.Model.InstanceAttrs
instance GHC.Classes.Eq Render.Font.EvanwSdf.Model.InstanceAttrs
instance Foreign.Storable.Storable Render.Font.EvanwSdf.Model.InstanceAttrs
module Render.ForwardMsaa
data ForwardMsaa
ForwardMsaa :: RenderPass -> AllocatedImage -> AllocatedImage -> Vector Framebuffer -> Rect2D -> Vector ClearValue -> RefCounted -> ForwardMsaa
[$sel:fmRenderPass:ForwardMsaa] :: ForwardMsaa -> RenderPass
[$sel:fmColor:ForwardMsaa] :: ForwardMsaa -> AllocatedImage
[$sel:fmDepth:ForwardMsaa] :: ForwardMsaa -> AllocatedImage
[$sel:fmFrameBuffers:ForwardMsaa] :: ForwardMsaa -> Vector Framebuffer
[$sel:fmRenderArea:ForwardMsaa] :: ForwardMsaa -> Rect2D
[$sel:fmClear:ForwardMsaa] :: ForwardMsaa -> Vector ClearValue
[$sel:fmRelease:ForwardMsaa] :: ForwardMsaa -> RefCounted
allocateMsaa :: (MonadResource m, MonadVulkan env m, HasLogFunc env, HasSwapchain context) => context -> m ForwardMsaa
updateMsaa :: (MonadResource m, MonadVulkan env m, HasLogFunc env, HasSwapchain context) => context -> ForwardMsaa -> m ForwardMsaa
allocateRenderPassMsaa :: (MonadVulkan env m, MonadResource m, HasSwapchain context) => context -> m (ReleaseKey, RenderPass)
type FramebuffersMsaa = (RefCounted, AllocatedImage, AllocatedImage, Vector Framebuffer)
allocateFramebufferMsaa :: (MonadResource m, MonadVulkan env m, HasLogFunc env, HasSwapchain context) => context -> RenderPass -> m FramebuffersMsaa
usePass :: (MonadIO io, HasRenderPass a) => a -> Word32 -> CommandBuffer -> io r -> io r
beginInfo :: HasRenderPass a => a -> Word32 -> RenderPassBeginInfo '[]
instance Engine.Vulkan.Types.HasRenderPass Render.ForwardMsaa.ForwardMsaa
instance Engine.Vulkan.Types.RenderPass Render.ForwardMsaa.ForwardMsaa
module Render.Lit.Colored.Model
type Model buf = Indexed buf Packed VertexAttrs
data VertexAttrs
VertexAttrs :: Vec4 -> Vec4 -> Vec2 -> Packed -> VertexAttrs
[$sel:vaBaseColor:VertexAttrs] :: VertexAttrs -> Vec4
[$sel:vaEmissiveColor:VertexAttrs] :: VertexAttrs -> Vec4
[$sel:vaMetallicRoughness:VertexAttrs] :: VertexAttrs -> Vec2
[$sel:vaNormal:VertexAttrs] :: VertexAttrs -> Packed
vkVertexAttrs :: [Format]
type InstanceAttrs = Transform
instance GHC.Generics.Generic Render.Lit.Colored.Model.VertexAttrs
instance GHC.Show.Show Render.Lit.Colored.Model.VertexAttrs
instance GHC.Classes.Ord Render.Lit.Colored.Model.VertexAttrs
instance GHC.Classes.Eq Render.Lit.Colored.Model.VertexAttrs
instance Foreign.Storable.Storable Render.Lit.Colored.Model.VertexAttrs
module Render.Lit.Material
data Material
Material :: Vec4 -> Vec2 -> Vec4 -> Float -> Float -> Int32 -> Int32 -> Int32 -> Int32 -> Int32 -> Material
[$sel:mBaseColor:Material] :: Material -> Vec4
[$sel:mMetallicRoughness:Material] :: Material -> Vec2
[$sel:mEmissive:Material] :: Material -> Vec4
[$sel:mNormalScale:Material] :: Material -> Float
[$sel:mAlphaCutoff:Material] :: Material -> Float
[$sel:mBaseColorTex:Material] :: Material -> Int32
[$sel:mMetallicRoughnessTex:Material] :: Material -> Int32
[$sel:mEmissiveTex:Material] :: Material -> Int32
[$sel:mNormalTex:Material] :: Material -> Int32
[$sel:mAmbientOcclusionTex:Material] :: Material -> Int32
shiftTextures :: Int32 -> Material -> Material
instance GHC.Generics.Generic Render.Lit.Material.Material
instance GHC.Show.Show Render.Lit.Material.Material
instance GHC.Classes.Ord Render.Lit.Material.Material
instance GHC.Classes.Eq Render.Lit.Material.Material
instance Foreign.Storable.Generic.Internal.GStorable Render.Lit.Material.Material
instance Vulkan.Zero.Zero Render.Lit.Material.Material
module Render.DescSets.Set0
data Scene
Scene :: Transform -> Transform -> Transform -> Transform -> Vec3 -> Vec3 -> Vec4 -> Vec4 -> Int32 -> Word32 -> Scene
[$sel:sceneProjection:Scene] :: Scene -> Transform
[$sel:sceneInvProjection:Scene] :: Scene -> Transform
[$sel:sceneView:Scene] :: Scene -> Transform
[$sel:sceneInvView:Scene] :: Scene -> Transform
[$sel:sceneViewPos:Scene] :: Scene -> Vec3
[$sel:sceneViewDir:Scene] :: Scene -> Vec3
-- | 4 debug tweaks bound to Kontrol
[$sel:sceneTweaks:Scene] :: Scene -> Vec4
[$sel:sceneFog:Scene] :: Scene -> Vec4
[$sel:sceneEnvCube:Scene] :: Scene -> Int32
[$sel:sceneNumLights:Scene] :: Scene -> Word32
emptyScene :: Scene
allocate :: (Traversable textures, Traversable cubes) => Tagged '[Scene] DescriptorSetLayout -> textures (Texture Flat) -> cubes (Texture CubeMap) -> Maybe (Allocated 'Coherent Sun) -> ("shadow maps" ::: Vector ImageView) -> Maybe (Allocated 'Coherent Material) -> ResourceT (StageRIO st) (FrameResource '[Scene])
-- | Minimal viable Scene without textures and lighting.
allocateEmpty :: Tagged '[Scene] DescriptorSetLayout -> ResourceT (StageRIO st) (FrameResource '[Scene])
updateSet0Ds :: (HasVulkan context, Traversable textures, Traversable cubes) => context -> Tagged '[Scene] (Vector DescriptorSet) -> Allocated 'Coherent Scene -> textures (Texture Flat) -> cubes (Texture CubeMap) -> Maybe (Allocated 'Coherent Sun) -> Vector (Sampler, ImageView) -> Maybe (Allocated 'Coherent Material) -> ResourceT (StageRIO st) ()
mkBindings :: (Foldable samplers, Foldable textures, Foldable cubemaps) => samplers Sampler -> textures a -> cubemaps b -> Word32 -> Tagged Scene DsBindings
vertexPos :: (VertexInputRate, [Format])
instanceTransform :: (VertexInputRate, [Format])
data FrameResource (ds :: [Type])
FrameResource :: Tagged ds (Vector DescriptorSet) -> Buffer -> ObserverIO Scene -> FrameResource (ds :: [Type])
[$sel:frDescSets:FrameResource] :: FrameResource (ds :: [Type]) -> Tagged ds (Vector DescriptorSet)
[$sel:frBuffer:FrameResource] :: FrameResource (ds :: [Type]) -> Buffer
[$sel:frObserver:FrameResource] :: FrameResource (ds :: [Type]) -> ObserverIO Scene
extendResourceDS :: FrameResource ds -> Tagged ext DescriptorSet -> FrameResource (Extend ds ext)
type Buffer = Allocated 'Coherent Scene
-- | A process that will assemble Scene values.
type Process = Merge Scene
observe :: MonadUnliftIO m => Process -> FrameResource ds -> m ()
withBoundSet0 :: MonadIO m => FrameResource ds -> Pipeline ds vertices instances -> CommandBuffer -> Bound ds Void Void m b -> m b
instance GHC.Generics.Generic Render.DescSets.Set0.Scene
instance GHC.Show.Show Render.DescSets.Set0.Scene
instance Foreign.Storable.Generic.Internal.GStorable Render.DescSets.Set0.Scene
module Render.Lit.Colored.Pipeline
type Pipeline = Pipeline '[Scene] VertexAttrs InstanceAttrs
allocate :: (HasVulkan env, HasRenderPass renderpass) => SampleCountFlagBits -> Tagged Scene DsBindings -> renderpass -> ResourceT (RIO env) Pipeline
allocateBlend :: (HasVulkan env, HasRenderPass renderpass) => SampleCountFlagBits -> Tagged Scene DsBindings -> renderpass -> ResourceT (RIO env) Pipeline
module Render.Font.EvanwSdf.Pipeline
type Pipeline = Pipeline '[Scene] () InstanceAttrs
allocate :: (HasVulkan env, HasRenderPass renderpass) => SampleCountFlagBits -> Tagged Scene DsBindings -> renderpass -> ResourceT (RIO env) Pipeline
module Render.Debug.Pipeline
type Pipeline = Pipeline '[Scene] VertexAttrs InstanceAttrs
allocate :: (HasVulkan env, HasRenderPass renderpass) => SampleCountFlagBits -> Tagged Scene DsBindings -> renderpass -> ResourceT (RIO env) Pipeline
module Render.Lit.Material.Model
type Model buf = Indexed buf Packed VertexAttrs
data VertexAttrs
VertexAttrs :: Vec2 -> Vec2 -> Packed -> Packed -> Word32 -> VertexAttrs
[$sel:vaTexCoord0:VertexAttrs] :: VertexAttrs -> Vec2
[$sel:vaTexCoord1:VertexAttrs] :: VertexAttrs -> Vec2
[$sel:vaNormal:VertexAttrs] :: VertexAttrs -> Packed
[$sel:vaTangent:VertexAttrs] :: VertexAttrs -> Packed
[$sel:vaMaterial:VertexAttrs] :: VertexAttrs -> Word32
vkVertexAttrs :: [Format]
type InstanceAttrs = Transform
data Transform
data Material
instance GHC.Generics.Generic Render.Lit.Material.Model.VertexAttrs
instance GHC.Show.Show Render.Lit.Material.Model.VertexAttrs
instance GHC.Classes.Ord Render.Lit.Material.Model.VertexAttrs
instance GHC.Classes.Eq Render.Lit.Material.Model.VertexAttrs
instance Foreign.Storable.Storable Render.Lit.Material.Model.VertexAttrs
module Render.Lit.Material.Pipeline
type Pipeline = Pipeline '[Scene] VertexAttrs InstanceAttrs
allocate :: (HasVulkan env, HasRenderPass renderpass) => SampleCountFlagBits -> Tagged Scene DsBindings -> renderpass -> ResourceT (RIO env) Pipeline
allocateBlend :: (HasVulkan env, HasRenderPass renderpass) => SampleCountFlagBits -> Tagged Scene DsBindings -> renderpass -> ResourceT (RIO env) Pipeline
module Render.Lit.Textured.Model
type Model buf = Indexed buf Packed VertexAttrs
data VertexAttrs
VertexAttrs :: Vec2 -> Packed -> VertexAttrs
[$sel:vaTexCoord:VertexAttrs] :: VertexAttrs -> Vec2
[$sel:vaNormal:VertexAttrs] :: VertexAttrs -> Packed
vkVertexAttrs :: [Format]
data InstanceAttrs
InstanceAttrs :: TextureParams -> Transform -> InstanceAttrs
[$sel:textureParams:InstanceAttrs] :: InstanceAttrs -> TextureParams
[$sel:transformMat4:InstanceAttrs] :: InstanceAttrs -> Transform
data InstanceBuffers textureStage transformStage
InstanceBuffers :: InstanceTexture textureStage -> InstanceTransform transformStage -> InstanceBuffers textureStage transformStage
[$sel:ibTexture:InstanceBuffers] :: InstanceBuffers textureStage transformStage -> InstanceTexture textureStage
[$sel:ibTransform:InstanceBuffers] :: InstanceBuffers textureStage transformStage -> InstanceTransform transformStage
data TextureParams
TextureParams :: Vec2 -> Vec2 -> Vec4 -> Int32 -> Int32 -> TextureParams
[$sel:tpScale:TextureParams] :: TextureParams -> Vec2
[$sel:tpOffset:TextureParams] :: TextureParams -> Vec2
[$sel:tpGamma:TextureParams] :: TextureParams -> Vec4
[$sel:tpSamplerId:TextureParams] :: TextureParams -> Int32
[$sel:tpTextureId:TextureParams] :: TextureParams -> Int32
vkInstanceTexture :: [Format]
allocateInstancesWith :: (MonadResource m, MonadUnliftIO m) => (BufferUsageFlagBits -> Int -> Vector TextureParams -> m (InstanceTexture texture)) -> (BufferUsageFlagBits -> Int -> Vector Transform -> m (InstanceTransform transform)) -> (forall stage a. Allocated stage a -> m ()) -> [InstanceAttrs] -> m (ReleaseKey, InstanceBuffers texture transform)
data Transform
instance GHC.Generics.Generic Render.Lit.Textured.Model.VertexAttrs
instance GHC.Show.Show Render.Lit.Textured.Model.VertexAttrs
instance GHC.Classes.Ord Render.Lit.Textured.Model.VertexAttrs
instance GHC.Classes.Eq Render.Lit.Textured.Model.VertexAttrs
instance GHC.Show.Show Render.Lit.Textured.Model.TextureParams
instance Vulkan.Zero.Zero Render.Lit.Textured.Model.InstanceAttrs
instance Resource.Model.HasVertexBuffers (Render.Lit.Textured.Model.InstanceBuffers textureStage transformStage)
instance Vulkan.Zero.Zero Render.Lit.Textured.Model.TextureParams
instance Foreign.Storable.Storable Render.Lit.Textured.Model.TextureParams
instance Foreign.Storable.Storable Render.Lit.Textured.Model.VertexAttrs
module Render.Lit.Textured.Pipeline
type Pipeline = Pipeline '[Scene] VertexAttrs InstanceAttrs
allocate :: (HasVulkan env, HasRenderPass renderpass) => SampleCountFlagBits -> Tagged Scene DsBindings -> renderpass -> ResourceT (RIO env) Pipeline
allocateBlend :: (HasVulkan env, HasRenderPass renderpass) => SampleCountFlagBits -> Tagged Scene DsBindings -> renderpass -> ResourceT (RIO env) Pipeline
module Render.ShadowMap.Pipeline
type Pipeline = Pipeline '[Sun] () Transform
allocate :: (HasVulkan env, HasRenderPass renderpass) => Tagged Sun DsBindings -> renderpass -> Settings -> ResourceT (RIO env) Pipeline
data Settings
Settings :: CullModeFlagBits -> Maybe (Float, Float) -> Settings
[$sel:cull:Settings] :: Settings -> CullModeFlagBits
[$sel:depthBias:Settings] :: Settings -> Maybe (Float, Float)
defaults :: Settings
module Render.ShadowMap.RenderPass
data ShadowMap
ShadowMap :: RenderPass -> AllocatedImage -> Framebuffer -> Rect2D -> Extent2D -> Word32 -> Vector ClearValue -> RefCounted -> ShadowMap
[$sel:smRenderPass:ShadowMap] :: ShadowMap -> RenderPass
[$sel:smDepthImage:ShadowMap] :: ShadowMap -> AllocatedImage
[$sel:smFrameBuffer:ShadowMap] :: ShadowMap -> Framebuffer
[$sel:smRenderArea:ShadowMap] :: ShadowMap -> Rect2D
[$sel:smExtent:ShadowMap] :: ShadowMap -> Extent2D
[$sel:smLayerCount:ShadowMap] :: ShadowMap -> Word32
[$sel:smClear:ShadowMap] :: ShadowMap -> Vector ClearValue
[$sel:smRelease:ShadowMap] :: ShadowMap -> RefCounted
allocate :: (MonadResource m, MonadVulkan env m, HasLogFunc env, HasSwapchain context) => context -> Word32 -> ("light count" ::: Word32) -> m ShadowMap
allocateRenderPass :: (MonadVulkan env m, MonadResource m, HasSwapchain context) => context -> Word32 -> Word32 -> m (ReleaseKey, RenderPass)
type Framebuffers = (RefCounted, AllocatedImage, Framebuffer)
allocateFramebuffer :: (MonadResource m, MonadVulkan env m, HasLogFunc env, HasSwapchain context) => context -> Extent2D -> Word32 -> RenderPass -> m Framebuffers
usePass :: (MonadIO io, HasRenderPass a) => a -> Word32 -> CommandBuffer -> io r -> io r
beginInfo :: HasRenderPass a => a -> Word32 -> RenderPassBeginInfo '[]
instance Engine.Vulkan.Types.HasRenderPass Render.ShadowMap.RenderPass.ShadowMap
instance Engine.Vulkan.Types.RenderPass Render.ShadowMap.RenderPass.ShadowMap
module Render.Skybox.Pipeline
type Pipeline = Pipeline '[Scene] () ()
allocate :: (HasVulkan env, HasRenderPass renderpass) => SampleCountFlagBits -> Tagged Scene DsBindings -> renderpass -> ResourceT (RIO env) Pipeline
module Render.Unlit.Colored.Model
type Model buf = Indexed buf Packed VertexAttrs
type VertexAttrs = "RGBA" ::: Vec4
vkVertexAttrs :: [Format]
type InstanceAttrs = Transform
module Render.Unlit.Colored.Pipeline
type Pipeline = Pipeline '[Scene] VertexAttrs InstanceAttrs
allocate :: (HasVulkan env, HasRenderPass renderpass) => Bool -> SampleCountFlagBits -> Tagged Scene DsBindings -> renderpass -> ResourceT (RIO env) Pipeline
allocateWireframe :: (HasVulkan env, HasRenderPass renderpass) => Bool -> SampleCountFlagBits -> Tagged Scene DsBindings -> renderpass -> ResourceT (RIO env) Pipeline
module Render.Unlit.Textured.Model
type Model buf = Indexed buf Packed VertexAttrs
type VertexAttrs = "uv" ::: Vec2
vkVertexAttrs :: [Format]
-- | Data for a single element.
data InstanceAttrs
InstanceAttrs :: TextureParams -> Transform -> InstanceAttrs
[$sel:textureParams:InstanceAttrs] :: InstanceAttrs -> TextureParams
[$sel:transformMat4:InstanceAttrs] :: InstanceAttrs -> Transform
instanceAttrs :: Int32 -> Int32 -> [Transform] -> InstanceAttrs
-- | Intermediate data to be shipped.
type StorableAttrs = (Vector TextureParams, Vector Transform)
storableAttrs1 :: Int32 -> Int32 -> [Transform] -> StorableAttrs
-- | GPU-bound data.
data InstanceBuffers textureStage transformStage
InstanceBuffers :: InstanceTexture textureStage -> InstanceTransform transformStage -> InstanceBuffers textureStage transformStage
[$sel:ibTexture:InstanceBuffers] :: InstanceBuffers textureStage transformStage -> InstanceTexture textureStage
[$sel:ibTransform:InstanceBuffers] :: InstanceBuffers textureStage transformStage -> InstanceTransform transformStage
data TextureParams
TextureParams :: Vec2 -> Vec2 -> Vec4 -> Int32 -> Int32 -> TextureParams
[$sel:tpScale:TextureParams] :: TextureParams -> Vec2
[$sel:tpOffset:TextureParams] :: TextureParams -> Vec2
[$sel:tpGamma:TextureParams] :: TextureParams -> Vec4
[$sel:tpSamplerId:TextureParams] :: TextureParams -> Int32
[$sel:tpTextureId:TextureParams] :: TextureParams -> Int32
vkInstanceTexture :: [Format]
allocateInstancesWith :: (MonadResource m, MonadUnliftIO m) => (BufferUsageFlagBits -> Int -> Vector TextureParams -> m (InstanceTexture texture)) -> (BufferUsageFlagBits -> Int -> Vector Transform -> m (InstanceTransform transform)) -> (forall stage a. Allocated stage a -> m ()) -> [InstanceAttrs] -> m (ReleaseKey, InstanceBuffers texture transform)
allocateInstancesCoherent :: (MonadReader env m, HasVulkan env, MonadResource m, MonadUnliftIO m) => [InstanceAttrs] -> m (ReleaseKey, InstanceBuffers 'Coherent 'Coherent)
allocateInstancesCoherent_ :: HasVulkan env => Int -> ResourceT (RIO env) (InstanceBuffers 'Coherent 'Coherent)
updateCoherentResize_ :: (HasVulkan context, MonadUnliftIO m) => context -> InstanceBuffers 'Coherent 'Coherent -> (Vector TextureParams, Vector Transform) -> m (InstanceBuffers 'Coherent 'Coherent)
data Transform
instance GHC.Show.Show Render.Unlit.Textured.Model.TextureParams
instance Vulkan.Zero.Zero Render.Unlit.Textured.Model.InstanceAttrs
instance Resource.Model.HasVertexBuffers (Render.Unlit.Textured.Model.InstanceBuffers textureStage transformStage)
instance Vulkan.Zero.Zero Render.Unlit.Textured.Model.TextureParams
instance Foreign.Storable.Storable Render.Unlit.Textured.Model.TextureParams
module Render.Unlit.Textured.Pipeline
type Pipeline = Pipeline '[Scene] VertexAttrs InstanceAttrs
allocate :: (HasVulkan env, HasRenderPass renderpass) => SampleCountFlagBits -> Tagged Scene DsBindings -> renderpass -> ResourceT (RIO env) Pipeline
allocateBlend :: (HasVulkan env, HasRenderPass renderpass) => SampleCountFlagBits -> Tagged Scene DsBindings -> renderpass -> ResourceT (RIO env) Pipeline
-- | All the provided render passes and pipelines packaged and delivered.
module Render.Basic
type Stage = Stage RenderPasses Pipelines
type Frame = Frame RenderPasses Pipelines
type StageFrameRIO r s a = StageFrameRIO RenderPasses Pipelines r s a
data RenderPasses
RenderPasses :: ForwardMsaa -> ShadowMap -> RenderPasses
[$sel:rpForwardMsaa:RenderPasses] :: RenderPasses -> ForwardMsaa
[$sel:rpShadowPass:RenderPasses] :: RenderPasses -> ShadowMap
data Pipelines
Pipelines :: Pipeline -> Pipeline -> Pipeline -> Pipeline -> Pipeline -> Pipeline -> Pipeline -> Pipeline -> Pipeline -> Pipeline -> Pipeline -> Pipeline -> Pipeline -> Pipeline -> Pipeline -> Pipeline -> Pipelines
[$sel:pEvanwSdf:Pipelines] :: Pipelines -> Pipeline
[$sel:pSkybox:Pipelines] :: Pipelines -> Pipeline
[$sel:pDebug:Pipelines] :: Pipelines -> Pipeline
[$sel:pLitColored:Pipelines] :: Pipelines -> Pipeline
[$sel:pLitColoredBlend:Pipelines] :: Pipelines -> Pipeline
[$sel:pLitMaterial:Pipelines] :: Pipelines -> Pipeline
[$sel:pLitMaterialBlend:Pipelines] :: Pipelines -> Pipeline
[$sel:pLitTextured:Pipelines] :: Pipelines -> Pipeline
[$sel:pLitTexturedBlend:Pipelines] :: Pipelines -> Pipeline
[$sel:pUnlitColored:Pipelines] :: Pipelines -> Pipeline
[$sel:pUnlitColoredNoDepth:Pipelines] :: Pipelines -> Pipeline
[$sel:pUnlitTextured:Pipelines] :: Pipelines -> Pipeline
[$sel:pUnlitTexturedBlend:Pipelines] :: Pipelines -> Pipeline
[$sel:pWireframe:Pipelines] :: Pipelines -> Pipeline
[$sel:pWireframeNoDepth:Pipelines] :: Pipelines -> Pipeline
[$sel:pShadowCast:Pipelines] :: Pipelines -> Pipeline
allocatePipelines_ :: HasSwapchain swapchain => swapchain -> RenderPasses -> ResourceT (StageRIO st) Pipelines
allocatePipelines :: HasSwapchain swapchain => Tagged Scene DsBindings -> swapchain -> RenderPasses -> ResourceT (StageRIO st) Pipelines
getSceneLayout :: Pipelines -> Tagged '[Scene] DescriptorSetLayout
getSunLayout :: Pipelines -> Tagged '[Sun] DescriptorSetLayout
instance Engine.Vulkan.Types.RenderPass Render.Basic.RenderPasses
-- | JSON font loader for bitmaps and SDFs
--
-- Generator: https://evanw.github.io/font-texture-generator/
--
-- Usage (WebGL):
-- https://evanw.github.io/font-texture-generator/example-webgl/
module Resource.Font.EvanW
load :: (MonadIO m, MonadReader env m, HasLogFunc env, HasCallStack) => Source -> m Container
data Container
Container :: Text -> Float -> Bool -> Bool -> Float -> Float -> HashMap Char Character -> Container
[$sel:name:Container] :: Container -> Text
[$sel:size:Container] :: Container -> Float
[$sel:bold:Container] :: Container -> Bool
[$sel:italic:Container] :: Container -> Bool
[$sel:width:Container] :: Container -> Float
[$sel:height:Container] :: Container -> Float
[$sel:characters:Container] :: Container -> HashMap Char Character
data Character
Character :: Float -> Float -> Float -> Float -> Float -> Float -> Float -> Character
[$sel:x:Character] :: Character -> Float
[$sel:y:Character] :: Character -> Float
[$sel:width:Character] :: Character -> Float
[$sel:height:Character] :: Character -> Float
[$sel:originX:Character] :: Character -> Float
[$sel:originY:Character] :: Character -> Float
[$sel:advance:Character] :: Character -> Float
putLine :: ("WH" ::: Vec2) -> ("XY" ::: Vec2) -> ("Alignment" ::: Alignment) -> ("Size" ::: Float) -> ("Font" ::: Container) -> ("Line" ::: [Char]) -> ("scale" ::: Float, [PutChar])
data PutChar
PutChar :: Vec2 -> Vec2 -> Vec2 -> Vec2 -> PutChar
[$sel:pcPos:PutChar] :: PutChar -> Vec2
[$sel:pcSize:PutChar] :: PutChar -> Vec2
[$sel:pcOffset:PutChar] :: PutChar -> Vec2
[$sel:pcScale:PutChar] :: PutChar -> Vec2
instance GHC.Generics.Generic Resource.Font.EvanW.FontError
instance GHC.Show.Show Resource.Font.EvanW.FontError
instance GHC.Classes.Ord Resource.Font.EvanW.FontError
instance GHC.Classes.Eq Resource.Font.EvanW.FontError
instance GHC.Generics.Generic Resource.Font.EvanW.Character
instance GHC.Show.Show Resource.Font.EvanW.Character
instance GHC.Classes.Ord Resource.Font.EvanW.Character
instance GHC.Classes.Eq Resource.Font.EvanW.Character
instance GHC.Generics.Generic Resource.Font.EvanW.Container
instance GHC.Show.Show Resource.Font.EvanW.Container
instance GHC.Classes.Ord Resource.Font.EvanW.Container
instance GHC.Classes.Eq Resource.Font.EvanW.Container
instance GHC.Show.Show Resource.Font.EvanW.PutChar
instance Foreign.Storable.Storable Resource.Font.EvanW.PutChar
instance Data.Aeson.Types.FromJSON.FromJSON Resource.Font.EvanW.Container
instance Data.Aeson.Types.FromJSON.FromJSON Resource.Font.EvanW.Character
instance GHC.Exception.Type.Exception Resource.Font.EvanW.FontError
module Resource.Font
data Config
Config :: Source -> Source -> Config
[$sel:configContainer:Config] :: Config -> Source
[$sel:configTexture:Config] :: Config -> Source
allocateCollection :: (Traversable collection, HasCallStack) => Queues CommandPool -> collection Config -> StageRIO st (ReleaseKey, collection Font)
collectionTextures :: Foldable collection => collection Font -> Vector (Texture Flat)
data Font
Font :: Container -> Texture Flat -> Font
[$sel:container:Font] :: Font -> Container
[$sel:texture:Font] :: Font -> Texture Flat
allocateFont :: HasCallStack => Queues CommandPool -> Config -> StageRIO st (ReleaseKey, Font)
instance GHC.Show.Show Resource.Font.Config
module Engine.UI.Message
type Process = Merge (Vector InstanceAttrs)
data Input
Input :: Text -> Int32 -> Container -> Alignment -> Float -> Vec4 -> Vec4 -> Float -> Float -> Input
[$sel:inputText:Input] :: Input -> Text
[$sel:inputFontId:Input] :: Input -> Int32
[$sel:inputFont:Input] :: Input -> Container
[$sel:inputOrigin:Input] :: Input -> Alignment
[$sel:inputSize:Input] :: Input -> Float
[$sel:inputColor:Input] :: Input -> Vec4
[$sel:inputOutline:Input] :: Input -> Vec4
[$sel:inputOutlineWidth:Input] :: Input -> Float
[$sel:inputSmoothing:Input] :: Input -> Float
spawn :: (HasOutput box, GetOutput box ~ Box, HasOutput input, GetOutput input ~ Input) => box -> input -> RIO env Process
spawnFromR :: (MonadResource (RIO env), HasOutput box, GetOutput box ~ Box, HasOutput source) => box -> source -> (GetOutput source -> Input) -> RIO env (ReleaseKey, ReleaseKey, Process)
mkAttrs :: Box -> Input -> Vector InstanceAttrs
type Observer = ObserverIO Buffer
type Buffer = Allocated 'Coherent InstanceAttrs
newObserver :: Int -> ResourceT (StageRIO st) Observer
observe :: (HasVulkan env, HasOutput source, GetOutput source ~ Vector InstanceAttrs) => source -> Observer -> RIO env ()
module Resource.Mesh.Lit
type MaterialNodes = Vector MaterialNode
data MaterialNode
MaterialNode :: Node -> Int -> Material -> MaterialNode
[$sel:mnNode:MaterialNode] :: MaterialNode -> Node
[$sel:mnMaterialIx:MaterialNode] :: MaterialNode -> Int
[$sel:mnMaterial:MaterialNode] :: MaterialNode -> Material
instance GHC.Generics.Generic Resource.Mesh.Lit.MaterialNode
instance GHC.Show.Show Resource.Mesh.Lit.MaterialNode
instance GHC.Classes.Eq Resource.Mesh.Lit.MaterialNode
instance Foreign.Storable.Generic.Internal.GStorable Resource.Mesh.Lit.MaterialNode
instance Resource.Mesh.Types.HasRange Resource.Mesh.Lit.MaterialNode
module Render.Lit.Material.Collect
type LoadedModel = (Meta, Vector MaterialNode, Model 'Staged)
data SceneModel models textures
SceneModel :: Text -> (models -> LoadedModel) -> (textures -> Int32) -> SceneModel models textures
[$sel:smLabel:SceneModel] :: SceneModel models textures -> Text
[$sel:smGetModel:SceneModel] :: SceneModel models textures -> models -> LoadedModel
[$sel:smGetTextureOffset:SceneModel] :: SceneModel models textures -> textures -> Int32
sceneMaterials :: Foldable t => models -> textures -> t (SceneModel models textures) -> Vector Material
modelMaterials :: Foldable t => Text -> Int32 -> Map Int Material -> t MaterialNode -> Map Int Material
nodeMaterials :: Text -> Int32 -> MaterialNode -> Map Int Material -> Map Int Material
module Stage.Loader.Scene
type Process = Merge Scene
spawn :: (MonadUnliftIO m, HasOutput projection, GetOutput projection ~ Projection) => projection -> m Process
module Stage.Loader.UI
data Settings fonts textures
Settings :: Text -> Int32 -> Int32 -> Collection textures fonts (Int32, Texture Flat) -> fonts Container -> (forall a. fonts a -> a) -> (forall a. fonts a -> a) -> Settings fonts textures
[$sel:titleMessage:Settings] :: Settings fonts textures -> Text
[$sel:backgroundIx:Settings] :: Settings fonts textures -> Int32
[$sel:spinnerIx:Settings] :: Settings fonts textures -> Int32
[$sel:combined:Settings] :: Settings fonts textures -> Collection textures fonts (Int32, Texture Flat)
[$sel:fonts:Settings] :: Settings fonts textures -> fonts Container
[$sel:smallFont:Settings] :: Settings fonts textures -> forall a. fonts a -> a
[$sel:largeFont:Settings] :: Settings fonts textures -> forall a. fonts a -> a
data UI
UI :: Process -> Process -> Var Input -> Process -> Merge StorableAttrs -> Merge StorableAttrs -> Model 'Staged -> UI
[$sel:titleP:UI] :: UI -> Process
[$sel:subtitleP:UI] :: UI -> Process
[$sel:progressInput:UI] :: UI -> Var Input
[$sel:progressP:UI] :: UI -> Process
[$sel:backgroundP:UI] :: UI -> Merge StorableAttrs
[$sel:spinnerP:UI] :: UI -> Merge StorableAttrs
[$sel:quadUV:UI] :: UI -> Model 'Staged
spawn :: Queues CommandPool -> BoxProcess -> Settings fonts textures -> StageRIO env (ReleaseKey, UI)
data Observer
Observer :: [Observer] -> ObserverIO (InstanceBuffers 'Coherent 'Coherent) -> ObserverIO (InstanceBuffers 'Coherent 'Coherent) -> Observer
[$sel:messages:Observer] :: Observer -> [Observer]
[$sel:background:Observer] :: Observer -> ObserverIO (InstanceBuffers 'Coherent 'Coherent)
[$sel:spinner:Observer] :: Observer -> ObserverIO (InstanceBuffers 'Coherent 'Coherent)
newObserver :: UI -> ResourceT (StageRIO st) Observer
observe :: HasVulkan env => UI -> Observer -> RIO env ()
module Stage.Loader.Types
type Stage = Stage FrameResources RunState
type Frame = Frame FrameResources
data FrameResources
FrameResources :: FrameResource '[Scene] -> Observer -> FrameResources
[$sel:frSceneUi:FrameResources] :: FrameResources -> FrameResource '[Scene]
[$sel:frUI:FrameResources] :: FrameResources -> Observer
data RunState
RunState :: ProjectionProcess -> Process -> UI -> RunState
[$sel:rsProjectionP:RunState] :: RunState -> ProjectionProcess
[$sel:rsSceneUiP:RunState] :: RunState -> Process
[$sel:rsUI:RunState] :: RunState -> UI
module Stage.Loader.Render
updateBuffers :: RunState -> FrameResources -> StageFrameRIO FrameResources RunState ()
recordCommands :: CommandBuffer -> FrameResources -> Word32 -> StageFrameRIO FrameResources RunState ()
module Stage.Loader.Setup
bootstrap :: Text -> (Config, Config) -> (Source, Source) -> ((Text -> StageSetupRIO ()) -> StageSetupRIO loaded) -> (loaded -> StackStage) -> (Setup Vector Vector loaded -> StackStage, StageSetupRIO (Setup Vector Vector loaded))
stackStage :: (Traversable fonts, Traversable textures) => ((Text -> StageSetupRIO ()) -> StageSetupRIO loaded) -> (loaded -> StackStage) -> Settings textures fonts -> StackStage