-
Notifications
You must be signed in to change notification settings - Fork 0
Skislits/cornellbox
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Задание №15: Cornell Box * Автор: Кислицын Сергей Алексеевич, АД-2 --------------------------- * В программе реализовано: [+] Простейший вариант сцены (только освещение) [] Разбиение полигонов [] Использование текстур [] Наложение теней [] Устранение ступенчатости [] Использование прозрачных объектов --------------------------- # История выполнения работы https://github.com/Skislits/cornellbox/commits/master # Выбор библиотеки для управления окном FreeGLUT считается устаревшей библиотекой для управления окнами. SDL даёт большую свободу в части обработки событий # Настройка Visual Studio Добавляем соответствующие директории библиотек GLEW и SDL в Include Directories (для сигнатур функций), Librariy Directories (определение функций). Добавляем зависимости в Linker (opengl32.lib, glew32.lib, SDL2.lib, SDL2main.lib) (какие библиотеки использовать) и копируем glew32.dll, SDL2.dll в директорию проекта # Model-View-Control Model-View-Control дизайн означает разделение программы на 3 соответствующих части. - Model в нашем случае это сама сцена Cornell Box - Control отвечает за перемещение камеры - View производит рендер модели # Rendering Pipeline https://www.khronos.org/opengl/wiki/Rendering_Pipeline_Overview 1. Vertex Specification* https://www.khronos.org/opengl/wiki/Vertex_Specification Описываем структуру данных моделей и загружаем сами данные 2. Vertex Processing/Vertex Shader* Shader -- это программа, которая выполняется на GPU. Используется для определния параметров геометрических объектов или изображения, для наложения эффектов на изображение: сдвиг, отражение, преломление, затемнение, наложение текстур 3. Fragment Shader* # Camera Цель камеры трансформировать координаты модели в clip coordinates и поместить в clip space http://www.opengl-tutorial.org/beginners-tutorials/tutorial-6-keyboard-and-mouse/ # Model-View-Projection (MVP) matrix 1. Model matrix помещает модель на её место в сцене путём масштабирования, вращения и перемещения (порядок действий важен). Перемещение объектов по сцене осуществляется с помощью изменения model matrix. Координаты модели -> Мировые координаты 2. View matrix перемещает сцену. Позиция, на которую смотрит камера, помещается в центр clip space. Мировые координаты -> Координаты относительно камеры Для действий с матрицами использована OpenGL Mathematics Library (GLM). Эта библиотека состоит только из .h файлов, поэтому её необходимо добавить только в include directories. 3. Projection matrix добавляет эффект перспективы. Масштабирует сцену таким образом, чтобы перейти от координат камеры к координатам внутри Clip space. Координаты относительно камеры -> Clip coordinates http://www.opengl-tutorial.org/beginners-tutorials/tutorial-3-matrices/ # Меню для перемещения объектов ## Выбор библиотеки Немного посмотрев в интернете, остановился на библиотеке Dear ImGui, поскольку она простая и небольшая. То, что нужно для этого проекта =) Процесс подключения аналогичен SDL, GLEW (см. выше) # Сложности - Оставлять только минимально необходимую информацию из всего объёма: процесс рендеринга, линейная алгебра, перспектива, свет - Имплементация камеры: много работы с геометрией при перемещении камеры
About
The Cornell Box scene modelled with OpenGL, GLEW, GLM for 2nd year of Data Science in RANEPA
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published