Ember
A C++ 20 'game engine' built with SDL3 with wide platform support.
shader.h
Go to the documentation of this file.
1 #pragma once
2 #include "core/io/file_system.h"
3 
4 
5 class ShaderEffect {
6 public:
7  struct {
8 
9  int bEnabled = 0;
10  glm::vec4 color = glm::vec4(1.0f);
11  float thickness = 0.0f;
12 
14 
15  struct {
16 
17  int bEnabled = 0;
18  glm::vec4 color = glm::vec4(1.0f);
19  glm::vec2 pixel_offset = glm::vec2(0.0f);
20 
21  } Shadow;
22 
23  struct {
24  int bEnabled = 0;
25  } Glow;
26 };
27 
28 
44 class Shader {
45 public:
46  Shader() = default;
47 
48  virtual ~Shader() = default;
49 
50  virtual void Bind() const = 0;
51 
52  virtual void SetValue(const std::string& name, float value) = 0;
53 
54  virtual void SetValue(const std::string& name, int value) = 0;
55 
56  virtual void SetValue(const std::string& name, glm::mat4 value) = 0;
57 
58  virtual void SetValue(const std::string& name, glm::vec2 value) = 0;
59 
60  virtual void SetValue(const std::string& name, glm::vec3 value) = 0;
61 
62  virtual void SetValue(const std::string& name, glm::vec4 value) = 0;
63 
64  virtual void SetValue(const std::string& name, unsigned int value) = 0;
65 
66  virtual void Destroy() = 0;
67 
68  virtual unsigned int GetID() const = 0;
69 
70  virtual bool IsValid() const = 0;
71 
72 
73 protected:
74  unsigned int id;
75 
76  std::unordered_map<std::string, unsigned int> uniforms;
77 };
Definition: shader.h:5
float thickness
Definition: shader.h:11
glm::vec4 color
Definition: shader.h:10
int bEnabled
Definition: shader.h:9
struct ShaderEffect::@3 Shadow
glm::vec2 pixel_offset
Definition: shader.h:19
struct ShaderEffect::@4 Glow
struct ShaderEffect::@2 Outline
Shader Abstract class.
Definition: shader.h:44
virtual void SetValue(const std::string &name, glm::vec2 value)=0
virtual ~Shader()=default
virtual void Bind() const =0
virtual bool IsValid() const =0
virtual void SetValue(const std::string &name, glm::mat4 value)=0
virtual void SetValue(const std::string &name, float value)=0
std::unordered_map< std::string, unsigned int > uniforms
Definition: shader.h:76
virtual unsigned int GetID() const =0
virtual void SetValue(const std::string &name, glm::vec4 value)=0
virtual void SetValue(const std::string &name, int value)=0
virtual void SetValue(const std::string &name, glm::vec3 value)=0
virtual void SetValue(const std::string &name, unsigned int value)=0
Shader()=default
unsigned int id
Definition: shader.h:74
virtual void Destroy()=0