TerraForge3D  2.3.1
3D Terrain And Landscape Generator
ComputeShader.h
1#pragma once
2
3#include <glm/glm.hpp>
4#include <unordered_map>
5#include <string>
6
8{
9public:
10 ComputeShader(std::string source);
11
13
14 void Bind();
15
16 void SetUniformf(std::string name, float value);
17 void SetUniform3f(std::string name, float *value);
18 void SetUniformi(std::string name, int value);
19 void SetUniformMat4(std::string name, glm::mat4 &value);
20 void SetVec3(std::string name, float a, float b, float c);
21
22 void Unbind();
23
24 void Dispatch(int x, int y, int z);
25 void SetMemoryBarrier();
26
27 inline int GetNativeShader()
28 {
29 return m_Shader;
30 }
31
32 int m_Shader, m_UniformId, m_LightPosUniformID, m_LightColUniformID, m_TimeUniformID;
33 std::unordered_map<std::string, uint32_t> uniformLocations;
34 int maxWorkGroupCount[3], maxWorkGroupSize[3], maxWorkGroupInvocations;
35};