README.md 5.12 KB
Newer Older
Alex44098's avatar
Alex44098 committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# Выпускная квалификационная работа "Создание игрового графического движка"
Государственный университет "Дубна". Образовательное напрвление 09.03.04 Программная инженерия

Автор: Голубев Алексей Николаевич, группа 4252

Руководитель: ст. преп. Самойлов Юрий Евгеньевич

## Краткое описание проекта
Данный проект является частью выпускной квалификационной работы "Создание игрового графического движка".

Проект представляет собой графический игровой движок, использущий другую библиотеку **GECS**, созданную в рамках выпускной квалификационной работы.

Данный движок производит рендеринг трёхмерных сцен формата **glTF 2.0** в реальном времени.

## Технологический стек проекта
- **Язык программирования:** C++.
- **Графический API:** Vulkan 1.3.
- **Язык программирования шейдеров:** GLSL.
- **Формат описания трёхмерных сцен:** glTF 2.0.
- **Сторонние библиотеки:** GECS, SDL2, VkBootstrap, Volk, VMA, glm, tinyglTF, nlohmann/json.
- **Система контроля версий:** Git.
- **Отладка рендеринга:** RenderDoc.

## Структура репозитория
```text
├── 3rdparty/                  # Папка со сторонними библиотеками

├── GEN/
│   ├── include                # Папка с заголовочными файлами
│   └── src                    # Папка с исходным кодом

├── .gitignore                 # Файл для игнорирования ненужных файлов
├── GEN.sln                    # Файл решения Visual Studio
├── GEN.vcxproj                # Файл проекта Visual Studio
├── LICENSE                    # Описание лицензии
└── README.md                  # Описание проекта
```
38
39


Alex44098's avatar
Alex44098 committed
40
41
42
43
## Установка
1. Скачайте zip-архив или склонируйте репозиторий.
```bash
   git clone https://vcs.uni-dubna.ru/GAN.21/2025-golubev-alexey-gen.git
44
```
Alex44098's avatar
Alex44098 committed
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
2. Расположите в папку **3rdparty** собранные файлы библиотек:
   - GECS/bin/x64/release/GECS.dll
   - GECS/lib/x64/release/GECS.lib
   - SDL2/bin/SDL2.dll
   - SDL2/lib/SDL2.lib
   - Vulkan/1.3.290.0/Lib/release/vulkan-1.lib
   - Vulkan/1.3.290.0/Lib/release/vk-bootstrap.lib

3. Откройте файл проекта **GEN.sln** при помощи программы Microsoft Visual Studio.
4. Нажмите "Сборка -> Собрать решение" или сочетание Ctrl+Shift+B
5. Скомпилируйте шейдеры из папки **GEN/src/Shaders/** при помощи компилятора **glslc.exe** из **Vulkan SDK**.
## Использование
В одной папке с исполняемым приложением необходимо расположить папку **shaders/** все скомпилированные шейдеры.

Также необходимо создать файл с описанием сцены **default.json**, в котором должно содержаться:
- Путь до трёхмерной сцене в формате **glTF 2.0**
- Путь до небесной текстуры (в папке должно быть 6 текстур с именами: **back, bottom, front, left, right, top** в формате .jpg)
- Настройки окружающего цвета и тумана
- Позиция камеры

Пример:
```json
{
    "scene": "scenes/scene1/scene.gltf",
    "skybox": "skybox",

    "ambient": 0.1,
    "ambient_color": [0, 0, 0],
    "fog": 0.05,
    "fog_color": [193, 180, 180],

    "camera": [0, 0, 0]
}
78
79
```

Alex44098's avatar
Alex44098 committed
80
81
## Ссылки на сторонние библиотеки
**GECS:** https://vcs.uni-dubna.ru/GAN.21/vkr-2025-golubev-alexey-gecs
82

Alex44098's avatar
Alex44098 committed
83
**VkBootstrap:** https://github.com/charles-lunarg/vk-bootstrap
84

Alex44098's avatar
Alex44098 committed
85
**Volk:** https://github.com/zeux/volk
86

Alex44098's avatar
Alex44098 committed
87
**VMA:** https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator
88

Alex44098's avatar
Alex44098 committed
89
**SDL:** https://github.com/libsdl-org/SDL
90

Alex44098's avatar
Alex44098 committed
91
**tinyglTF:** https://github.com/syoyo/tinygltf
92

Alex44098's avatar
Alex44098 committed
93
**glm:** https://github.com/g-truc/glm
94

Alex44098's avatar
Alex44098 committed
95
**nlohmann/json:** https://github.com/nlohmann/json
96

Alex44098's avatar
Alex44098 committed
97
98
## Лицензия
Проект распространяется под лицензией MIT License. В проекте не содержится конфиденциальной информации, нарушающей права третьих лиц.
99

Alex44098's avatar
Alex44098 committed
100
101
## Контакты
ФИО: Голубев Алексей Николаевич
102

Alex44098's avatar
Alex44098 committed
103
Email: agolubev617@gmail.com
104

Alex44098's avatar
Alex44098 committed
105
Telegram: @ferumo