Skip to content

DanyaDel/NLSDFE

Repository files navigation

🌀 SDF Engine (NLSDFE) - v1.1

SDF Engine — это легковесный 3D-редактор, использующий магию Signed Distance Fields (SDF). В отличие от обычных движков, здесь нет полигонов и треугольников. Все объекты — это чистая математика, просчитываемая на видеокарте в реальном времени.

Graphics API Language License


🚀 Основные фишки

  • Vulkan Compute Renderer: Вся отрисовка происходит в Compute-шейдерах. Это позволяет создавать идеально гладкие формы и сложные математические фракталы.
  • CSG Operations: Поддержка логических операций над объектами:
    • Union (Объединение)
    • Subtraction (Вычитание — "дырки" в объектах)
    • Intersection (Пересечение)
    • Smooth Blending (Плавное «слипание» объектов в стиле ртути).
  • Blender-style Workflow:
    • Навигация WASD + Мышь.
    • Профессиональные Гизмо (Move, Rotate, Scale).
    • Горячие клавиши для продуктивности.
  • Viewport Shading: Четыре режима отображения:
    • W (Wireframe/Heatmap) — анализ производительности шейдера.
    • S (Solid) — быстрая работа с формами.
    • M (Material) — предварительный просмотр цветов.
    • R (Rendered) — финальная картинка с мягкими тенями и PBR-освещением.
  • Система уведомлений (Toasts): Интерактивные сообщения о копировании, вставке и ошибках.
  • Формат .NOS: Собственный бинарный формат сохранения сцен с поддержкой превью-скриншотов.

🛠 Технологии

  • Язык: C++17
  • Графика: Vulkan SDK 1.3+
  • Интерфейс: Dear ImGui
  • Окно/Ввод: GLFW3
  • Сборка: CMake

⌨️ Управление (Hotkeys)

Клавиша Действие
W / A / S / D Движение камеры
Shift (зажать) Ускорение камеры
1 / 2 / 3 Режимы Гизмо (Move / Rotate / Scale)
Ctrl + C / V Копировать / Вставить объект
Alt + D Быстрый дубликат
Ctrl + Z Отмена действия (Undo)
Delete Удалить выбранный объект
F5 Перезагрузить шейдеры "на лету"

⚙️ Как собрать проект

Требования:

  1. Установленный Vulkan SDK.
  2. Компилятор C++ (MSVC / Visual Studio 2022 рекомендуемо).
  3. CMake 3.10+.

Инструкция:

  1. Клонируй репозиторий:
    git clone https://github.com/твой_ник/NLSDFE.git
    cd NLSDFE
  2. Сгенерируй проект через CMake:
    cmake -S . -B build
  3. Скомпилируй шейдер (убедись, что glslc в PATH):
    glslc shaders/shader.comp -o build/Debug/shader.spv
  4. Собери исполняемый файл:
    cmake --build build --config Debug

🗺 План разработки NLSDFE (Roadmap)

🟦 Фаза 1: Архитектура и Чистка кода

Цель: превратить «макаронный» код в расширяемую систему.

  • Модульность: Разбить main.cpp на отдельные файлы: Renderer.cpp, Scene.cpp, Editor.cpp и Input.cpp.
  • Граф сцены (Scene Graph): Реализовать систему «Родитель-Ребенок» для группировки объектов.
  • Система именования: Возможность давать объектам понятные имена (например, «Голова игрока») в иерархии.
  • Менеджер ресурсов: Централизованная загрузка шейдеров и файлов сцены .nos.

🟧 Фаза 2: Продвинутый Рендеринг

Цель: выжать максимум визуала из Vulkan и математики SDF.

  • Многопоточное освещение: Поддержка до 8 динамических источников света (Point Lights).
  • Глобальное освещение (Lite): Примитивный расчет отраженного света для большего реализма.
  • Эффект Bloom: Мягкое свечение ярких материалов и ламп.
  • Оптимизация (Bounding Volumes): Пропуск расчетов SDF для объектов, которые находятся далеко от луча.
  • Система неба: Добавление процедурного неба или карт окружения (HDRI).

🟩 Фаза 3: Инструментарий Редактора

Цель: сделать процесс создания уровней быстрым и удобным.

  • Сетка и привязка: Визуальная сетка на полу и «прилипание» объектов к шагу (0.5м / 1.0м).
  • Браузер ассетов: Визуальная галерея сохраненных .nos моделей с поддержкой Drag-and-Drop.
  • Библиотека материалов: Готовые пресеты (Золото, Стекло, Пластик) в один клик.
  • Множественное выделение: Одновременная трансформация (движение/поворот) нескольких объектов.
  • Продвинутый Undo/Redo: История действий на 100+ шагов с сохранением на диск.

🟥 Фаза 4: Геймплей и Физика

Цель: вдохнуть жизнь в статичный мир.

  • SDF-коллизии: Запретить камере и игроку проходить сквозь стены и объекты.
  • Система триггеров: Невидимые зоны, которые запускают события (например, открывают дверь).
  • Компоненты логики: Возможность «вешать» на объекты простые скрипты (вращение, движение по пути).
  • Режим игры (Play Mode): Мгновенное переключение (F5) — скрытие интерфейса и включение физики.

🟪 Фаза 5: Релиз и Полировка

Цель: превратить проект в готовый продукт.

  • Экспорт проекта: Сборка сцены в один автономный .exe файл без редактора.
  • Меню настроек: Настройки графики внутри движка (разрешение, качество теней, лимиты TDR).
  • Документация: Полный гайд по горячим клавишам и API для разработчиков.

План развития движка NLSDFE — Январь 2026


Сделано с помощью C++ и боли в Vulkan.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors