Реализация G-буфера
This commit is contained in:
parent
553830964d
commit
946cd5d082
22
src/main.cpp
22
src/main.cpp
|
@ -115,15 +115,17 @@ int main(void)
|
||||||
|
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); // Использование уменьшенных версий mipmap
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); // Использование уменьшенных версий mipmap
|
||||||
|
|
||||||
// Создадим буфер кадра с данными о используемых привязках
|
// Создадим G-буфер с данными о используемых привязках
|
||||||
GLuint attachments[] = { GL_COLOR_ATTACHMENT0, GL_COLOR_ATTACHMENT1 };
|
GLuint attachments[] = { GL_COLOR_ATTACHMENT0, GL_COLOR_ATTACHMENT1, GL_COLOR_ATTACHMENT2, GL_COLOR_ATTACHMENT3 };
|
||||||
FBO fbo(attachments, sizeof(attachments) / sizeof(GLuint));
|
FBO gbuffer(attachments, sizeof(attachments) / sizeof(GLuint));
|
||||||
// Создадим текстуры для буфера кадра
|
// Создадим текстуры для буфера кадра
|
||||||
Texture colors(WINDOW_WIDTH, WINDOW_HEIGHT, GL_COLOR_ATTACHMENT0);
|
Texture gPosition(WINDOW_WIDTH, WINDOW_HEIGHT, GL_COLOR_ATTACHMENT0, 0, GL_RGB16F, GL_RGB); // Позиция вершины
|
||||||
Texture normals(WINDOW_WIDTH, WINDOW_HEIGHT, GL_COLOR_ATTACHMENT1, 0, GL_RGBA16F);
|
Texture gNormal(WINDOW_WIDTH, WINDOW_HEIGHT, GL_COLOR_ATTACHMENT1, 1, GL_RGB16F, GL_RGB); // Нормали
|
||||||
|
Texture gDiffuseP(WINDOW_WIDTH, WINDOW_HEIGHT, GL_COLOR_ATTACHMENT2, 2, GL_RGBA16F); // Диффузная составляющая и коэф. глянцевости
|
||||||
|
Texture gAmbientSpecular(WINDOW_WIDTH, WINDOW_HEIGHT, GL_COLOR_ATTACHMENT3, 3); // Фоновая составляющая и один канал зеркальной
|
||||||
// Создадим буфер рендера под буфер глубины и привяжем его
|
// Создадим буфер рендера под буфер глубины и привяжем его
|
||||||
RBO rbo(WINDOW_WIDTH, WINDOW_HEIGHT);
|
RBO grbo(WINDOW_WIDTH, WINDOW_HEIGHT);
|
||||||
fbo.assignRenderBuffer(rbo.getHandler());
|
gbuffer.assignRenderBuffer(grbo.getHandler());
|
||||||
// Активируем базовый буфер кадра
|
// Активируем базовый буфер кадра
|
||||||
FBO::useDefault();
|
FBO::useDefault();
|
||||||
|
|
||||||
|
@ -152,8 +154,8 @@ int main(void)
|
||||||
// Загрузка данных о камере
|
// Загрузка данных о камере
|
||||||
cameraUB.loadSub(&Camera::current().getData(), sizeof(CameraData));
|
cameraUB.loadSub(&Camera::current().getData(), sizeof(CameraData));
|
||||||
|
|
||||||
// Активируем буфер кадра
|
// Активируем G-кадра
|
||||||
fbo.use();
|
gbuffer.use();
|
||||||
// Используем шейдер с освещением
|
// Используем шейдер с освещением
|
||||||
gShader.use();
|
gShader.use();
|
||||||
// Очистка буфера цвета и глубины
|
// Очистка буфера цвета и глубины
|
||||||
|
@ -169,7 +171,7 @@ int main(void)
|
||||||
// Очистка буфера цвета и глубины
|
// Очистка буфера цвета и глубины
|
||||||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||||
// Подключаем текстуру цветов
|
// Подключаем текстуру цветов
|
||||||
colors.use();
|
gDiffuseP.use();
|
||||||
// Рендерим прямоугольник
|
// Рендерим прямоугольник
|
||||||
quadModel.render();
|
quadModel.render();
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue