Стандартные параметры SSAO
This commit is contained in:
		
							parent
							
								
									aa4cf6fbcd
								
							
						
					
					
						commit
						e8857a6f4e
					
				
							
								
								
									
										25
									
								
								src/main.cpp
									
									
									
									
									
								
							
							
						
						
									
										25
									
								
								src/main.cpp
									
									
									
									
									
								
							| @ -4,6 +4,7 @@ | |||||||
| #include <GLM/glm.hpp> | #include <GLM/glm.hpp> | ||||||
| 
 | 
 | ||||||
| #include <iostream> | #include <iostream> | ||||||
|  | #include <random> | ||||||
| 
 | 
 | ||||||
| #include "Scene.h" | #include "Scene.h" | ||||||
| #include "Shader.h" | #include "Shader.h" | ||||||
| @ -216,6 +217,30 @@ int main(void) | |||||||
|     // Активируем базовый буфер кадра
 |     // Активируем базовый буфер кадра
 | ||||||
|     FBO::useDefault(); |     FBO::useDefault(); | ||||||
| 
 | 
 | ||||||
|  |     // Стандартные параметры SSAO
 | ||||||
|  |     SSAO_data ssao_data; | ||||||
|  |     // Расчет масштабирования текстуры шума
 | ||||||
|  |     ssao_data.scale = {WINDOW_WIDTH/4,WINDOW_HEIGHT/4}; | ||||||
|  |     // Генерируем случайные векторы
 | ||||||
|  |     std::uniform_real_distribution<GLfloat> randomFloats(0.0, 1.0); // Генерирует случайные вещественные числа в заданном диапазоне
 | ||||||
|  |     std::default_random_engine generator; | ||||||
|  |     glm::vec3 sample; // Выборка
 | ||||||
|  |     for (int i = 0; i < ssao_data.size; i++) | ||||||
|  |     { | ||||||
|  |         sample = {  randomFloats(generator) * 2.0 - 1.0 | ||||||
|  |                   , randomFloats(generator) * 2.0 - 1.0 | ||||||
|  |                   , randomFloats(generator) | ||||||
|  |                  }; | ||||||
|  |         sample = glm::normalize(sample); | ||||||
|  |         sample *= randomFloats(generator); | ||||||
|  |          | ||||||
|  |         // Отмасштабируем выборку
 | ||||||
|  |         sample *= 0.1 + 0.9 * (i / (float)ssao_data.size) * (i / (float)ssao_data.size); | ||||||
|  |         ssao_data.samples[i] = sample; | ||||||
|  |     } | ||||||
|  |     // Загрузка данных в uniform-буфер
 | ||||||
|  |     UBO ssaoUB(&ssao_data, sizeof(SSAO_data), 4); | ||||||
|  | 
 | ||||||
|     // Модель прямоугольника
 |     // Модель прямоугольника
 | ||||||
|     Model rectangle;  |     Model rectangle;  | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user