module Render.Pass ( usePass , beginInfo ) where import RIO import RIO.Vector.Partial ((!)) import Vulkan.Core10 qualified as Vk import Vulkan.Zero (zero) import Engine.Vulkan.Types (HasRenderPass(..)) usePass :: (MonadIO io, HasRenderPass a) => a -> Word32 -> Vk.CommandBuffer -> io r -> io r usePass :: a -> Word32 -> CommandBuffer -> io r -> io r usePass a render Word32 imageIndex CommandBuffer cb = CommandBuffer -> RenderPassBeginInfo '[] -> SubpassContents -> io r -> io r forall (a :: [*]) (io :: * -> *) r. (Extendss RenderPassBeginInfo a, PokeChain a, MonadIO io) => CommandBuffer -> RenderPassBeginInfo a -> SubpassContents -> io r -> io r Vk.cmdUseRenderPass CommandBuffer cb (a -> Word32 -> RenderPassBeginInfo '[] forall a. HasRenderPass a => a -> Word32 -> RenderPassBeginInfo '[] beginInfo a render Word32 imageIndex) SubpassContents Vk.SUBPASS_CONTENTS_INLINE beginInfo :: HasRenderPass a => a -> Word32 -> Vk.RenderPassBeginInfo '[] beginInfo :: a -> Word32 -> RenderPassBeginInfo '[] beginInfo a rp Word32 imageIndex = RenderPassBeginInfo '[] forall a. Zero a => a zero { $sel:renderPass:RenderPassBeginInfo :: RenderPass Vk.renderPass = a -> RenderPass forall a. HasRenderPass a => a -> RenderPass getRenderPass a rp , $sel:framebuffer:RenderPassBeginInfo :: Framebuffer Vk.framebuffer = a -> Vector Framebuffer forall a. HasRenderPass a => a -> Vector Framebuffer getFramebuffers a rp Vector Framebuffer -> Int -> Framebuffer forall (v :: * -> *) a. Vector v a => v a -> Int -> a ! Word32 -> Int forall a b. (Integral a, Num b) => a -> b fromIntegral Word32 imageIndex , $sel:renderArea:RenderPassBeginInfo :: Rect2D Vk.renderArea = a -> Rect2D forall a. HasRenderPass a => a -> Rect2D getRenderArea a rp , $sel:clearValues:RenderPassBeginInfo :: Vector ClearValue Vk.clearValues = a -> Vector ClearValue forall a. HasRenderPass a => a -> Vector ClearValue getClearValues a rp }