LkEngine 0.1.2
 
Loading...
Searching...
No Matches
ShaderUniform.h
1#pragma once
2
4#include "LkEngine/Core/Math/MathLibrary.h"
5
6#include "LkEngine/Serialization/StreamReader.h"
7#include "LkEngine/Serialization/StreamWriter.h"
8
9
10namespace LkEngine {
11
12 enum class ShaderUniformType
13 {
14 None = 0,
15 Bool, Int, UInt, Float,
16 Vec2, Vec3, Vec4,
17 Mat3, Mat4,
18 IVec2, IVec3, IVec4
19 };
20
22 {
23 public:
24 ShaderUniform() = default;
25 ShaderUniform(std::string name, ShaderUniformType type, uint32_t size, uint32_t offset);
26
27 const std::string& GetName() const { return m_Name; }
28 ShaderUniformType GetType() const { return m_Type; }
29 uint32_t GetSize() const { return m_Size; }
30 uint32_t GetOffset() const { return m_Offset; }
31
32 static void Serialize(StreamWriter* serializer, const ShaderUniform& instance)
33 {
34 serializer->WriteString(instance.m_Name);
35 serializer->WriteRaw(instance.m_Type);
36 serializer->WriteRaw(instance.m_Size);
37 serializer->WriteRaw(instance.m_Offset);
38 }
39
40 static void Deserialize(StreamReader* deserializer, ShaderUniform& instance)
41 {
42 deserializer->ReadString(instance.m_Name);
43 deserializer->ReadRaw(instance.m_Type);
44 deserializer->ReadRaw(instance.m_Size);
45 deserializer->ReadRaw(instance.m_Offset);
46 }
47 private:
48 std::string m_Name;
49 ShaderUniformType m_Type = ShaderUniformType::None;
50 uint32_t m_Size = 0;
51 uint32_t m_Offset = 0;
52 };
53
55 {
56 std::string Name;
57 uint32_t Index;
58 uint32_t BindingPoint;
59 uint32_t Size;
60 uint32_t RendererID;
61 std::vector<ShaderUniform> Uniforms;
62 };
63
65 {
66 std::string Name;
67 uint32_t Index;
68 uint32_t BindingPoint;
69 uint32_t Size;
70 uint32_t RendererID;
71 std::vector<ShaderUniform> Uniforms;
72 };
73
75 {
76 std::string Name;
77 uint32_t Size = 0;
78 std::unordered_map<std::string, ShaderUniform> Uniforms;
79
80 static void Serialize(StreamWriter* serializer, const ShaderBuffer& instance)
81 {
82 serializer->WriteString(instance.Name);
83 serializer->WriteRaw(instance.Size);
84 serializer->WriteMap(instance.Uniforms);
85 }
86
87 static void Deserialize(StreamReader* deserializer, ShaderBuffer& instance)
88 {
89 deserializer->ReadString(instance.Name);
90 deserializer->ReadRaw(instance.Size);
91 deserializer->ReadMap(instance.Uniforms);
92 }
93 };
94
95 namespace VKUtils {
96
97 static constexpr std::string_view UniformTypeToString(ShaderUniformType type); // Defined in LkVulkan.cpp
98
99 }
100
101}
Core header.
Definition ShaderUniform.h:22
Definition StreamReader.h:12
Definition StreamWriter.h:9
Definition Asset.h:11
Definition ShaderUniform.h:75
Definition ShaderUniform.h:65
Definition ShaderUniform.h:55