Плоскость для теней
This commit is contained in:
		
							parent
							
								
									d5cf277995
								
							
						
					
					
						commit
						07e5862f6e
					
				
							
								
								
									
										39
									
								
								src/main.cpp
									
									
									
									
									
								
							
							
						
						
									
										39
									
								
								src/main.cpp
									
									
									
									
									
								
							| @ -174,6 +174,41 @@ int main(void) | ||||
|     sunShadowShader.load(GL_VERTEX_SHADER, "shaders/sun_shadow.vert"); | ||||
|     sunShadowShader.link(); | ||||
|      | ||||
|     // Модель прямоугольника
 | ||||
|     Model rectangle;  | ||||
| 
 | ||||
|     // Вершины прямоугольника
 | ||||
|     glm::vec3 rectangle_verticies[] = {  {-0.5f, 0.0f, -0.5f} | ||||
|                                        , { 0.5f, 0.0f, -0.5f} | ||||
|                                        , { 0.5f, 0.0f,  0.5f} | ||||
|                                        , {-0.5f, 0.0f,  0.5f} | ||||
|                                     }; | ||||
|     // Загрузка вершин модели
 | ||||
|     rectangle.load_verteces(rectangle_verticies, sizeof(rectangle_verticies)/sizeof(glm::vec3)); | ||||
| 
 | ||||
|     // индексы вершин
 | ||||
|     GLuint rectangle_indices[] = {0, 1, 2, 2, 3, 0};  | ||||
|     // Загрузка индексов модели
 | ||||
|     rectangle.load_indices(rectangle_indices, sizeof(rectangle_indices)/sizeof(GLuint)); | ||||
| 
 | ||||
|     // Нормали
 | ||||
|     glm::vec3 rectangle_normals[] = {  {0.0f, 1.0f, 0.0f} | ||||
|                                      , {0.0f, 1.0f, 0.0f} | ||||
|                                      , {0.0f, 1.0f, 0.0f} | ||||
|                                      , {0.0f, 1.0f, 0.0f} | ||||
|                                     }; | ||||
|     // Загрузка нормалей модели
 | ||||
|     rectangle.load_normals(rectangle_normals, sizeof(rectangle_normals)/sizeof(glm::vec3)); | ||||
| 
 | ||||
|     // Зададим горизонтальное положение перед камерой
 | ||||
|     rectangle.e_position().y = -1; | ||||
|     rectangle.e_position().z = 2; | ||||
|     rectangle.e_scale() = glm::vec3(4); | ||||
| 
 | ||||
|     // Параметры материала
 | ||||
|     rectangle.material.ka = {0.4, 0.4, 0.4}; | ||||
|     rectangle.material.kd = {0.4, 0.4, 0.4}; | ||||
| 
 | ||||
|     // Шейдер для рисования отладочных лампочек
 | ||||
|     ShaderProgram bulbShader; | ||||
|     // Загрузка и компиляция шейдеров
 | ||||
| @ -200,6 +235,7 @@ int main(void) | ||||
| 
 | ||||
|         // Тут производится рендер
 | ||||
|         scene.render(gShader, material_data); | ||||
|         rectangle.render(gShader, material_data); | ||||
| 
 | ||||
|         // Изменим размер вывода для тени
 | ||||
|         glViewport(0, 0, sunShadow_resolution, sunShadow_resolution); | ||||
| @ -211,6 +247,7 @@ int main(void) | ||||
|         glClear(GL_DEPTH_BUFFER_BIT); | ||||
|         // Рендерим геометрию в буфер глубины
 | ||||
|         scene.render(sunShadowShader, material_data); | ||||
|         rectangle.render(sunShadowShader, material_data); | ||||
| 
 | ||||
|         // Изменим размер вывода для окна
 | ||||
|         glViewport(0, 0, WINDOW_WIDTH, WINDOW_HEIGHT); | ||||
| @ -225,6 +262,8 @@ int main(void) | ||||
|         gNormal.use(); | ||||
|         gDiffuseP.use(); | ||||
|         gAmbientSpecular.use(); | ||||
|         // Подключаем текстуры теней
 | ||||
|         sunShadowDepth.use(); | ||||
|         // Рендерим прямоугольник с расчетом освещения
 | ||||
|         quadModel.render(); | ||||
| 
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user