packages feed

keid-core-0.1.3.0: src/Render/Pass.hs

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
  }