Flex Engine-это личный игровой двигатель, над которым я начал работать в начале 2017 года. Я использую его в качестве игровой площадки для изучения методов рендеринга и моделирования в реальном времени. Flex Engine не является коммерческим игровым двигателем и не предназначен для общественного использования.
Строительство гибкой
Смотрите Build.md
Примечательные функции
- Вулканский рендеринг бэкэнд (vulkanrenderer.cpp)
- Языковой компилятор/редактор и виртуальная машина (VirtualMachine.cpp)
- Условное перекомпиляция шейдера на основе контрольной системы (ShaderCompiler.cpp)
- Мониторинг модификации файлов для текстур, сетки, префабов, шейдеров, файлов конфигурации и т. Д. (resourceManager.cpp)
- Редактор сцены с сериализацией (basescene.cpp)
- Инструменты редактора (Transform Gizmo, редактор недвижимости, редактор ключей и т. Д.) (Editor.cpp)
- Основные инструменты захвата/проверки профилирования
- Поддержка Windows & Linux
- Рендеринг:
- Марширующие кубики генератор и рендерер
- Gerstner Wave Ocean рендерер
- Прямоугольные огни площади (только прямое диффузное и зеркальное)
- Физически основанная модель затенения
- Освещение на основе изображений
- Экранная окклюзия окружающей среды
- Стабильное каскадное картирование тени
- Временные анти-альцы
- Подписанное поле на расстоянии (SDF) генерация шрифтов и рендеринг
- Моделирование частиц на основе графического процессора
Процедурная местность, созданная на графическом процессоре
Gerstner Wave Simulation Ocean Simulation
Каскадное картирование тени
Две миллионов частиц смоделированы и полностью отображаются на графическом процессоре
Профилировщик наложений, показывающего разбивку, время процессора одного кадра
Некоторые Windows
Экранная окклюзия окружающей среды (SSAO)
Gbuffer (верхний левый к нижнему праву): положение, альбедо, нормальное, конечное изображение, глубина, металлик, AO, шероховатость
Посмотреть в редакторе


Смотрите больше скриншотов здесь
Зависимости
Flex Engine использует следующие библиотеки с открытым исходным кодом:
- Пуля - обнаружение столкновений и моделирование твердого тела
- Freetype - загрузка шрифта
- GLFW - создание окна, обработка ввода
- GLM - Математические операции
- Imgui - пользовательский интерфейс
- Openal - Аудио загрузка и воспроизведение
- STB - Загрузка изображения
- CGLTF - нагрузка сетки
- volk - мета -загрузка вулкан
Лицензия
Flex Engine лицензирован по лицензии MIT. Смотрите License.md для деталей.
Благодарности
Огромное благодарность вам должно быть отдано следующим людям и организациям за их невероятно полезные ресурсы:
- Балдур Карлссон из github.com/baldurk/renderdoc
- Александр переоорд из Vulkan-tutorial.com
- Саша Виллемс из github.com/saschawillems/vulkan
- Джои де Врис из LearnoPengl.com
- Эндрю Максиму для пистолета модели и текстур artisaverb.info/pbt.html
- Freepbr.com для высококачественных текстур PBR
- Все авторы и участники библиотек с открытым исходным кодом, упомянутые выше
Блог
Оставайся (несколько) в курсе этого проекта в моем блоге на ajweeks.com/blog