diff options
| author | hachem <im@hachem.wtf> | 2025-08-14 00:28:27 +0200 |
|---|---|---|
| committer | hachem <im@hachem.wtf> | 2025-08-14 00:28:27 +0200 |
| commit | 2e246683df3b18e8e129adb0ada25be5f82f5b59 (patch) | |
| tree | fa692b2a612d025ec2efa6d121e5068d68ef4d17 /src/Platform/Vulkan | |
| parent | 13f2e940700b4451f6bff52eb1666475fd2de72c (diff) | |
[add]: Ability to switch render API
Diffstat (limited to 'src/Platform/Vulkan')
| -rw-r--r-- | src/Platform/Vulkan/VulkanRendererAPI.h | 2 | ||||
| -rw-r--r-- | src/Platform/Vulkan/VulkanShader.cpp | 21 | ||||
| -rw-r--r-- | src/Platform/Vulkan/VulkanShader.h | 5 | ||||
| -rw-r--r-- | src/Platform/Vulkan/VulkanTexture.cpp | 5 | ||||
| -rw-r--r-- | src/Platform/Vulkan/VulkanTexture.h | 9 | ||||
| -rw-r--r-- | src/Platform/Vulkan/VulkanVertexBuffer.h | 9 |
6 files changed, 41 insertions, 10 deletions
diff --git a/src/Platform/Vulkan/VulkanRendererAPI.h b/src/Platform/Vulkan/VulkanRendererAPI.h index 94d62e2..73cfbdb 100644 --- a/src/Platform/Vulkan/VulkanRendererAPI.h +++ b/src/Platform/Vulkan/VulkanRendererAPI.h @@ -1,6 +1,6 @@ #pragma once -#include "Rendering/RendererAPI.h" +#include "Rendering/Renderer.h" namespace Donut { diff --git a/src/Platform/Vulkan/VulkanShader.cpp b/src/Platform/Vulkan/VulkanShader.cpp index cbc0f54..2117384 100644 --- a/src/Platform/Vulkan/VulkanShader.cpp +++ b/src/Platform/Vulkan/VulkanShader.cpp @@ -16,6 +16,12 @@ namespace Donut // TODO(Hachem): Implement Vulkan shader creation from source } + VulkanShader::VulkanShader(const std::string& name, const std::string& computeSrc) + : m_Name(name) + { + // TODO(Hachem): Implement Vulkan compute shader creation + } + VulkanShader::~VulkanShader() { // TODO(Hachem): Implement Vulkan shader cleanup @@ -66,6 +72,21 @@ namespace Donut // TODO(Hachem): Implement Vulkan shader mat4 uniform setting } + void VulkanShader::Dispatch(uint32_t x, uint32_t y, uint32_t z) + { + // TODO(Hachem): Implement Vulkan compute shader dispatch + } + + void VulkanShader::DispatchIndirect(uint32_t offset) + { + // TODO(Hachem): Implement Vulkan indirect compute shader dispatch + } + + void VulkanShader::MemoryBarrier(uint32_t barriers) + { + // TODO(Hachem): Implement Vulkan memory barrier + } + void VulkanShader::UploadUniformInt(const std::string& name, int value) { // TODO(Hachem): Implement Vulkan uniform int upload diff --git a/src/Platform/Vulkan/VulkanShader.h b/src/Platform/Vulkan/VulkanShader.h index fd99907..2b75331 100644 --- a/src/Platform/Vulkan/VulkanShader.h +++ b/src/Platform/Vulkan/VulkanShader.h @@ -13,6 +13,7 @@ namespace Donut public: VulkanShader(const std::string& filepath); VulkanShader(const std::string& name, const std::string& vertexSrc, const std::string& fragmentSrc); + VulkanShader(const std::string& name, const std::string& computeSrc); virtual ~VulkanShader(); virtual void Bind() const override; @@ -26,6 +27,10 @@ namespace Donut virtual void SetFloat4(const std::string& name, const glm::vec4& value) override; virtual void SetMat4(const std::string& name, const glm::mat4& value) override; + virtual void Dispatch(uint32_t x, uint32_t y = 1, uint32_t z = 1) override; + virtual void DispatchIndirect(uint32_t offset = 0) override; + virtual void MemoryBarrier(uint32_t barriers) override; + virtual const std::string& GetName() const override { return m_Name; } void UploadUniformInt(const std::string& name, int value); diff --git a/src/Platform/Vulkan/VulkanTexture.cpp b/src/Platform/Vulkan/VulkanTexture.cpp index 971972c..623e540 100644 --- a/src/Platform/Vulkan/VulkanTexture.cpp +++ b/src/Platform/Vulkan/VulkanTexture.cpp @@ -28,4 +28,9 @@ namespace Donut { // TODO(Hachem): Implement Vulkan texture binding } + + void VulkanTexture2D::BindAsImage(uint32_t slot, bool readOnly) const + { + // TODO(Hachem): Implement Vulkan texture image binding + } }; diff --git a/src/Platform/Vulkan/VulkanTexture.h b/src/Platform/Vulkan/VulkanTexture.h index 2dcc3cf..ad711f9 100644 --- a/src/Platform/Vulkan/VulkanTexture.h +++ b/src/Platform/Vulkan/VulkanTexture.h @@ -12,17 +12,18 @@ namespace Donut VulkanTexture2D(const std::string& path); virtual ~VulkanTexture2D(); - virtual uint32_t GetWidth() const override { return m_Width; } - virtual uint32_t GetHeight() const override { return m_Height; } + virtual uint32_t GetWidth() const override { return m_Width; } + virtual uint32_t GetHeight() const override { return m_Height; } + virtual uint32_t GetRendererID() const override { return m_RendererID; } virtual void SetData(void* data, uint32_t size) override; - virtual void Bind(uint32_t slot = 0) const override; + virtual void Bind(uint32_t slot = 0) const override; + virtual void BindAsImage(uint32_t slot = 0, bool readOnly = false) const override; virtual bool operator==(const Texture& other) const override { return m_RendererID == ((VulkanTexture2D&)other).m_RendererID; } - private: std::string m_Path; uint32_t m_Width, m_Height; diff --git a/src/Platform/Vulkan/VulkanVertexBuffer.h b/src/Platform/Vulkan/VulkanVertexBuffer.h index 2208fd8..e809e44 100644 --- a/src/Platform/Vulkan/VulkanVertexBuffer.h +++ b/src/Platform/Vulkan/VulkanVertexBuffer.h @@ -17,11 +17,10 @@ namespace Donut virtual void SetData(const void* data, uint32_t size) override; - virtual const BufferLayout& GetLayout() const override { return m_Layout; } - virtual void SetLayout(const BufferLayout& layout) override { m_Layout = layout; } - + virtual const VertexBufferLayout& GetLayout() const override { return m_Layout; } + virtual void SetLayout(const VertexBufferLayout& layout) override { m_Layout = layout; } private: - uint32_t m_RendererID; - BufferLayout m_Layout; + uint32_t m_RendererID; + VertexBufferLayout m_Layout; }; }; |
