Размытие 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