#ifndef PARTICLE_COMPUTE_SHADER #define PARTICLE_COMPUTE_SHADER #include #include #include #include #include /* OpenGL */ #include "glad/glad.h" #include class ComputeShader { private: std::string m_shader_filename{}; std::string m_shader_source{}; GLuint m_program = 0; GLuint m_shader = 0; public: static void wait(); ComputeShader() = default; ComputeShader(std::string &shader_filename); ~ComputeShader(); GLuint get_program() const; bool load(std::string shader_filename); bool compile(); void activate(); void deactivate(); void execute(size_t x, size_t group_size_x); void execute(size_t x, size_t y, size_t group_size_x, size_t group_size_y); bool release(); bool set_uniform(char const * name, float value); bool set_uniform(char const * name, int value); bool set_uniform(char const * name, size_t value); }; #endif // PARTICLE_COMPUTE_SHADER