Размытие SSAO
This commit is contained in:
parent
aa3bec67b7
commit
57ea83528c
27
src/main.cpp
27
src/main.cpp
@ -213,7 +213,7 @@ int main(void)
|
|||||||
GLuint attachments_ssao[] = { GL_COLOR_ATTACHMENT0 };
|
GLuint attachments_ssao[] = { GL_COLOR_ATTACHMENT0 };
|
||||||
FBO ssaoBuffer(attachments_ssao, sizeof(attachments_ssao) / sizeof(GLuint));
|
FBO ssaoBuffer(attachments_ssao, sizeof(attachments_ssao) / sizeof(GLuint));
|
||||||
// Создадим текстуры для буфера кадра
|
// Создадим текстуры для буфера кадра
|
||||||
Texture ssaoTexture(WINDOW_WIDTH, WINDOW_HEIGHT, GL_COLOR_ATTACHMENT0, 6, GL_RED, GL_RED);
|
Texture ssaoTexture_raw(WINDOW_WIDTH, WINDOW_HEIGHT, GL_COLOR_ATTACHMENT0, 0, GL_RED, GL_RED);
|
||||||
// Активируем базовый буфер кадра
|
// Активируем базовый буфер кадра
|
||||||
FBO::useDefault();
|
FBO::useDefault();
|
||||||
|
|
||||||
@ -260,6 +260,20 @@ int main(void)
|
|||||||
const char* ssaoShader_names[] = {"gPosition", "gNormal", "noise"};
|
const char* ssaoShader_names[] = {"gPosition", "gNormal", "noise"};
|
||||||
ssaoShader.bindTextures(ssaoShader_names, sizeof(ssaoShader_names)/sizeof(const char*));
|
ssaoShader.bindTextures(ssaoShader_names, sizeof(ssaoShader_names)/sizeof(const char*));
|
||||||
|
|
||||||
|
// Создадим буфер для размытия SSAO
|
||||||
|
FBO ssaoBlurBuffer(attachments_ssao, sizeof(attachments_ssao) / sizeof(GLuint));
|
||||||
|
// Создадим текстуры для буфера кадра
|
||||||
|
Texture ssaoTexture(WINDOW_WIDTH, WINDOW_HEIGHT, GL_COLOR_ATTACHMENT0, 6, GL_RED, GL_RED);
|
||||||
|
// Активируем базовый буфер кадра
|
||||||
|
FBO::useDefault();
|
||||||
|
|
||||||
|
// Шейдер для размытия SSAO
|
||||||
|
ShaderProgram ssaoBlurShader;
|
||||||
|
// Загрузим шейдер
|
||||||
|
ssaoBlurShader.load(GL_VERTEX_SHADER, "shaders/quad.vert");
|
||||||
|
ssaoBlurShader.load(GL_FRAGMENT_SHADER, "shaders/ssaoBlur.frag");
|
||||||
|
ssaoBlurShader.link();
|
||||||
|
|
||||||
// Модель прямоугольника
|
// Модель прямоугольника
|
||||||
Model rectangle;
|
Model rectangle;
|
||||||
|
|
||||||
@ -403,6 +417,17 @@ int main(void)
|
|||||||
// Рендерим прямоугольник
|
// Рендерим прямоугольник
|
||||||
quadModel.render();
|
quadModel.render();
|
||||||
|
|
||||||
|
// Активируем буфер размытия SSAO
|
||||||
|
ssaoBlurBuffer.use();
|
||||||
|
// Используем шейдер для размытия SSAO
|
||||||
|
ssaoBlurShader.use();
|
||||||
|
// Очистка буфера цвета
|
||||||
|
glClear(GL_COLOR_BUFFER_BIT);
|
||||||
|
// Подключаем текстуру сырого SSAO
|
||||||
|
ssaoTexture_raw.use();
|
||||||
|
// Рендерим прямоугольник
|
||||||
|
quadModel.render();
|
||||||
|
|
||||||
// Изменим размер вывода для тени
|
// Изменим размер вывода для тени
|
||||||
glViewport(0, 0, sunShadow_resolution, sunShadow_resolution);
|
glViewport(0, 0, sunShadow_resolution, sunShadow_resolution);
|
||||||
// Активируем буфер кадра для теней от солнца
|
// Активируем буфер кадра для теней от солнца
|
||||||
|
Loading…
x
Reference in New Issue
Block a user