Размытие SSAO
This commit is contained in:
		
							parent
							
								
									c5d1a83528
								
							
						
					
					
						commit
						6f4d314da4
					
				
							
								
								
									
										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