diff --git a/src/main.cpp b/src/main.cpp index 4d6eb8d..e382709 100755 --- a/src/main.cpp +++ b/src/main.cpp @@ -115,15 +115,17 @@ int main(void) glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); // Использование уменьшенных версий mipmap - // Создадим буфер кадра с данными о используемых привязках - GLuint attachments[] = { GL_COLOR_ATTACHMENT0, GL_COLOR_ATTACHMENT1 }; - FBO fbo(attachments, sizeof(attachments) / sizeof(GLuint)); + // Создадим G-буфер с данными о используемых привязках + GLuint attachments[] = { GL_COLOR_ATTACHMENT0, GL_COLOR_ATTACHMENT1, GL_COLOR_ATTACHMENT2, GL_COLOR_ATTACHMENT3 }; + FBO gbuffer(attachments, sizeof(attachments) / sizeof(GLuint)); // Создадим текстуры для буфера кадра - Texture colors(WINDOW_WIDTH, WINDOW_HEIGHT, GL_COLOR_ATTACHMENT0); - Texture normals(WINDOW_WIDTH, WINDOW_HEIGHT, GL_COLOR_ATTACHMENT1, 0, GL_RGBA16F); + Texture gPosition(WINDOW_WIDTH, WINDOW_HEIGHT, GL_COLOR_ATTACHMENT0, 0, GL_RGB16F, GL_RGB); // Позиция вершины + 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); - fbo.assignRenderBuffer(rbo.getHandler()); + RBO grbo(WINDOW_WIDTH, WINDOW_HEIGHT); + gbuffer.assignRenderBuffer(grbo.getHandler()); // Активируем базовый буфер кадра FBO::useDefault(); @@ -152,8 +154,8 @@ int main(void) // Загрузка данных о камере cameraUB.loadSub(&Camera::current().getData(), sizeof(CameraData)); - // Активируем буфер кадра - fbo.use(); + // Активируем G-кадра + gbuffer.use(); // Используем шейдер с освещением gShader.use(); // Очистка буфера цвета и глубины @@ -169,7 +171,7 @@ int main(void) // Очистка буфера цвета и глубины glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Подключаем текстуру цветов - colors.use(); + gDiffuseP.use(); // Рендерим прямоугольник quadModel.render();