aboutsummaryrefslogtreecommitdiff
path: root/src/Rendering
diff options
context:
space:
mode:
Diffstat (limited to 'src/Rendering')
-rw-r--r--src/Rendering/Framebuffer.cpp17
-rw-r--r--src/Rendering/Framebuffer.h65
-rw-r--r--src/Rendering/Renderer.cpp64
-rw-r--r--src/Rendering/Renderer.h158
-rw-r--r--src/Rendering/Shader.cpp84
-rw-r--r--src/Rendering/Shader.h58
-rw-r--r--src/Rendering/Texture.cpp68
-rw-r--r--src/Rendering/Texture.h42
8 files changed, 0 insertions, 556 deletions
diff --git a/src/Rendering/Framebuffer.cpp b/src/Rendering/Framebuffer.cpp
deleted file mode 100644
index 089c31e..0000000
--- a/src/Rendering/Framebuffer.cpp
+++ /dev/null
@@ -1,17 +0,0 @@
-#include "framebuffer.h"
-#include "renderer.h"
-
-#include "platform/opengl/opengl_framebuffer.h"
-
-namespace Donut
-{
- auto Framebuffer::create(const FramebufferSpecification& spec) -> Ref<Framebuffer>
- {
- switch (Renderer::get_api())
- {
- case RendererAPI::API::OpenGL: return create_ref<OpenGLFramebuffer>(spec);
- }
-
- return nullptr;
- }
-};
diff --git a/src/Rendering/Framebuffer.h b/src/Rendering/Framebuffer.h
deleted file mode 100644
index a01a81b..0000000
--- a/src/Rendering/Framebuffer.h
+++ /dev/null
@@ -1,65 +0,0 @@
-#pragma once
-
-#include "core/memory.h"
-#include "texture.h"
-
-namespace Donut
-{
- enum class FramebufferTextureFormat
- {
- None = 0,
-
- RGBA8,
- RED_INTEGER,
-
- DEPTH24STENCIL8,
-
- Depth = DEPTH24STENCIL8
- };
-
- struct FramebufferTextureSpecification
- {
- FramebufferTextureSpecification() = default;
- FramebufferTextureSpecification(FramebufferTextureFormat format)
- : texture_format(format) {}
-
- FramebufferTextureFormat texture_format = FramebufferTextureFormat::None;
- };
-
- struct FramebufferAttachmentSpecification
- {
- FramebufferAttachmentSpecification() = default;
- FramebufferAttachmentSpecification(std::initializer_list<FramebufferTextureSpecification> attachments)
- : attachments(attachments) {}
-
- std::vector<FramebufferTextureSpecification> attachments;
- };
-
- struct FramebufferSpecification
- {
- uint32_t Width = 0, Height = 0;
- FramebufferAttachmentSpecification attachments;
- uint32_t Samples = 1;
-
- bool SwapChainTarget = false;
- };
-
- class Framebuffer
- {
- public:
- virtual ~Framebuffer() = default;
-
- virtual auto bind() -> void = 0;
- virtual auto unbind() -> void = 0;
-
- virtual auto resize(uint32_t width, uint32_t height) -> void = 0;
- virtual auto read_pixel(uint32_t attachment_index, int x, int y) -> int = 0;
-
- virtual auto clear_attachment(uint32_t attachment_index, int value) -> void = 0;
- virtual auto get_color_attachment_renderer_id(uint32_t index = 0) const -> uint32_t = 0;
-
- virtual auto get_specification() const -> const FramebufferSpecification& = 0;
-
- static auto create(const FramebufferSpecification& spec) -> Ref<Framebuffer>;
- };
-};
diff --git a/src/Rendering/Renderer.cpp b/src/Rendering/Renderer.cpp
deleted file mode 100644
index 28b7962..0000000
--- a/src/Rendering/Renderer.cpp
+++ /dev/null
@@ -1,64 +0,0 @@
-#include "renderer.h"
-
-#include "platform/opengl/opengl_renderer_api.h"
-#include "platform/vulkan/vulkan_renderer_api.h"
-
-#include <glm/gtc/matrix_transform.hpp>
-
-namespace Donut
-{
- auto RendererAPI::create() -> Scope<RendererAPI>
- {
- switch (s_api)
- {
- case API::OpenGL:
- return create_scope<OpenGLRendererAPI>();
- case API::Vulkan:
- return create_scope<VulkanRendererAPI>();
- default:
- return nullptr;
- }
- }
-
- RendererAPI::API RendererAPI::s_api = RendererAPI::API::OpenGL;
-
- auto Renderer::init() -> void
- {
- RenderCommand::init();
- RenderCommand::enable_depth_test();
- }
-
- auto Renderer::shutdown() -> void
- {
- }
-
- auto Renderer::on_window_resize(uint32_t width, uint32_t height) -> void
- {
- RenderCommand::set_viewport(0, 0, width, height);
- }
-
- auto Renderer::submit(const Ref<Shader>& shader,
- const Ref<VertexArray>& vertex_array,
- const glm::mat4& transform,
- const glm::mat4& view_projection) -> void
- {
- shader->bind();
- shader->set_mat4("u_ViewProjection", view_projection);
- shader->set_mat4("u_Transform", transform);
-
- vertex_array->bind();
- RenderCommand::draw_indexed(vertex_array);
- }
-
- Scope<RendererAPI> RenderCommand::s_renderer_api = RendererAPI::create();
-
- auto Renderer::set_clear_color(const glm::vec4& color) -> void
- {
- RenderCommand::set_clear_color(color);
- }
-
- auto Renderer::clear() -> void
- {
- RenderCommand::clear();
- }
-};
diff --git a/src/Rendering/Renderer.h b/src/Rendering/Renderer.h
deleted file mode 100644
index 189723d..0000000
--- a/src/Rendering/Renderer.h
+++ /dev/null
@@ -1,158 +0,0 @@
-#pragma once
-
-#include "core/memory.h"
-#include "vertex_array.h"
-#include "shader.h"
-#include "framebuffer.h"
-
-#include <glm/glm.hpp>
-
-namespace Donut
-{
- class RendererAPI
- {
- public:
- enum class API
- {
- None = 0,
- OpenGL = 1,
- Vulkan = 2,
- };
-
- public:
- virtual ~RendererAPI() = default;
-
- virtual auto init() -> void = 0;
- virtual auto set_viewport(uint32_t x, uint32_t y,
- uint32_t width, uint32_t height) -> void = 0;
- virtual auto set_clear_color(const glm::vec4& color) -> void = 0;
- virtual auto clear() -> void = 0;
- virtual auto enable_depth_test() -> void = 0;
- virtual auto disable_depth_test() -> void = 0;
- virtual auto set_face_culling(bool enabled) -> void = 0;
- virtual auto enable_blending() -> void = 0;
- virtual auto disable_blending() -> void = 0;
-
- virtual auto draw_indexed(const Ref<VertexArray>& vertex_array,
- uint32_t index_count = 0) -> void = 0;
-
- virtual auto draw_arrays(uint32_t vertex_count, uint32_t first = 0) -> void = 0;
- virtual auto draw_lines(const Ref<VertexArray>& vertex_array,
- uint32_t index_count = 0) -> void = 0;
- virtual auto bind_texture(uint32_t texture_id, uint32_t slot = 0) -> void = 0;
- virtual auto bind_image_texture(uint32_t texture_id,
- uint32_t slot = 0,
- bool read_only = false) -> void = 0;
- virtual auto read_pixels(uint32_t x, uint32_t y, uint32_t width, uint32_t height,
- uint32_t format, uint32_t type, void* pixels) -> void = 0;
-
- inline static auto get_api() -> API { return s_api; }
- inline static auto set_api(API api) -> void { s_api = api; }
- static auto create() -> Scope<RendererAPI>;
-
- private:
- static API s_api;
- };
-
- class RenderCommand
- {
- public:
- inline static auto init() -> void
- {
- s_renderer_api->init();
- }
-
- inline static auto set_viewport(uint32_t x, uint32_t y, uint32_t width, uint32_t height) -> void
- {
- s_renderer_api->set_viewport(x, y, width, height);
- }
-
- inline static auto set_clear_color(const glm::vec4& color) -> void
- {
- s_renderer_api->set_clear_color(color);
- }
-
- inline static auto clear() -> void
- {
- s_renderer_api->clear();
- }
-
- inline static auto enable_depth_test() -> void
- {
- s_renderer_api->enable_depth_test();
- }
-
- inline static auto disable_depth_test() -> void
- {
- s_renderer_api->disable_depth_test();
- }
-
- inline static auto set_face_culling(bool enabled) -> void
- {
- s_renderer_api->set_face_culling(enabled);
- }
-
- inline static auto enable_blending() -> void
- {
- s_renderer_api->enable_blending();
- }
-
- inline static auto disable_blending() -> void
- {
- s_renderer_api->disable_blending();
- }
-
- inline static auto draw_indexed(const Ref<VertexArray>& vertex_array, uint32_t index_count = 0) -> void
- {
- s_renderer_api->draw_indexed(vertex_array, index_count);
- }
-
- inline static auto draw_arrays(uint32_t vertex_count, uint32_t first = 0) -> void
- {
- s_renderer_api->draw_arrays(vertex_count, first);
- }
-
- inline static auto draw_lines(const Ref<VertexArray>& vertex_array, uint32_t index_count = 0) -> void
- {
- s_renderer_api->draw_lines(vertex_array, index_count);
- }
-
- inline static auto bind_texture(uint32_t texture_id, uint32_t slot = 0) -> void
- {
- s_renderer_api->bind_texture(texture_id, slot);
- }
-
- inline static auto bind_image_texture(uint32_t texture_id, uint32_t slot = 0, bool read_only = false) -> void
- {
- s_renderer_api->bind_image_texture(texture_id, slot, read_only);
- }
-
- inline static auto read_pixels(uint32_t x, uint32_t y, uint32_t width, uint32_t height,
- uint32_t format, uint32_t type, void* pixels) -> void
- {
- s_renderer_api->read_pixels(x, y, width, height, format, type, pixels);
- }
-
- private:
- static Scope<RendererAPI> s_renderer_api;
- };
-
- class Renderer
- {
- public:
- static auto init() -> void;
- static auto shutdown() -> void;
-
- static auto on_window_resize(uint32_t width, uint32_t height) -> void;
-
- static auto submit(const Ref<Shader>& shader,
- const Ref<VertexArray>& vertex_array,
- const glm::mat4& transform,
- const glm::mat4& view_projection) -> void;
-
- static auto set_clear_color(const glm::vec4& color) -> void;
- static auto clear() -> void;
-
- inline static auto get_api() -> RendererAPI::API { return RendererAPI::get_api(); }
- };
-};
diff --git a/src/Rendering/Shader.cpp b/src/Rendering/Shader.cpp
deleted file mode 100644
index 167b855..0000000
--- a/src/Rendering/Shader.cpp
+++ /dev/null
@@ -1,84 +0,0 @@
-#include "shader.h"
-#include "renderer.h"
-
-#include "platform/opengl/opengl_shader.h"
-#include "platform/vulkan/vulkan_shader.h"
-
-namespace Donut
-{
- auto Shader::create(const std::string& filepath) -> Shader*
- {
- switch (Renderer::get_api())
- {
- case RendererAPI::API::OpenGL:
- return new OpenGLShader(filepath);
- case RendererAPI::API::Vulkan:
- return new VulkanShader(filepath);
- default:
- return nullptr;
- }
- }
-
- auto Shader::create(const std::string& name, const std::string& vertex_src, const std::string& fragment_src) -> Shader*
- {
- switch (Renderer::get_api())
- {
- case RendererAPI::API::OpenGL:
- return new OpenGLShader(name, vertex_src, fragment_src);
- case RendererAPI::API::Vulkan:
- return new VulkanShader(name, vertex_src, fragment_src);
- default:
- return nullptr;
- }
- }
-
- auto Shader::create_compute(const std::string& name, const std::string& compute_src) -> Shader*
- {
- switch (Renderer::get_api())
- {
- case RendererAPI::API::OpenGL:
- return new OpenGLShader(name, compute_src);
- case RendererAPI::API::Vulkan:
- return new VulkanShader(name, compute_src);
- default:
- return nullptr;
- }
- }
-
- auto ShaderLibrary::add(const Ref<Shader>& shader) -> void
- {
- auto& name = shader->get_name();
- add(name, shader);
- }
-
- auto ShaderLibrary::add(const std::string& name, const Ref<Shader>& shader) -> void
- {
- m_shaders[name] = shader;
- }
-
- auto ShaderLibrary::load(const std::string& filepath) -> Ref<Shader>
- {
- auto shader = Ref<Shader>(Shader::create(filepath));
- add(shader);
- return shader;
- }
-
- auto ShaderLibrary::load(const std::string& name, const std::string& filepath) -> Ref<Shader>
- {
- auto shader = Ref<Shader>(Shader::create(filepath));
- add(name, shader);
- return shader;
- }
-
- auto ShaderLibrary::Get(const std::string& name) -> Ref<Shader>
- {
- if (exists(name))
- return m_shaders[name];
- return nullptr;
- }
-
- auto ShaderLibrary::exists(const std::string& name) const -> bool
- {
- return m_shaders.find(name) != m_shaders.end();
- }
-};
diff --git a/src/Rendering/Shader.h b/src/Rendering/Shader.h
deleted file mode 100644
index bc3fd9a..0000000
--- a/src/Rendering/Shader.h
+++ /dev/null
@@ -1,58 +0,0 @@
-#pragma once
-
-#include "core/memory.h"
-
-#include <string>
-#include <unordered_map>
-#include <glm/glm.hpp>
-
-#define SHADER_STORAGE_BARRIER_BIT 0x00002000
-#define UNIFORM_BARRIER_BIT 0x00000004
-#define TEXTURE_FETCH_BARRIER_BIT 0x00000008
-#define IMAGE_ACCESS_BARRIER_BIT 0x00000020
-
-namespace Donut
-{
- class Shader
- {
- public:
- virtual ~Shader() = default;
-
- virtual auto bind() const -> void = 0;
- virtual auto unbind() const -> void = 0;
-
- virtual auto set_int( const std::string& name, int value) -> void = 0;
- virtual auto set_int_array(const std::string& name, int* values, uint32_t count) -> void = 0;
- virtual auto set_float( const std::string& name, float value) -> void = 0;
- virtual auto set_float2( const std::string& name, const glm::vec2& value) -> void = 0;
- virtual auto set_float3( const std::string& name, const glm::vec3& value) -> void = 0;
- virtual auto set_float4( const std::string& name, const glm::vec4& value) -> void = 0;
- virtual auto set_mat4( const std::string& name, const glm::mat4& value) -> void = 0;
-
- virtual auto dispatch(uint32_t x, uint32_t y = 1, uint32_t z = 1) -> void = 0;
- virtual auto dispatch_indirect(uint32_t offset = 0) -> void = 0;
- virtual auto memory_barrier(uint32_t barriers) -> void = 0;
-
- virtual auto get_name() const -> const std::string& = 0;
- virtual auto get_renderer_id() const -> uint32_t = 0;
-
- static auto create(const std::string& filepath) -> Shader*;
- static auto create(const std::string& name, const std::string& vertex_src, const std::string& fragment_src) -> Shader*;
- static auto create_compute(const std::string& name, const std::string& compute_src) -> Shader*;
- };
-
- class ShaderLibrary
- {
- public:
- auto add(const Ref<Shader>& shader) -> void;
- auto add(const std::string& name, const Ref<Shader>& shader) -> void;
- auto load(const std::string& filepath) -> Ref<Shader>;
- auto load(const std::string& name, const std::string& filepath) -> Ref<Shader>;
-
- Ref<Shader> Get(const std::string& name);
-
- auto exists(const std::string& name) const -> bool;
- private:
- std::unordered_map<std::string, Ref<Shader>> m_shaders;
- };
-};
diff --git a/src/Rendering/Texture.cpp b/src/Rendering/Texture.cpp
deleted file mode 100644
index 2470e46..0000000
--- a/src/Rendering/Texture.cpp
+++ /dev/null
@@ -1,68 +0,0 @@
-#include "texture.h"
-#include "renderer.h"
-
-#include "platform/opengl/opengl_texture.h"
-#include "platform/vulkan/vulkan_texture.h"
-
-namespace Donut
-{
- auto Texture2D::create(uint32_t width, uint32_t height) -> Ref<Texture2D>
- {
- switch (Renderer::get_api())
- {
- case RendererAPI::API::OpenGL:
- return create_ref<OpenGLTexture2D>(width, height);
- case RendererAPI::API::Vulkan:
- return create_ref<VulkanTexture2D>(width, height);
- case RendererAPI::API::None:
- return nullptr;
- default:
- return nullptr;
- }
- }
-
- auto Texture2D::create(const std::string& path) -> Ref<Texture2D>
- {
- switch (Renderer::get_api())
- {
- case RendererAPI::API::OpenGL:
- return create_ref<OpenGLTexture2D>(path);
- case RendererAPI::API::Vulkan:
- return create_ref<VulkanTexture2D>(path);
- case RendererAPI::API::None:
- return nullptr;
- default:
- return nullptr;
- }
- }
-
- auto CubemapTexture::create(uint32_t width, uint32_t height) -> Ref<CubemapTexture>
- {
- switch (Renderer::get_api())
- {
- case RendererAPI::API::OpenGL:
- return create_ref<OpenGLCubemapTexture>(width, height);
- case RendererAPI::API::Vulkan:
- return create_ref<VulkanCubemapTexture>(width, height);
- case RendererAPI::API::None:
- return nullptr;
- default:
- return nullptr;
- }
- }
-
- auto CubemapTexture::create_from_hdri(const std::string& path) -> Ref<CubemapTexture>
- {
- switch (Renderer::get_api())
- {
- case RendererAPI::API::OpenGL:
- return create_ref<OpenGLCubemapTexture>(path);
- case RendererAPI::API::Vulkan:
- return create_ref<VulkanCubemapTexture>(path);
- case RendererAPI::API::None:
- return nullptr;
- default:
- return nullptr;
- }
- }
-}; \ No newline at end of file
diff --git a/src/Rendering/Texture.h b/src/Rendering/Texture.h
deleted file mode 100644
index e9b3e0a..0000000
--- a/src/Rendering/Texture.h
+++ /dev/null
@@ -1,42 +0,0 @@
-#pragma once
-
-#include "core/memory.h"
-
-#include <string>
-#include <glm/glm.hpp>
-
-namespace Donut
-{
- class Texture
- {
- public:
- virtual ~Texture() = default;
-
- virtual auto get_width() const -> uint32_t = 0;
- virtual auto get_height() const -> uint32_t = 0;
- virtual auto get_renderer_id() const -> uint32_t = 0;
-
- virtual auto set_data(void* data, uint32_t size) -> void = 0;
- virtual auto bind(uint32_t slot = 0) const -> void = 0;
- virtual void bind_as_image(uint32_t slot = 0,
- bool read_only = false) const = 0;
-
- virtual bool operator==(const Texture& other) const = 0;
- };
-
- class Texture2D
- : public Texture
- {
- public:
- static auto create(uint32_t width, uint32_t height) -> Ref<Texture2D>;
- static auto create(const std::string& path) -> Ref<Texture2D>;
- };
-
- class CubemapTexture
- : public Texture
- {
- public:
- static auto create(uint32_t width, uint32_t height) -> Ref<CubemapTexture>;
- static auto create_from_hdri(const std::string& path) -> Ref<CubemapTexture>;
- };
-}; \ No newline at end of file