Skip to content

Commit 1a4f8cc

Browse files
committed
feat(ApiVk): added basic triangle sample
1 parent 997dfef commit 1a4f8cc

File tree

8 files changed

+309
-58
lines changed

8 files changed

+309
-58
lines changed

CMakeLists.txt

+2-1
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,8 @@ elseif (OpenGL::OpenGL)
141141
set(GL_LIBRARY OpenGL::OpenGL)
142142
endif (OpenGL::GL)
143143

144-
target_link_libraries(LepusGfx PRIVATE GL3W glfw ${GL_LIBRARY} vk-bootstrap::vk-bootstrap DearImgui LepusEngine LepusUtility LepusSystem Vulkan::Vulkan)
144+
find_package(VulkanMemoryAllocator CONFIG REQUIRED)
145+
target_link_libraries(LepusGfx PRIVATE GL3W glfw ${GL_LIBRARY} vk-bootstrap::vk-bootstrap GPUOpen::VulkanMemoryAllocator DearImgui LepusEngine LepusUtility LepusSystem Vulkan::Vulkan)
145146

146147
target_include_directories(LepusGfx PUBLIC "${Vulkan_INCLUDE_DIR}" "${CMAKE_CURRENT_BINARY_DIR}/_deps/fetch_vk_bootstrap-src/src")
147148
target_link_libraries(LepusDemo PRIVATE DearImgui LepusGfx LepusUtility LepusEngine)

Content/GLSL/Unlit/RGBVertex.frag

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
#version 330 core
1+
#version 430 core
22

3-
out vec4 color;
4-
in vec3 vertColor;
3+
layout(location = 0) out vec4 color;
4+
layout(location = 0) in vec3 vertColor;
55

66
void main()
77
{

Content/GLSL/Unlit/RGBVertex.vert

+9-6
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,21 @@
1-
#version 330 core
1+
#version 430 core
22

33
layout (location = 0) in vec3 position;
44

5-
uniform mat4 PROJ;
6-
uniform mat4 VIEW;
7-
uniform mat4 MODEL;
5+
layout(push_constant, std430) uniform pc
6+
{
7+
mat4 PROJ;
8+
mat4 VIEW;
9+
mat4 MODEL;
10+
};
811

9-
out vec3 vertColor;
12+
layout(location = 0) out vec3 vertColor;
1013

1114
void main()
1215
{
1316
gl_Position = PROJ * VIEW * MODEL * vec4(position, 1.0);
1417

15-
float normalisedIndex = mod(float(gl_VertexID), 3.0f);
18+
float normalisedIndex = mod(float(gl_VertexIndex), 3.0f);
1619
float r = step(normalisedIndex, 0.0f);
1720
float g = step(normalisedIndex, 1.0f);
1821
float b = step(normalisedIndex, 2.0f);

src/lepus/gfx/GraphicsEngine/Apis/ApiVk.h

+19
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
#define VK_USE_PLATFORM_WIN32_KHR
77
#include <VkBootstrap.h>
8+
#include <vma/vk_mem_alloc.h>
89

910
#include "lepus/system/Windowing/GLFW.h"
1011

@@ -44,6 +45,13 @@ namespace lepus
4445
VkFence m_vkFence, m_vkCmdBufFence;
4546
PFN_vkCmdBeginRenderingKHR vkCmdBeginRenderingKHR;
4647
PFN_vkCmdEndRenderingKHR vkCmdEndRenderingKHR;
48+
VkPipeline m_vkGraphicsPipeline;
49+
VkPipelineLayout m_vkGraphicsPipelineLayout;
50+
VkShaderModule m_vkVertShader, m_vkFragShader;
51+
VkBuffer m_vkVertBuffer;
52+
VkDeviceMemory m_vkMemory;
53+
VmaAllocator m_vmaAllocator;
54+
VmaAllocation m_vmaAllocation;
4755

4856
inline void* GetUniformInternal(const char* name) override
4957
{
@@ -62,6 +70,14 @@ namespace lepus
6270
m_Images = nullptr;
6371
m_vkFence = VK_NULL_HANDLE;
6472
m_vkCmdBufFence = VK_NULL_HANDLE;
73+
m_vkGraphicsPipeline = VK_NULL_HANDLE;
74+
m_vkGraphicsPipelineLayout = VK_NULL_HANDLE;
75+
m_vkVertShader = VK_NULL_HANDLE;
76+
m_vkFragShader = VK_NULL_HANDLE;
77+
m_vkVertBuffer = VK_NULL_HANDLE;
78+
m_vkMemory = VK_NULL_HANDLE;
79+
m_vmaAllocator = VK_NULL_HANDLE;
80+
m_vmaAllocation = VK_NULL_HANDLE;
6581
}
6682

6783
GraphicsApiVk(GraphicsApiOptions* options)
@@ -74,6 +90,9 @@ namespace lepus
7490
m_Images = nullptr;
7591
m_vkFence = VK_NULL_HANDLE;
7692
m_vkCmdBufFence = VK_NULL_HANDLE;
93+
m_vkGraphicsPipeline = VK_NULL_HANDLE;
94+
m_vkVertShader = VK_NULL_HANDLE;
95+
m_vkFragShader = VK_NULL_HANDLE;
7796
GraphicsApiVk::Init(options);
7897
}
7998

0 commit comments

Comments
 (0)