Mountain  1.0.0
Simple C++ 2D Game Framework
compute_shader.hpp
1 #pragma once
2 
3 #include <Maths/math.hpp>
4 
5 #include "Mountain/core.hpp"
6 #include "Mountain/resource/shader_base.hpp"
7 
8 namespace Mountain
9 {
10  class ComputeShader : public ShaderBase
11  {
12  public:
14  MOUNTAIN_API static constexpr std::array FileExtensions
15  {
16  ".comp",
17  ".compute"
18  };
19 
20  using ShaderBase::ShaderBase;
21 
22  using ShaderBase::SetSourceData;
23 
27  MOUNTAIN_API bool_t SetSourceData(const Pointer<File>& shader) override;
28 
32  MOUNTAIN_API bool_t Load(const char_t* buffer, int64_t length);
33 
35  MOUNTAIN_API void Load() override;
36 
38  MOUNTAIN_API void Unload() override;
39 
41  MOUNTAIN_API void ResetSourceData() override;
42 
43  MOUNTAIN_API bool_t Reload(bool_t reloadInBackend) override;
44 
45  MOUNTAIN_API void Dispatch(uint32_t groupsX = 1, uint32_t groupsY = 1, uint32_t groupsZ = 1) const;
46 
47  private:
48  std::string m_Code;
49 
50  bool_t CheckCompileError(uint32_t id) const; // NOLINT(modernize-use-nodiscard)
51  };
52 }
MOUNTAIN_API void ResetSourceData() override
Unloads the compute shader.
static MOUNTAIN_API constexpr std::array FileExtensions
Allowed extensions for compute shaders.
MOUNTAIN_API void Load() override
Creates the compute shader in OpenGL.
MOUNTAIN_API bool_t SetSourceData(const Pointer< File > &shader) override
Loads a single compute shader file.
Custom Mountain smart pointer. Represents both a std::shared_ptr and a std::weak_ptr.
MOUNTAIN_API void Unload() override
Destroys the compute shader in OpenGL.
Contains all declarations of the Mountain Framework.
Definition: audio.hpp:22