-
Notifications
You must be signed in to change notification settings - Fork 6
/
pbr_manager.h
51 lines (40 loc) · 1.65 KB
/
pbr_manager.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#ifndef pbr_manager_hpp
#define pbr_manager_hpp
#include <fstream>
#include <string>
#include <sstream>
#include <iostream>
#include <GL/glew.h>
#include <glm/glm.hpp>
#include "../shader/shader.h"
#include "../model/model.h"
class PbrManager
{
public:
PbrManager();
~PbrManager();
int m_cubemapFaceSize;
int m_irradianceSize;
int m_prefilterSize;
int m_brdfLutSize;
Texture m_environmentTexture;
unsigned int captureFBO, captureRBO;
unsigned int envCubemap;
unsigned int irradianceMap;
unsigned int prefilterMap;
unsigned int brdfLUTTexture;
glm::mat4 captureProjection = glm::perspective(glm::radians(90.0f), 1.0f, 0.1f, 10.0f);
glm::mat4 captureViews[6] = {
glm::lookAt(glm::vec3(0.0f, 0.0f, 0.0f), glm::vec3(1.0f, 0.0f, 0.0f), glm::vec3(0.0f, -1.0f, 0.0f)),
glm::lookAt(glm::vec3(0.0f, 0.0f, 0.0f), glm::vec3(-1.0f, 0.0f, 0.0f), glm::vec3(0.0f, -1.0f, 0.0f)),
glm::lookAt(glm::vec3(0.0f, 0.0f, 0.0f), glm::vec3(0.0f, 1.0f, 0.0f), glm::vec3(0.0f, 0.0f, 1.0f)),
glm::lookAt(glm::vec3(0.0f, 0.0f, 0.0f), glm::vec3(0.0f, -1.0f, 0.0f), glm::vec3(0.0f, 0.0f, -1.0f)),
glm::lookAt(glm::vec3(0.0f, 0.0f, 0.0f), glm::vec3(0.0f, 0.0f, 1.0f), glm::vec3(0.0f, -1.0f, 0.0f)),
glm::lookAt(glm::vec3(0.0f, 0.0f, 0.0f), glm::vec3(0.0f, 0.0f, -1.0f), glm::vec3(0.0f, -1.0f, 0.0f)),
};
void setupCubemap(Model *cube, Shader &hdrToCubemapShader);
void setupIrradianceMap(Model *cube, Shader &irradianceShader);
void setupPrefilterMap(Model *cube, Shader &prefilterShader);
void setupBrdfLUTTexture(unsigned int quadVAO, Shader &brdfShader);
};
#endif /* pbr_manager_hpp */