keid-core-0.1.4.0: src/Render/Pass.hs
{-# LANGUAGE OverloadedLists #-}
module Render.Pass
( usePass
, setViewportScissor
, 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
}
setViewportScissor
:: ( HasRenderPass rp
, MonadIO io
)
=> Vk.CommandBuffer
-> Vk.Extent2D
-> rp
-> io ()
setViewportScissor cb Vk.Extent2D{width, height} rp = do
Vk.cmdSetViewport
cb
0
[ Vk.Viewport
{ x = 0
, y = 0
, width = realToFrac width
, height = realToFrac height
, minDepth = 0
, maxDepth = 1
}
]
Vk.cmdSetScissor
cb
0
[ getRenderArea rp
]