SDF Engine — это легковесный 3D-редактор, использующий магию Signed Distance Fields (SDF). В отличие от обычных движков, здесь нет полигонов и треугольников. Все объекты — это чистая математика, просчитываемая на видеокарте в реальном времени.
- 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
| Клавиша | Действие |
|---|---|
| W / A / S / D | Движение камеры |
| Shift (зажать) | Ускорение камеры |
| 1 / 2 / 3 | Режимы Гизмо (Move / Rotate / Scale) |
| Ctrl + C / V | Копировать / Вставить объект |
| Alt + D | Быстрый дубликат |
| Ctrl + Z | Отмена действия (Undo) |
| Delete | Удалить выбранный объект |
| F5 | Перезагрузить шейдеры "на лету" |
- Установленный Vulkan SDK.
- Компилятор C++ (MSVC / Visual Studio 2022 рекомендуемо).
- CMake 3.10+.
- Клонируй репозиторий:
git clone https://github.com/твой_ник/NLSDFE.git cd NLSDFE - Сгенерируй проект через CMake:
cmake -S . -B build - Скомпилируй шейдер (убедись, что
glslcв PATH):glslc shaders/shader.comp -o build/Debug/shader.spv
- Собери исполняемый файл:
cmake --build build --config Debug
Цель: превратить «макаронный» код в расширяемую систему.
- Модульность: Разбить
main.cppна отдельные файлы:Renderer.cpp,Scene.cpp,Editor.cppиInput.cpp. - Граф сцены (Scene Graph): Реализовать систему «Родитель-Ребенок» для группировки объектов.
- Система именования: Возможность давать объектам понятные имена (например, «Голова игрока») в иерархии.
- Менеджер ресурсов: Централизованная загрузка шейдеров и файлов сцены
.nos.
Цель: выжать максимум визуала из Vulkan и математики SDF.
- Многопоточное освещение: Поддержка до 8 динамических источников света (Point Lights).
- Глобальное освещение (Lite): Примитивный расчет отраженного света для большего реализма.
- Эффект Bloom: Мягкое свечение ярких материалов и ламп.
- Оптимизация (Bounding Volumes): Пропуск расчетов SDF для объектов, которые находятся далеко от луча.
- Система неба: Добавление процедурного неба или карт окружения (HDRI).
Цель: сделать процесс создания уровней быстрым и удобным.
- Сетка и привязка: Визуальная сетка на полу и «прилипание» объектов к шагу (0.5м / 1.0м).
- Браузер ассетов: Визуальная галерея сохраненных
.nosмоделей с поддержкой Drag-and-Drop. - Библиотека материалов: Готовые пресеты (Золото, Стекло, Пластик) в один клик.
- Множественное выделение: Одновременная трансформация (движение/поворот) нескольких объектов.
- Продвинутый Undo/Redo: История действий на 100+ шагов с сохранением на диск.
Цель: вдохнуть жизнь в статичный мир.
- SDF-коллизии: Запретить камере и игроку проходить сквозь стены и объекты.
- Система триггеров: Невидимые зоны, которые запускают события (например, открывают дверь).
- Компоненты логики: Возможность «вешать» на объекты простые скрипты (вращение, движение по пути).
- Режим игры (Play Mode): Мгновенное переключение (F5) — скрытие интерфейса и включение физики.
Цель: превратить проект в готовый продукт.
- Экспорт проекта: Сборка сцены в один автономный
.exeфайл без редактора. - Меню настроек: Настройки графики внутри движка (разрешение, качество теней, лимиты TDR).
- Документация: Полный гайд по горячим клавишам и API для разработчиков.
План развития движка NLSDFE — Январь 2026
Сделано с помощью C++ и боли в Vulkan.