Files
funnygame/materialsystem/vulkan/utils.cpp
T
2026-08-26 15:30:40 +03:00

55 lines
1.6 KiB
C++

#include "materialsystem/imaterialsystem.h"
#include "vulkan_state.h"
IRenderingObject *VulkanGetObject( VkFrameObject_t stObject, int iIndex )
{
switch (stObject.m_eObjectType)
{
case FRAME_OBJECT_TYPE_SINGLE:
return stObject.m_pSingle;
case FRAME_OBJECT_TYPE_SWAPPED:
return stObject.m_ppSwapped[iIndex];
default:
return NULL;
}
}
VkFormat VulkanGetVertexFormat( EVertexFormat eFormat )
{
switch (eFormat)
{
case VERTEX_FORMAT_X32_SFLOAT: return VK_FORMAT_R32_SFLOAT;
case VERTEX_FORMAT_XY32_SFLOAT: return VK_FORMAT_R32G32_SFLOAT;
case VERTEX_FORMAT_XYZ32_SFLOAT: return VK_FORMAT_R32G32B32_SFLOAT;
case VERTEX_FORMAT_XYZW32_SFLOAT: return VK_FORMAT_R32G32B32A32_SFLOAT;
default:
return VK_FORMAT_UNDEFINED;
}
}
VkPrimitiveTopology VulkanGetTopology( ETopologyMode eMode )
{
switch ( eMode )
{
case TOPOLOGY_MODE_POINT_LIST: return VK_PRIMITIVE_TOPOLOGY_POINT_LIST;
case TOPOLOGY_MODE_LINE_LIST: return VK_PRIMITIVE_TOPOLOGY_LINE_LIST;
case TOPOLOGY_MODE_LINE_STRIP: return VK_PRIMITIVE_TOPOLOGY_LINE_STRIP;
case TOPOLOGY_MODE_TRIANGLE_LIST: return VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST;
case TOPOLOGY_MODE_TRIANGLE_STRIP: return VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP;
}
}
VkShaderStageFlagBits VulkanGetShaderStage( EShaderStage eStage )
{
switch (eStage)
{
case SHADER_STAGE_VERTEX: return VK_SHADER_STAGE_VERTEX_BIT;
case SHADER_STAGE_PIXEL: return VK_SHADER_STAGE_FRAGMENT_BIT;
case SHADER_STAGE_COMPUTE: return VK_SHADER_STAGE_COMPUTE_BIT;
case SHADER_STAGE_RAYGEN: return VK_SHADER_STAGE_RAYGEN_BIT_KHR;
case SHADER_STAGE_RAYGEN_SOFTWARE:
return VK_SHADER_STAGE_COMPUTE_BIT;
default:
break;
}
return VK_SHADER_STAGE_VERTEX_BIT;
}