HyperEngine - экспериментальный игровой движок нового поколения с поддержкой как классического 3D, так и инновационного 4D рендеринга. Движок демонстрирует современные подходы к архитектуре программного обеспечения, следуя принципам SOLID и предоставляя высокопроизводительную платформу для создания уникальных игровых проектов.
- 🎨 3D Движок: Современный, оптимизированный OpenGL рендерер для классических 3D игр
- 🚀 4D Движок: Экспериментальная поддержка четырехмерного пространства с Vulkan
- ⚡ Vulkan Backend: Высокопроизводительный Vulkan рендерер с CUDA/OptiX интеграцией
- 🔄 Renderer Adapters: Автоматическое переключение между OpenGL и Vulkan backend
- 🎯 OptimalRenderer3D: 5-этапный алгоритм оптимального рендеринга
- Scene Representation Optimization с Gaussian Splatting
- Geometry and Primary Visibility через растеризацию
- Advanced Lighting Computation с селективной лучевой трассировкой
- Denoising and Refinement с AI-деноизингом
- Post-Processing and Output с нейронным апскейлингом
- 🔄 HybridRenderer3D: Гибридный подход (растеризация + ray tracing)
- 🌟 Ray Tracing: OptiX-powered лучевая трассировка
- 📈 AI Upscaling: DLSS/FSR интеграция для повышения разрешения
- 🔧 SOLID принципы: Следование принципам Single Responsibility, Open/Closed, Liskov Substitution, Interface Segregation, Dependency Inversion
- 🎮 Component System: Гибкая система GameObject-Component с жизненным циклом
- 🧮 Rich Math Library: Полная математическая библиотека (Vector3/4, Matrix4, Quaternion)
- 💻 UTF-8 Console: Поддержка Unicode, эмодзи и цветного вывода
- 📚 Comprehensive Documentation: Полная техническая документация с примерами
- 🎯 Intuitive API: Понятные интерфейсы для быстрого освоения
- 🔧 Modular Build: Сборка только необходимых модулей
- ⚡ Performance Focus: Оптимизация для высокой производительности
- 🎯 FPS: 60 FPS стабильно при 1080p
- 📦 Объекты: 100,000+ объектов с frustum culling
- ⏱️ Latency: <1ms время кадра для простых сцен
- 💾 Memory: <100MB памяти для базовых сцен
- 🔍 Frustum Culling: Отсечение невидимых объектов
- 📦 Batch Rendering: Группировка draw calls
- 🎮 GPU-driven Rendering: Минимизация CPU-GPU синхронизации
- 🎚️ Adaptive Quality: Динамическая настройка качества
- 💻 OS: Windows 10+ / Linux (Ubuntu 20.04+)
- 🔧 Compiler: Visual Studio 2019+ (Windows) / GCC 9+ / Clang 10+ (Linux)
- ⚙️ CMake: 3.16 или новее
- 🧠 Memory: 4 GB RAM
- 🎮 GPU: OpenGL 4.1+ / Vulkan 1.3+ (для advanced features)
- 🖥️ CPU: Intel i5-8400 / AMD Ryzen 5 2600 или лучше
- 🎮 GPU: NVIDIA GTX 1060 / AMD RX 580 или лучше (RTX для ray tracing)
- 🧠 Memory: 8 GB RAM
- 💾 Storage: 2 GB свободного места
# 1. Клонирование репозитория
git clone https://github.com/yourusername/hyperengine.git
cd hyperengine
# 2. Автоматическая сборка с vcpkg
.\build_with_vcpkg.bat
# 3. Запуск демо
.\build-vcpkg\Release\Engine3D_Demo.exe
# 1. Установка зависимостей
sudo apt update
sudo apt install build-essential cmake libglfw3-dev libglm-dev
# 2. Сборка
git clone https://github.com/yourusername/hyperengine.git
cd hyperengine
mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j$(nproc)
# 3. Запуск демо
./Engine3D_Demo
# Основные опции
-DBUILD_ENGINE_3D=ON # Сборка 3D движка
-DBUILD_VULKAN_RENDERER=ON # Сборка Vulkan рендерера
-DBUILD_WITH_CUDA=OFF # CUDA поддержка (опционально)
-DBUILD_WITH_OPTIX=ON # OptiX ray tracing (опционально)
-DBUILD_WITH_DLSS=OFF # DLSS upscaling (опционально)
-DBUILD_WITH_FSR=ON # FSR upscaling (опционально)
-DBUILD_EXAMPLES=ON # Сборка демо-приложений
# Пример полной сборки
cmake .. -DBUILD_ENGINE_3D=ON -DBUILD_VULKAN_RENDERER=ON -DBUILD_EXAMPLES=ON
После успешной сборки доступны следующие демо:
Демо | Описание | Технологии |
---|---|---|
Engine3D_Demo | 🎯 Основная демонстрация 3D движка | OpenGL, Component System |
OptimalRenderer_Demo | 🚀 Демо оптимального 5-этапного рендерера | Gaussian Splatting, AI Denoising |
VulkanRenderer_Demo | ⚡ Vulkan рендерер с ray tracing | Vulkan, OptiX, DLSS/FSR |
VulkanBasic_Demo | 🔧 Базовое Vulkan демо | Vulkan fundamentals |
UTF8Console_Demo | 💻 UTF-8 консоль с эмодзи | Unicode, Color output |
RendererAdapter_Demo | 🔄 Переключение между backend'ами | OpenGL ↔ Vulkan |
Клавиша | Действие | Контекст |
---|---|---|
WASD | Движение по XYZ осям | 3D навигация |
QE | Движение по W-оси | 4D навигация |
Space/Shift | Вверх/вниз | Вертикальное движение |
Mouse | Поворот камеры | Look around |
1-6 | Повороты в плоскостях | 4D ротации |
Tab | Переключение проекций | 4D → 3D |
F1 | Каркасный режим | Debug view |
F2 | Performance metrics | Профилирование |
R | Сброс камеры | Reset view |
ESC | Выход/освобождение мыши | Exit/Unlock cursor |
HyperEngine/
├── 📁 include/ # Заголовочные файлы
│ ├── Engine3D/ # API 3D движка
│ │ ├── Core/ # Основные компоненты (GameObject, Transform, Component)
│ │ ├── Math/ # Математическая библиотека (Vector3/4, Matrix4, Quaternion)
│ │ ├── Rendering/ # Система рендеринга (Renderer3D, Camera3D, Mesh3D)
│ │ ├── Physics/ # Физическая система (RigidBody3D, Collider3D)
│ │ ├── Input/ # Система ввода (Input3D, Controller3D)
│ │ ├── Vulkan/ # Vulkan компоненты (VulkanRenderer, HardwareDetector)
│ │ ├── CUDA/ # CUDA интеграция (FlashGSSplatter)
│ │ ├── OptiX/ # OptiX ray tracing (OptiXRayTracer, DenoiseModule)
│ │ └── Upscaling/ # AI upscaling (DLSS, FSR)
├── 📁 src3D/ # Реализация 3D движка
│ ├── Core/ # Основные компоненты
│ ├── Math/ # Математические операции
│ ├── Rendering/ # Рендеринг (включая OptimalRenderer3D, HybridRenderer3D)
│ ├── Physics/ # Физическая симуляция
│ └── Input/ # Обработка ввода
├── 📁 srcVulkan/ # Vulkan/CUDA/OptiX реализация
│ ├── Vulkan/ # Vulkan рендерер
│ ├── CUDA/ # CUDA интеграция
│ ├── OptiX/ # OptiX ray tracing
│ └── Upscaling/ # AI upscaling
├── 📁 examples/ # Демонстрационные приложения
├── 📁 docs/ # 📚 Техническая документация
│ ├── architecture/ # Архитектурные решения
│ ├── api/ # Справочная документация API
│ ├── guides/ # Руководства и примеры
│ └── images/ # Визуальные материалы
├── 📁 tests/ # Модульные и интеграционные тесты
├── 📁 shaders/ # GLSL/HLSL шейдеры
└── 📁 vcpkg/ # Менеджер зависимостей
#include <Engine3D/Math/Vector3.h>
#include <Engine3D/Math/Matrix4.h>
#include <Engine3D/Math/Quaternion.h>
using namespace Engine3D::Math;
Vector3 position(1.0f, 2.0f, 3.0f);
Matrix4 transform = Matrix4::translation(position);
Quaternion rotation = Quaternion::fromEulerAngles(0, 45, 0);
#include <Engine3D/Rendering/Renderer3D.h>
#include <Engine3D/Rendering/OptimalRenderer3D.h>
// Базовый рендерер
auto& renderer = Renderer3D::getInstance();
renderer.initialize(1920, 1080);
// Оптимальный рендерер с 5-этапным алгоритмом
auto optimalRenderer = std::make_unique<OptimalRenderer3D>();
optimalRenderer->initialize(1920, 1080, 2560, 1440); // render -> target resolution
#include <Engine3D/Core/GameObject3D.h>
#include <Engine3D/Core/Transform3D.h>
// Создание игрового объекта с компонентами
auto gameObject = GameObject3D::create("MyObject");
auto transform = gameObject->getComponent<Transform3D>();
auto meshRenderer = gameObject->addComponent<MeshRenderer3D>();
#include <Engine3D/Physics/Physics3D.h>
auto rigidBody = gameObject->addComponent<RigidBody3D>();
rigidBody->setMass(1.0f);
rigidBody->applyForce(Vector3(0, -9.81f, 0));
#include <Engine3D/Input/Input3D.h>
auto& input = Input3D::getInstance();
if (input.isKeyPressed(KeyCode::W)) {
camera->move(Vector3(0, 0, speed * deltaTime));
}
#include <Engine3D/Core/Console.h>
Console::initialize();
Console::setTitle("🚀 My Game Engine");
Console::info("✅ Движок инициализирован успешно!");
Console::warning("⚠️ Низкая производительность GPU");
Console::error("❌ Ошибка загрузки ресурса");
#include <Engine3D/Engine3D.h>
int main() {
using namespace Engine3D;
// Инициализация UTF-8 консоли
Core::Console::initialize();
Core::Console::info("🚀 Запуск HyperEngine...");
// Инициализация рендерера
auto& renderer = Rendering::Renderer3D::getInstance();
if (!renderer.initialize(1280, 720)) {
Core::Console::error("❌ Ошибка инициализации рендерера");
return -1;
}
// Создание камеры
auto cameraObj = Core::GameObject3D::create("Camera");
auto camera = cameraObj->addComponent<Rendering::Camera3D>();
camera->setPosition(Math::Vector3(0, 0, -5));
renderer.setMainCamera(camera);
// Создание вращающегося куба
auto cube = Core::GameObject3D::create("Cube");
auto meshRenderer = cube->addComponent<Core::MeshRenderer3D>();
auto mesh = Rendering::Mesh3D::createCube(1.0f);
meshRenderer->setMesh(mesh);
meshRenderer->setColor(Math::Vector3(0.8f, 0.3f, 0.2f));
// Игровой цикл
while (!renderer.shouldClose()) {
renderer.beginFrame();
// Вращение куба
float time = glfwGetTime();
cube->getComponent<Core::Transform3D>()->setRotation(
Math::Quaternion::fromEulerAngles(time * 50, time * 30, 0)
);
// Рендеринг
cube->render();
renderer.endFrame();
}
renderer.cleanup();
Core::Console::cleanup();
return 0;
}
// Создание физического объекта
auto physicsObject = Core::GameObject3D::create("PhysicsBox");
// Добавление компонентов
auto rigidBody = physicsObject->addComponent<Physics::RigidBody3D>();
rigidBody->setMass(1.0f);
rigidBody->setRestitution(0.7f); // Упругость
auto collider = physicsObject->addComponent<Physics::BoxCollider3D>();
collider->setSize(Math::Vector3(1, 1, 1));
// Применение импульса
rigidBody->applyImpulse(Math::Vector3(0, 10, 0));
// В игровом цикле
physicsWorld.update(deltaTime);
class FirstPersonController : public Engine3D::Core::Component {
public:
void update(float deltaTime) override {
auto& input = Input::Input3D::getInstance();
auto transform = getGameObject()->getComponent<Core::Transform3D>();
Math::Vector3 movement(0);
if (input.isKeyPressed(Input::KeyCode::W)) movement += transform->forward();
if (input.isKeyPressed(Input::KeyCode::S)) movement -= transform->forward();
if (input.isKeyPressed(Input::KeyCode::A)) movement -= transform->right();
if (input.isKeyPressed(Input::KeyCode::D)) movement += transform->right();
if (movement.magnitude() > 0) {
movement = movement.normalized() * moveSpeed * deltaTime;
transform->translate(movement);
}
}
private:
float moveSpeed = 5.0f;
};
- 🏗️ Архитектура системы - Детальное описание архитектуры, SOLID принципов и компонентной системы
- 📚 API Reference - Полная справочная документация по всем компонентам API
- 🎯 Руководство с примерами - Практические примеры использования и лучшие практики
- 🔧 Инструкции по сборке - Детальное руководство по сборке на разных платформах
- ⚡ Vulkan Architecture - Архитектура Vulkan рендерера
- 🧠 Optimal Rendering Algorithm - 5-этапный алгоритм оптимального рендеринга
- 🎮 Component System - Система GameObject-Component
- 🔄 Renderer Adapters - Адаптеры для переключения backend'ов
- 🤝 Руководство по участию - Как принять участие в разработке
- 📝 История изменений - Детальный лог всех изменений
- 🔗 Зависимости - Список и описание всех зависимостей
- 🐛 Отчеты об ошибках - Система трекинга ошибок
// 4D математика
Engine4D::Math::Vector4 position4D(1, 2, 3, 4);
Engine4D::Math::Matrix4 transform4D = Engine4D::Math::Matrix4::translation(position4D);
// 4D рендеринг с проекциями
auto tesseract = Engine4D::Core::GameObject4D::createPrimitive("Tesseract");
tesseract->transform->setPosition(Engine4D::Math::Vector4(0, 0, 0, 0));
// 4D навигация
auto controller = std::make_unique<Engine4D::Input::Controller4D>();
controller->setWMovement(true); // Движение по W-оси
- 🌟 Ray Tracing: OptiX-powered лучевая трассировка для реалистичного освещения
- 🎨 Gaussian Splatting: Продвинутая техника рендеринга для фотореалистичных сцен
- 🧠 AI Upscaling: DLSS/FSR интеграция для повышения производительности
- ⚡ CUDA Integration: GPU вычисления для ускорения рендеринга
- 🎮 VR/AR поддержка: Полная интеграция с VR/AR SDK
- 🌊 Продвинутая система частиц: Расширенные эффекты частиц с GPU симуляцией
- 🔊 3D позиционный звук: Система пространственного аудио
- 📱 Мобильные платформы: Портирование на Android/iOS
- 🎨 Визуальный редактор сцен: WYSIWYG редактор для создания сцен
- 🧠 Интегрированная система ИИ: AI для поведения NPC и процедурной генерации
- 🌐 Сетевая поддержка: Мультиплеер и синхронизация состояния
- 📊 Встроенный профайлер: Real-time профилирование производительности
- 🔥 Hardware Ray Tracing: Полная поддержка RTX/RDNA ray tracing
- 🌍 Процедурная генерация: Автоматическая генерация миров и контента
- 🎯 Production-ready 4D: Полная поддержка 4D игр для коммерческого использования
- 📈 Enterprise Version: Коммерческая версия с расширенными возможностями
Мы приветствуем вклад сообщества! Проект развивается благодаря участию разработчиков со всего мира.
- 🐛 Сообщайте об ошибках через GitHub Issues
- 💡 Предлагайте новые возможности в Discussions
- 📝 Улучшайте документацию через Pull Requests
- 🧪 Пишите тесты для новой функциональности
- ⭐ Ставьте звезды и делитесь проектом в социальных сетях
- 📋 Код: Следование SOLID принципам и C++17 стандартам
- 🧪 Тесты: Минимум 80% покрытия для нового кода
- 📚 Документация: Обязательное документирование публичного API
- 👀 Ревью: Все изменения проходят код-ревью
- 🎯 Performance: Профилирование критических путей
Проект распространяется под лицензией MIT. См. LICENSE для подробностей.
MIT License - Вы можете свободно использовать, изменять и распространять
этот код в коммерческих и некоммерческих проектах.
- GitHub: HyperEngine Repository
- Discussions: GitHub Discussions
- Issues: Bug Reports & Feature Requests
- Wiki: Project Wiki
- Discord: HyperEngine Community - Общение с разработчиками
- Reddit: r/HyperEngine - Обсуждения и новости
- Twitter: @HyperEngineGame - Последние обновления
- YouTube: HyperEngine Channel - Видео-туториалы и демо
- Email: hyperengine.dev@example.com
- Technical Support: support@hyperengine.dev
- Business Inquiries: business@hyperengine.dev
Особая благодарность сообществу разработчиков и вдохновителям:
- Khronos Group - За OpenGL и Vulkan стандарты
- NVIDIA - За OptiX SDK и DLSS технологии
- AMD - За FSR и открытые графические технологии
- GLM Library - За превосходную математическую библиотеку
- GLFW Project - За кроссплатформенную оконную систему
- Сообществу разработчиков игр - За идеи, отзывы и постоянную поддержку
Создано с ❤️ для сообщества разработчиков игр
HyperEngine - расширяем границы возможного в игровой разработке