Files

36 lines
1.2 KiB
C++

#include "../vulkan_state.h"
#include "../commands.h"
#include "materialsystem/imaterialsystem.h"
#include "tier0/platform.h"
#include "tier1/utlvector.h"
DECLARE_VULKAN_COMMAND(Blit)
{
CVkImage *pVkInputImage = (CVkImage*)VulkanGetObject(stInputImage, iCurrentFrame);
CVkImage *pVkOutputImage = (CVkImage*)VulkanGetObject(stOutputImage, iCurrentFrame);
VkImageBlit stBlit = {
.srcSubresource = {
.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT,
.layerCount = 1,
},
.dstSubresource = {
.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT,
.layerCount = 1,
},
};
stBlit.srcOffsets[0].x = iSrcMin[0];
stBlit.srcOffsets[0].y = iSrcMin[1];
stBlit.srcOffsets[0].z = iSrcMin[2];
stBlit.srcOffsets[1].x = iSrcMax[0];
stBlit.srcOffsets[1].y = iSrcMax[1];
stBlit.srcOffsets[1].z = iSrcMax[2];
stBlit.dstOffsets[0].x = iDstMin[0];
stBlit.dstOffsets[0].y = iDstMin[1];
stBlit.dstOffsets[0].z = iDstMin[2];
stBlit.dstOffsets[1].x = iDstMax[0];
stBlit.dstOffsets[1].y = iDstMax[1];
stBlit.dstOffsets[1].z = iDstMax[2];
vkCmdBlitImage(hCommandBuffer, pVkInputImage->m_image, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, pVkOutputImage->m_image, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, 1, &stBlit, VK_FILTER_NEAREST);
}