hachem.wtf
aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/core/application.cpp3
-rw-r--r--src/main.cpp2
-rw-r--r--src/platform/vulkan/vulkan_renderer_api.h2
-rw-r--r--src/platform/vulkan/vulkan_shader.cpp17
-rw-r--r--src/platform/vulkan/vulkan_shader.h5
-rw-r--r--src/platform/vulkan/vulkan_texture.cpp4
-rw-r--r--src/platform/vulkan/vulkan_texture.h9
-rw-r--r--src/platform/vulkan/vulkan_vertex_buffer.h9
-rw-r--r--src/rendering/renderer.cpp6
-rw-r--r--src/rendering/renderer.h17
10 files changed, 49 insertions, 25 deletions
diff --git a/src/core/application.cpp b/src/core/application.cpp
index f878c71..b05e2b5 100644
--- a/src/core/application.cpp
+++ b/src/core/application.cpp
@@ -1,4 +1,5 @@
#include "application.h"
+
#include "rendering/renderer.h"
#include "states/config_state.h"
@@ -101,6 +102,8 @@ namespace Donut
void Application::on_init()
{
Logger::init();
+
+ RendererAPI::set_api(RendererAPI::API::OpenGL);
Renderer::init();
Renderer::on_window_resize(1280, 720);
diff --git a/src/main.cpp b/src/main.cpp
index 1833b66..8138e0e 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -2,7 +2,7 @@
int main()
{
- Donut::Application* app = new Donut::Application("Donut", 1280, 720);
+ Donut::Application* app = new Donut::Application();
app->run();
delete app;
}
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;
};
};
diff --git a/src/rendering/renderer.cpp b/src/rendering/renderer.cpp
index 3343cce..46dd690 100644
--- a/src/rendering/renderer.cpp
+++ b/src/rendering/renderer.cpp
@@ -1,12 +1,14 @@
#include "renderer.h"
+
#include "platform/opengl/opengl_renderer_api.h"
#include "platform/vulkan/vulkan_renderer_api.h"
+
#include <memory>
#include <glm/gtc/matrix_transform.hpp>
namespace Donut
{
- Scope<RendererAPI> RendererAPI::create()
+ std::unique_ptr<RendererAPI> RendererAPI::create()
{
switch (s_api)
{
@@ -49,7 +51,7 @@ namespace Donut
RenderCommand::draw_indexed(vertex_array);
}
- Scope<RendererAPI> RenderCommand::s_renderer_api = RendererAPI::create();
+ std::unique_ptr<RendererAPI> RenderCommand::s_renderer_api = RendererAPI::create();
void Renderer::set_clear_color(const glm::vec4& color)
{
diff --git a/src/rendering/renderer.h b/src/rendering/renderer.h
index c7ace3c..dd4c259 100644
--- a/src/rendering/renderer.h
+++ b/src/rendering/renderer.h
@@ -2,20 +2,12 @@
#include "vertex_array.h"
#include "shader.h"
+
#include <glm/glm.hpp>
#include <memory>
namespace Donut
{
- template<typename T>
- using Scope = std::unique_ptr<T>;
-
- template<typename T, typename ... Args>
- constexpr Scope<T> create_scope(Args&& ... args)
- {
- return std::make_unique<T>(std::forward<Args>(args)...);
- }
-
class RendererAPI
{
public:
@@ -39,8 +31,9 @@ namespace Donut
virtual void draw_indexed(const std::shared_ptr<VertexArray>& vertex_array,
uint32_t index_count = 0) = 0;
- inline static API get_api() { return s_api; }
- static Scope<RendererAPI> create();
+ inline static API get_api() { return s_api; }
+ inline static void set_api(API api) { s_api = api; }
+ static std::unique_ptr<RendererAPI> create();
private:
static API s_api;
};
@@ -84,7 +77,7 @@ namespace Donut
}
private:
- static Scope<RendererAPI> s_renderer_api;
+ static std::unique_ptr<RendererAPI> s_renderer_api;
};
class Renderer