#include "vulkan_shader.h" #include #include 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 { // TODO(Hachem): Implement shader preprocessing for Vulkan return {}; } auto VulkanShader::compile(const std::unordered_map& shader_sources) -> void { // TODO(Hachem): Implement Vulkan shader compilation } };