#pragma once #include "Types.hpp" #include "Matrix4x4.hpp" #include "Vector2.hpp" #include "Vector3.hpp" #include "Vector4.hpp" namespace TSE { class IShader { public: virtual void Bind() const = 0; virtual void Unbind() const = 0; virtual void SetUniform(const char* name, int value) = 0; virtual void SetUniform(const char* name, const int* value, int count) = 0; virtual void SetUniform(const char* name, const Matrix4x4* value) = 0; virtual void SetUniform(const char* name, float value) = 0; virtual void SetUniform(const char* name, const float* value, int count) = 0; virtual void SetUniform(const char* name, const Vector2* value) = 0; virtual void SetUniform(const char* name, const Vector3* value) = 0; virtual void SetUniform(const char* name, const Vector4* value) = 0; virtual ~IShader() = default; }; } // namespace TSE