11#define EE_SHADER_MODEL "model"
12#define EE_SHADER_VIEWPROJ "viewProj"
13#define EE_SHADER_CAMPOS "camPos"
19 class DirectionalLight;
27 virtual uint32_t
GetID()
const = 0;
35 static std::shared_ptr<Shader>
Create(
const std::string& vertexSource,
const std::string& fragmentSouce);
36 static std::shared_ptr<Shader>
CreateFromFiles(
const std::string& vertexSrcPath,
const std::string& fragSrcPath);
37 static std::shared_ptr<Shader>
CreateFromFiles(
const std::string& vertexSrcPath,
const std::string& fragSrcPath,
const std::string& customVertCode,
const std::string& customFragCode);
40 void UseLight(
Light* newLightSetting,
const std::string& lightName);
62 virtual void SetUniform1f(
const std::string& location,
float value)
const = 0;
63 virtual void SetUniform2f(
const std::string& location,
float x,
float y)
const = 0;
64 virtual void SetUniform3f(
const std::string& location,
float x,
float y,
float z)
const = 0;
65 virtual void SetUniform4f(
const std::string& location,
float x,
float y,
float z,
float w)
const = 0;
67 inline void SetUniform2f(
const std::string& location, glm::vec2 value)
const
71 inline void SetUniform3f(
const std::string& location, glm::vec3 value)
const
75 inline void SetUniform4f(
const std::string& location, glm::vec4 value)
const
77 SetUniform4f(location, value.x, value.y, value.z, value.w);
81 virtual void SetUniform1i(
const std::string& location,
int value)
const = 0;
82 virtual void SetUniform2i(
const std::string& location,
int x,
int y)
const = 0;
83 virtual void SetUniform3i(
const std::string& location,
int x,
int y,
int z)
const = 0;
84 virtual void SetUniform4i(
const std::string& location,
int x,
int y,
int z,
int w)
const = 0;
87 virtual void SetUniform1fv(
const std::string& location,
int count,
float* value)
const = 0;
88 virtual void SetUniform2fv(
const std::string& location,
int count,
float* value)
const = 0;
89 virtual void SetUniform3fv(
const std::string& location,
int count,
float* value)
const = 0;
90 virtual void SetUniform4fv(
const std::string& location,
int count,
float* value)
const = 0;
93 virtual void SetUniform1iv(
const std::string& location,
int count,
int* value)
const = 0;
94 virtual void SetUniform2iv(
const std::string& location,
int count,
int* value)
const = 0;
95 virtual void SetUniform3iv(
const std::string& location,
int count,
int* value)
const = 0;
96 virtual void SetUniform4iv(
const std::string& location,
int count,
int* value)
const = 0;
118 virtual void Bind()
const = 0;
119 virtual void Unbind()
const = 0;
123 bool m_isInitialized =
false;
135layout(location = 0) in vec3 a_Position;
137uniform mat4 viewProj;
142 gl_Position = viewProj * model * vec4(a_Position, 1.0);
149layout(location = 0) out vec4 FragColor;
153 FragColor = vec4(1.0);
160layout(location = 0) out vec4 FragColor;
165 vec2 uv = gl_FragCoord.xy / 100.0;
166 float pattern = sin(uv.x * 10.0 + time) * cos(uv.y * 10.0 + time);
167 FragColor = vec4(1.0, 0.0, 1.0, 1.0);
168 if(pattern > 0.0) FragColor = vec4(0.0, 0.0, 0.0, 1.0);
static constexpr std::string_view GetFragmentShader()
static constexpr std::string_view GetErrorShader()
static constexpr std::string_view GetVertexShader()
virtual void SetUniform4f(const std::string &location, float x, float y, float z, float w) const =0
virtual uint32_t GetHashCode() const =0
virtual void SetUniform3f(const std::string &location, float x, float y, float z) const =0
virtual void SetUniform3fv(const std::string &location, int count, float *value) const =0
void SetInitializationStatus(bool initialized)
virtual void SetUniformMatrix4fv(const std::string &location, float *data) const =0
virtual void SetUniform(const std::string &location, ShaderDataType type, void *value)
UNIFORMS.
virtual void SetUniform1i(const std::string &location, int value) const =0
const BufferLayout & GetLayout()
virtual void SetUniform3iv(const std::string &location, int count, int *value) const =0
static std::shared_ptr< Shader > CreateDefaultErrorNative()
static std::shared_ptr< Shader > CreateDefault()
virtual void SetUniform1f(const std::string &location, float value) const =0
virtual void SetUniformMatrix2fv(const std::string &location, float *data) const =0
static std::shared_ptr< Shader > Create(const std::string &vertexSource, const std::string &fragmentSouce)
virtual void SetUniform4i(const std::string &location, int x, int y, int z, int w) const =0
virtual void SetUniformMatrix3fv(const std::string &location, float *data) const =0
static std::shared_ptr< Shader > CreateDefaultError()
virtual void SetUniform1iv(const std::string &location, int count, int *value) const =0
void SetUniform4f(const std::string &location, glm::vec4 value) const
virtual void SetUniform2f(const std::string &location, float x, float y) const =0
void SetProjectionViewMatrix(const glm::mat4 viewProjMatrix)
virtual void SetUniform1fv(const std::string &location, int count, float *value) const =0
virtual BufferLayout ExtractReflectionData() const =0
void SetUniform3f(const std::string &location, glm::vec3 value) const
virtual unsigned int GetRendererID() const =0
virtual uint32_t GetID() const =0
virtual void SetUniform4fv(const std::string &location, int count, float *value) const =0
virtual void SetUniform2fv(const std::string &location, int count, float *value) const =0
virtual void SetUniform4iv(const std::string &location, int count, int *value) const =0
virtual void SetUniform2iv(const std::string &location, int count, int *value) const =0
void SetCameraPosition(const glm::vec3 cameraPosition) const
void UseDirLight(DirectionalLight *newDirLight)
static std::shared_ptr< Shader > CreateFromFiles(const std::string &vertexSrcPath, const std::string &fragSrcPath)
virtual void SetUniform3i(const std::string &location, int x, int y, int z) const =0
void UseLight(Light *newLightSetting, const std::string &lightName)
virtual void SetUniform2i(const std::string &location, int x, int y) const =0
void SetUniform2f(const std::string &location, glm::vec2 value) const
void SetModelMatrix(const glm::mat4 &modelMatrix)
static std::shared_ptr< Shader > CreateDefaultNative()
std::shared_ptr< Shader > ShaderPtr