aboutsummaryrefslogtreecommitdiff
path: root/src/platform/vulkan/vulkan_shader.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/platform/vulkan/vulkan_shader.cpp')
-rw-r--r--src/platform/vulkan/vulkan_shader.cpp146
1 files changed, 146 insertions, 0 deletions
diff --git a/src/platform/vulkan/vulkan_shader.cpp b/src/platform/vulkan/vulkan_shader.cpp
new file mode 100644
index 0000000..7549761
--- /dev/null
+++ b/src/platform/vulkan/vulkan_shader.cpp
@@ -0,0 +1,146 @@
+#include "vulkan_shader.h"
+
+#include <fstream>
+#include <glm/gtc/type_ptr.hpp>
+
+namespace Donut
+{
+ VulkanShader::VulkanShader(const std::string& filepath)
+ {
+ // TODO(Hachem): Implement Vulkan shader creation from filepath
+ }
+
+ VulkanShader::VulkanShader(const std::string& name, const std::string& vertex_src, const std::string& fragment_src)
+ : m_name(name)
+ {
+ // TODO(Hachem): Implement Vulkan shader creation from source
+ }
+
+ VulkanShader::VulkanShader(const std::string& name, const std::string& compute_src)
+ : m_name(name)
+ {
+ // TODO(Hachem): Implement Vulkan compute shader creation
+ }
+
+ VulkanShader::~VulkanShader()
+ {
+ // TODO(Hachem): Implement Vulkan shader cleanup
+ }
+
+ auto VulkanShader::bind() const -> void
+ {
+ // TODO(Hachem): Implement Vulkan shader binding
+ }
+
+ auto VulkanShader::unbind() const -> void
+ {
+ // TODO(Hachem): Implement Vulkan shader unbinding
+ }
+
+ auto VulkanShader::set_int(const std::string& name, int value) -> void
+ {
+ // TODO(Hachem): Implement Vulkan shader int uniform setting
+ }
+
+ auto VulkanShader::set_int_array(const std::string& name, int* values, uint32_t count) -> void
+ {
+ // TODO(Hachem): Implement Vulkan shader int array uniform setting
+ }
+
+ auto VulkanShader::set_float(const std::string& name, float value) -> void
+ {
+ // TODO(Hachem): Implement Vulkan shader float uniform setting
+ }
+
+ auto VulkanShader::set_float2(const std::string& name, const glm::vec2& value) -> void
+ {
+ // TODO(Hachem): Implement Vulkan shader float2 uniform setting
+ }
+
+ auto VulkanShader::set_float3(const std::string& name, const glm::vec3& value) -> void
+ {
+ // TODO(Hachem): Implement Vulkan shader float3 uniform setting
+ }
+
+ auto VulkanShader::set_float4(const std::string& name, const glm::vec4& value) -> void
+ {
+ // TODO(Hachem): Implement Vulkan shader float4 uniform setting
+ }
+
+ auto VulkanShader::set_mat4(const std::string& name, const glm::mat4& value) -> void
+ {
+ // TODO(Hachem): Implement Vulkan shader mat4 uniform setting
+ }
+
+ auto VulkanShader::dispatch(uint32_t x, uint32_t y, uint32_t z) -> void
+ {
+ // TODO(Hachem): Implement Vulkan compute shader dispatch
+ }
+
+ auto VulkanShader::dispatch_indirect(uint32_t offset) -> void
+ {
+ // TODO(Hachem): Implement Vulkan indirect compute shader dispatch
+ }
+
+ auto VulkanShader::memory_barrier(uint32_t barriers) -> void
+ {
+ // TODO(Hachem): Implement Vulkan memory barrier
+ }
+
+ auto VulkanShader::upload_uniform_int(const std::string& name, int value) -> void
+ {
+ // TODO(Hachem): Implement Vulkan uniform int upload
+ }
+
+ auto VulkanShader::upload_uniform_int_array(const std::string& name, int* values, uint32_t count) -> void
+ {
+ // TODO(Hachem): Implement Vulkan uniform int array upload
+ }
+
+ auto VulkanShader::upload_uniform_float(const std::string& name, float value) -> void
+ {
+ // TODO(Hachem): Implement Vulkan uniform float upload
+ }
+
+ auto VulkanShader::upload_uniform_float2(const std::string& name, const glm::vec2& value) -> void
+ {
+ // TODO(Hachem): Implement Vulkan uniform float2 upload
+ }
+
+ auto VulkanShader::upload_uniform_float3(const std::string& name, const glm::vec3& value) -> void
+ {
+ // TODO(Hachem): Implement Vulkan uniform float3 upload
+ }
+
+ auto VulkanShader::upload_uniform_float4(const std::string& name, const glm::vec4& value) -> void
+ {
+ // TODO(Hachem): Implement Vulkan uniform float4 upload
+ }
+
+ auto VulkanShader::upload_uniform_mat3(const std::string& name, const glm::mat3& matrix) -> void
+ {
+ // TODO(Hachem): Implement Vulkan uniform mat3 upload
+ }
+
+ auto VulkanShader::upload_uniform_mat4(const std::string& name, const glm::mat4& matrix) -> void
+ {
+ // TODO(Hachem): Implement Vulkan uniform mat4 upload
+ }
+
+ auto VulkanShader::read_file(const std::string& filepath) -> std::string
+ {
+ // TODO(Hachem): Implement file reading for Vulkan shader
+ return "";
+ }
+
+ auto VulkanShader::pre_process(const std::string& source) -> std::unordered_map<uint32_t, std::string>
+ {
+ // TODO(Hachem): Implement shader preprocessing for Vulkan
+ return {};
+ }
+
+ auto VulkanShader::compile(const std::unordered_map<uint32_t, std::string>& shader_sources) -> void
+ {
+ // TODO(Hachem): Implement Vulkan shader compilation
+ }
+};