aboutsummaryrefslogtreecommitdiff
path: root/src/platform/vulkan/vulkan_shader.cpp
blob: 7549761af4c0dedf5e844048285ed75b8b58288d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
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
	}
};