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 | 9671d5e54484b8bce261207d08ff15053ae24e48 (patch) | |
| tree | 0bd7018fd818eb16069f27102b9e489d5369bcf6 /src/platform | |
| parent | 0262eeea8762cdeb14c98d22473ebf0fd6b37bf9 (diff) | |
feat: ability to switch render API
Diffstat (limited to 'src/platform')
| -rw-r--r-- | src/platform/vulkan/vulkan_renderer_api.h | 2 | ||||
| -rw-r--r-- | src/platform/vulkan/vulkan_shader.cpp | 17 | ||||
| -rw-r--r-- | src/platform/vulkan/vulkan_shader.h | 5 | ||||
| -rw-r--r-- | src/platform/vulkan/vulkan_texture.cpp | 4 | ||||
| -rw-r--r-- | src/platform/vulkan/vulkan_texture.h | 9 | ||||
| -rw-r--r-- | src/platform/vulkan/vulkan_vertex_buffer.h | 9 |
6 files changed, 36 insertions, 10 deletions
diff --git a/src/platform/vulkan/vulkan_renderer_api.h b/src/platform/vulkan/vulkan_renderer_api.h index c8d2689..0e1baf9 100644 --- a/src/platform/vulkan/vulkan_renderer_api.h +++ b/src/platform/vulkan/vulkan_renderer_api.h @@ -1,6 +1,6 @@ #pragma once -#include "Rendering/RendererAPI.h" +#include "rendering/renderer.h" namespace Donut { diff --git a/src/platform/vulkan/vulkan_shader.cpp b/src/platform/vulkan/vulkan_shader.cpp index 53d65a5..6572dae 100644 --- a/src/platform/vulkan/vulkan_shader.cpp +++ b/src/platform/vulkan/vulkan_shader.cpp @@ -14,6 +14,11 @@ namespace Donut { } + VulkanShader::VulkanShader(const std::string& name, const std::string& compute_src) + : m_name(name) + { + } + VulkanShader::~VulkanShader() { } @@ -54,6 +59,18 @@ namespace Donut { } + void VulkanShader::dispatch(uint32_t x, uint32_t y, uint32_t z) + { + } + + void VulkanShader::dispatch_indirect(uint32_t offset) + { + } + + void VulkanShader::memory_barrier(uint32_t barriers) + { + } + void VulkanShader::upload_uniform_int(const std::string& name, int value) { } diff --git a/src/platform/vulkan/vulkan_shader.h b/src/platform/vulkan/vulkan_shader.h index 4a46263..fdf9e65 100644 --- a/src/platform/vulkan/vulkan_shader.h +++ b/src/platform/vulkan/vulkan_shader.h @@ -13,6 +13,7 @@ namespace Donut public: VulkanShader(const std::string& filepath); VulkanShader(const std::string& name, const std::string& vertex_src, const std::string& fragment_src); + VulkanShader(const std::string& name, const std::string& compute_src); virtual ~VulkanShader(); virtual void bind() const override; @@ -26,6 +27,10 @@ namespace Donut virtual void set_float4(const std::string& name, const glm::vec4& value) override; virtual void set_mat4(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 dispatch_indirect(uint32_t offset = 0) override; + virtual void memory_barrier(uint32_t barriers) override; + virtual const std::string& get_name() const override { return m_name; } void upload_uniform_int(const std::string& name, int value); diff --git a/src/platform/vulkan/vulkan_texture.cpp b/src/platform/vulkan/vulkan_texture.cpp index 2efd115..e63468d 100644 --- a/src/platform/vulkan/vulkan_texture.cpp +++ b/src/platform/vulkan/vulkan_texture.cpp @@ -23,4 +23,8 @@ namespace Donut void VulkanTexture2D::bind(uint32_t slot) const { } + + void VulkanTexture2D::bind_as_image(uint32_t slot, bool read_only) const + { + } }; diff --git a/src/platform/vulkan/vulkan_texture.h b/src/platform/vulkan/vulkan_texture.h index b69aebc..a9ac920 100644 --- a/src/platform/vulkan/vulkan_texture.h +++ b/src/platform/vulkan/vulkan_texture.h @@ -12,17 +12,18 @@ namespace Donut VulkanTexture2D(const std::string& path); virtual ~VulkanTexture2D(); - virtual uint32_t get_width() const override { return m_width; } - virtual uint32_t get_height() const override { return m_height; } + virtual uint32_t get_width() const override { return m_width; } + virtual uint32_t get_height() const override { return m_height; } + virtual uint32_t get_renderer_id() const override { return m_renderer_id; } virtual void set_data(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 bind_as_image(uint32_t slot = 0, bool read_only = false) const override; virtual bool operator==(const Texture& other) const override { return m_renderer_id == ((VulkanTexture2D&)other).m_renderer_id; } - private: std::string m_path; uint32_t m_width, m_height; diff --git a/src/platform/vulkan/vulkan_vertex_buffer.h b/src/platform/vulkan/vulkan_vertex_buffer.h index 516f4e8..4c6f124 100644 --- a/src/platform/vulkan/vulkan_vertex_buffer.h +++ b/src/platform/vulkan/vulkan_vertex_buffer.h @@ -17,11 +17,10 @@ namespace Donut virtual void set_data(const void* data, uint32_t size) override; - virtual const BufferLayout& get_layout() const override { return m_layout; } - virtual void set_layout(const BufferLayout& layout) override { m_layout = layout; } - + virtual const VertexBufferLayout& get_layout() const override { return m_layout; } + virtual void set_layout(const VertexBufferLayout& layout) override { m_layout = layout; } private: - uint32_t m_renderer_id; - BufferLayout m_layout; + uint32_t m_renderer_id; + VertexBufferLayout m_layout; }; }; |
