Плоскость для теней
This commit is contained in:
parent
8160e6bb34
commit
4b75335480
39
src/main.cpp
39
src/main.cpp
|
@ -209,6 +209,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;
|
||||
// Загрузка и компиляция шейдеров
|
||||
|
@ -235,6 +270,7 @@ int main(void)
|
|||
|
||||
// Тут производится рендер
|
||||
scene.render(gShader, material_data);
|
||||
rectangle.render(gShader, material_data);
|
||||
|
||||
// Изменим размер вывода для тени
|
||||
glViewport(0, 0, sunShadow_resolution, sunShadow_resolution);
|
||||
|
@ -246,6 +282,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);
|
||||
|
@ -260,6 +297,8 @@ int main(void)
|
|||
gNormal.use();
|
||||
gDiffuseP.use();
|
||||
gAmbientSpecular.use();
|
||||
// Подключаем текстуры теней
|
||||
sunShadowDepth.use();
|
||||
// Рендерим прямоугольник с расчетом освещения
|
||||
quadModel.render();
|
||||
|
||||
|
|
Loading…
Reference in New Issue