Работа велась в 2021.
SandboxEngine — 3D-рендеринг песочница, цель которой — построить архитектурно расширяемую основу рендер-/движкового слоя.
Основной проект песочницы - рендеринг pipeline с поддержкой PBR и Image-Based Lighting (IBL).
- Реализовать корректный HDRI to IBL pipeline:
- panorama to cubemap
- cubemap to irradiance map
- cubemap to prefiltered specular map (roughness через mip levels)
- Использовать compute shaders
EventSystem отвечает за единый поток событий.
Подсистема:
- принимает события из платформенного слоя (окно, ввод),
- преобразует их в типизированные Event,
- распространяет события по системе.
OpenGL Renderer слой представляет собой низкоуровневую реализацию рендеринга, изолированную от остальной части движка.
Он инкапсулирует прямые вызовы OpenGL и предоставляет единый API для работы с GPU-ресурсами.
Цель слоя:
- Скрыть OpenGL API
- Обеспечить управление GPU-ресурсами
- Разделить абстракции рендера и конкретную графическую реализацию
- Подготовить основу для возможной поддержки других API (Vulkan / DirectX)
EnvironmentBaker — подсистема, отвечающая за предварительную генерацию окружения (Image-Based Lighting) из HDRI-панорам.
Подсистема инкапсулирует весь GPU-пайплайн, необходимый для получения IBL-текстур, и изолирует его от остального рендер-кода.
Цель:
- Преобразование HDR panorama в cubemap
- Генерация diffuse irradiance map
- Генерация prefiltered specular cubemap
- Подготовка окружения для PBR-рендеринга
Pipeline
- Panorama to Cubemap (преобразование эквидистантной HDRI-панорамы в cubemap текстуру)
- Cubemap to Irradiance Map (интеграция освещения для диффузной составляющей)
- Cubemap to Prefiltered Environment Map (генерация specular отражений с учётом roughness через mip-уровни)
Все этапы выполняются с использованием compute shaders.
GeometryTriangulation — подсистема импорта геометрии, отвечающая за
загрузку и подготовку мешей из внешних 3D-форматов (OBJ).
Подсистема изолирует работу с Assimp и преобразует входные данные в формат, пригодный для использования в рендерере.
Цель:
- Загрузка 3D-моделей (glTF / OBJ / FBX и др.)
- Триангуляция геометрии
- Извлечение вершинных данных (позиции, нормали, UV, тангенты)
- Загрузка связанных текстур материалов
- Формирование runtime-мешей
PathResolver — утилита для единообразной работы с путями к ассетам.
Она изолирует остальной код от абсолютных путей и структуры файловой системы, позволяя использовать только относительные пути внутри движка.
Цель:
- Установка базовой директории ассетов (content/)
- Разрешение относительных путей в абсолютные
- Упрощение переноса проекта между машинами и конфигурациями сборки
- C++20
- OpenGL 4.5+
- GLFW
- GLAD
- Assimp
- stb_image / stb_image_write
- glm
- Visual Studio 2022
git clone --recurse-submodules <repo>
cmake -S . -B build -G "Visual Studio 17 2022" -A x64- Убрать сильную привязанность к OpenGL
- Добавить Vulkan API
- Улучшить Event System (EventDispather)
- Resource Cache
- Camera Control

