Golias Engine
A C++ 20 'game engine' built with SDL3 with wide platform support.
shader_material.h
Go to the documentation of this file.
1 #pragma once
2 #include "core/gstl/str.h"
4 
6 using UniformType = std::variant<float, glm::vec2, glm::vec3, glm::vec4, int>;
7 
9 public:
10  CanvasMaterial() = default;
11 
12  explicit CanvasMaterial(const RID shader_rid) : shader(shader_rid) {
13  }
14 
15  CanvasMaterial& set_shader(RID shader_rid);
16 
17  CanvasMaterial& set_color(const Color& col);
18 
20 
21  CanvasMaterial& set_custom_texture(const char* name, RID tex);
22 
23  template<typename T>
24  CanvasMaterial& set_shader_param(const char* uniform_name, const T& value);
25 
26  RID get_custom_texture(const char* uniform_name) const;
27 
28  RID get_shader() const;
29 
30  bool has_custom_shader() const;
31 
33 
35 
36  Color get_color() const;
37 
38  RID get_texture() const;
39 
40 private:
41 
42  Color color = Color::WHITE;
43  RID texture = INVALID_RID;
44 
45  RID shader = INVALID_RID;
47  HashMap<String, RID> custom_textures;
48 };
49 
50 
51 template<typename T>
52 CanvasMaterial& CanvasMaterial::set_shader_param(const char* uniform_name, const T& value) {
53  uniforms[uniform_name] = value;
54  return *this;
55 }
Definition: shader_material.h:8
CanvasMaterial & set_color(const Color &col)
Definition: shader_material.cpp:9
CanvasMaterial & set_shader_param(const char *uniform_name, const T &value)
Definition: shader_material.h:52
CanvasMaterial & set_custom_texture(const char *name, RID tex)
Definition: shader_material.cpp:19
RID get_shader() const
Definition: shader_material.cpp:41
Color get_color() const
Definition: shader_material.cpp:32
bool has_custom_shader() const
Definition: shader_material.cpp:45
RID get_custom_texture(const char *uniform_name) const
Definition: shader_material.cpp:24
const HashMap< String, UniformType > & get_uniforms() const
Definition: shader_material.cpp:49
CanvasMaterial(const RID shader_rid)
Definition: shader_material.h:12
const HashMap< String, RID > & get_custom_textures() const
Definition: shader_material.cpp:53
CanvasMaterial & set_texture(RID tex)
Definition: shader_material.cpp:14
CanvasMaterial()=default
RID get_texture() const
Definition: shader_material.cpp:36
CanvasMaterial & set_shader(RID shader_rid)
Definition: shader_material.cpp:4
constexpr RID INVALID_RID
Definition: rendering_device.h:13
uint32_t RID
Definition: rendering_device.h:12
std::variant< float, glm::vec2, glm::vec3, glm::vec4, int > UniformType
Variant type for shader parameter values.
Definition: shader_material.h:6
Definition: rendering_device.h:55
static const Color WHITE
Definition: rendering_device.h:65
std::unordered_map< K, V > HashMap
Definition: type_alias.h:20