68 lines
1.6 KiB
C++
68 lines
1.6 KiB
C++
#ifndef DrawBloomPass_h__
|
|
#define DrawBloomPass_h__
|
|
|
|
#include "IRenderer.h"
|
|
#include "DrawBloomPassState.h"
|
|
//#include "LightCullingPass.h" Finalpass om den skall skickas in
|
|
#include "FrameBuffer.h"
|
|
#include "ShaderProgram.h"
|
|
//#include "Util/UnorderedMapVec2.h"
|
|
#include "Texture.h"
|
|
|
|
class DrawBloomPass
|
|
{
|
|
public:
|
|
DrawBloomPass(IRenderer* renderer, ConfigFile* config);
|
|
~DrawBloomPass();
|
|
void InitializeTextures();
|
|
void InitializeFrameBuffers();
|
|
void InitializeShaderPrograms();
|
|
void InitializeBuffers();
|
|
void ClearBuffer();
|
|
|
|
void FillGaussianBuffer(FrameBuffer* fb);
|
|
|
|
void Draw(GLuint texture);
|
|
void ChangeQuality(int quality);
|
|
|
|
void OnWindowResize();
|
|
|
|
//Getters
|
|
//Return the blurred result of the texture that was sent into draw
|
|
GLuint GaussianTexture() const {
|
|
if (m_Quality == 0) {
|
|
return m_BlackTexture->m_Texture;
|
|
} else {
|
|
return m_FinalGaussianTexture;
|
|
}
|
|
}
|
|
|
|
|
|
private:
|
|
void GaussianLodPass(GLuint mipMap, GLuint texture);
|
|
void CombineGaussianBlur();
|
|
Texture* m_BlackTexture;
|
|
Model* m_ScreenQuad;
|
|
|
|
const IRenderer* m_Renderer;
|
|
ConfigFile* m_Config;
|
|
//const LightCullingPass* m_LightCullingPass
|
|
int m_Iterations;
|
|
int m_Quality = 0;
|
|
int m_BloomLod = 5;
|
|
|
|
GLuint m_GaussianTexture_horiz = 0;
|
|
GLuint m_GaussianTexture_vert = 0;
|
|
GLuint m_FinalGaussianTexture = 0;
|
|
|
|
FrameBuffer* m_GaussianFrameBuffer_horiz = nullptr;
|
|
FrameBuffer* m_GaussianFrameBuffer_vert = nullptr;
|
|
FrameBuffer m_GaussianCombineBuffer;
|
|
|
|
ShaderProgram* m_GaussianProgram_horiz;
|
|
ShaderProgram* m_GaussianProgram_vert;
|
|
ShaderProgram* m_GaussianCombineProgram;
|
|
|
|
};
|
|
|
|
#endif |