Skip to content

3D игровой движок с экспериментальной функциональностью 4D

License

Notifications You must be signed in to change notification settings

TiGRoNdev/HyperEngine

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

HyperEngine - Современный 3D/4D игровой движок

C++17 CMake License: MIT Platform Version

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: Оптимизация для высокой производительности

📊 Производительность

Метрики производительности (GTX 1060)

  • 🎯 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 свободного места

🛠️ Быстрая установка

Windows (Рекомендуется vcpkg)

# 1. Клонирование репозитория
git clone https://github.com/yourusername/hyperengine.git
cd hyperengine

# 2. Автоматическая сборка с vcpkg
.\build_with_vcpkg.bat

# 3. Запуск демо
.\build-vcpkg\Release\Engine3D_Demo.exe

Linux (Ubuntu/Debian)

# 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

CMake опции сборки

# Основные опции
-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/                  # Менеджер зависимостей

Основные архитектурные компоненты

🧮 Математическая библиотека (Math)

#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);

🎨 Система рендеринга (Rendering)

#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

🎯 Система объектов (Core)

#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>();

⚡ Физическая система (Physics)

#include <Engine3D/Physics/Physics3D.h>

auto rigidBody = gameObject->addComponent<RigidBody3D>();
rigidBody->setMass(1.0f);
rigidBody->applyForce(Vector3(0, -9.81f, 0));

🎮 Система ввода (Input)

#include <Engine3D/Input/Input3D.h>

auto& input = Input3D::getInstance();
if (input.isKeyPressed(KeyCode::W)) {
    camera->move(Vector3(0, 0, speed * deltaTime));
}

💻 UTF-8 консоль (Console)

#include <Engine3D/Core/Console.h>

Console::initialize();
Console::setTitle("🚀 My Game Engine");
Console::info("✅ Движок инициализирован успешно!");
Console::warning("⚠️ Низкая производительность GPU");
Console::error("❌ Ошибка загрузки ресурса");

💡 Примеры использования

Создание простой 3D сцены

#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;
};

📚 Полная документация

📖 Основная документация

🚀 Специализированная документация

🔧 Для разработчиков

🌐 Экспериментальные возможности

4D Движок (Экспериментальный)

// 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-оси

Advanced Graphics Features

  • 🌟 Ray Tracing: OptiX-powered лучевая трассировка для реалистичного освещения
  • 🎨 Gaussian Splatting: Продвинутая техника рендеринга для фотореалистичных сцен
  • 🧠 AI Upscaling: DLSS/FSR интеграция для повышения производительности
  • ⚡ CUDA Integration: GPU вычисления для ускорения рендеринга

🔮 Дорожная карта

Версия 1.1 (Q1 2026)

  • 🎮 VR/AR поддержка: Полная интеграция с VR/AR SDK
  • 🌊 Продвинутая система частиц: Расширенные эффекты частиц с GPU симуляцией
  • 🔊 3D позиционный звук: Система пространственного аудио
  • 📱 Мобильные платформы: Портирование на Android/iOS

Версия 1.2 (Q2 2026)

  • 🎨 Визуальный редактор сцен: WYSIWYG редактор для создания сцен
  • 🧠 Интегрированная система ИИ: AI для поведения NPC и процедурной генерации
  • 🌐 Сетевая поддержка: Мультиплеер и синхронизация состояния
  • 📊 Встроенный профайлер: Real-time профилирование производительности

Версия 2.0 (Q4 2026)

  • 🔥 Hardware Ray Tracing: Полная поддержка RTX/RDNA ray tracing
  • 🌍 Процедурная генерация: Автоматическая генерация миров и контента
  • 🎯 Production-ready 4D: Полная поддержка 4D игр для коммерческого использования
  • 📈 Enterprise Version: Коммерческая версия с расширенными возможностями

🤝 Участие в разработке

Мы приветствуем вклад сообщества! Проект развивается благодаря участию разработчиков со всего мира.

Как помочь проекту

  1. 🐛 Сообщайте об ошибках через GitHub Issues
  2. 💡 Предлагайте новые возможности в Discussions
  3. 📝 Улучшайте документацию через Pull Requests
  4. 🧪 Пишите тесты для новой функциональности
  5. Ставьте звезды и делитесь проектом в социальных сетях

Стандарты разработки

  • 📋 Код: Следование SOLID принципам и C++17 стандартам
  • 🧪 Тесты: Минимум 80% покрытия для нового кода
  • 📚 Документация: Обязательное документирование публичного API
  • 👀 Ревью: Все изменения проходят код-ревью
  • 🎯 Performance: Профилирование критических путей

📄 Лицензия

Проект распространяется под лицензией MIT. См. LICENSE для подробностей.

MIT License - Вы можете свободно использовать, изменять и распространять 
этот код в коммерческих и некоммерческих проектах.

📞 Поддержка и контакты

🌐 Официальные ресурсы

💬 Сообщество

📧 Прямая связь

📊 Статистика проекта

Contributors Forks Stars Issues Pull Requests

🙏 Благодарности

Особая благодарность сообществу разработчиков и вдохновителям:

  • Khronos Group - За OpenGL и Vulkan стандарты
  • NVIDIA - За OptiX SDK и DLSS технологии
  • AMD - За FSR и открытые графические технологии
  • GLM Library - За превосходную математическую библиотеку
  • GLFW Project - За кроссплатформенную оконную систему
  • Сообществу разработчиков игр - За идеи, отзывы и постоянную поддержку

Создано с ❤️ для сообщества разработчиков игр

HyperEngine - расширяем границы возможного в игровой разработке

⬆️ Наверх | 📚 Документация | 🚀 Быстрый старт | 🎮 Демо

Made with C++ Powered by Vulkan Enhanced with AI

About

3D игровой движок с экспериментальной функциональностью 4D

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published