-- 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.1.3 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) () set0 :: Traversable samplers => samplers Sampler -> Either Word32 (Vector (Texture Flat)) -> Either Word32 (Vector (Texture CubeMap)) -> Word32 -> Tagged Scene DsBindings -- | Nothing texture-related is provided. set0_ :: 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 :: HasLogFunc env => FilePath -> RIO env 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 :: FilePath -> FilePath -> Config [$sel:configContainer:Config] :: Config -> FilePath [$sel:configTexture:Config] :: Config -> FilePath allocateCollection :: Traversable collection => 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 :: Queues CommandPool -> Config -> StageRIO st (ReleaseKey, Font) instance GHC.Show.Show Resource.Font.Config instance GHC.Classes.Ord Resource.Font.Config instance GHC.Classes.Eq 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) -> (FilePath, FilePath) -> ((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