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 render imageIndex cb = Vk.cmdUseRenderPass cb (beginInfo render imageIndex) Vk.SUBPASS_CONTENTS_INLINE beginInfo :: HasRenderPass a => a -> Word32 -> Vk.RenderPassBeginInfo '[] beginInfo rp imageIndex = zero { Vk.renderPass = getRenderPass rp , Vk.framebuffer = getFramebuffers rp ! fromIntegral imageIndex , Vk.renderArea = getRenderArea rp , Vk.clearValues = getClearValues rp }