Об этом проекте

Darkly — это приложение для рисования с открытым исходным кодом, позиционируемое как альтернатива Photoshop, где основная аудитория — художники. Оно работает в браузере через WebAssembly и WebGPU, функционирует офлайн без входа в систему, а также публикуется как отдельный крейт Rust, который можно встраивать в другие графические инструменты. Основные возможности, описанные в README: - Узловой движок кистей с такими кистями, как круглая, чернильная ручка, уголь, размазывание, акварель, разжижение, клонирование, размытие и каллиграфия; входные параметры давления, наклона, интервала, расстояния и угла; стабилизатор на основе лапласиана. - Растровые слои и группы, маски слоёв, 16 режимов наложения, плавающие слои, смарт-объекты и набор слоёв-фильтров (яркость/контраст, HSL, уровни, кривые, инверсия, обесцвечивание, хроматическая аберрация). - Инструменты выделения: прямоугольник, эллипс, лассо, многоугольник и волшебная палочка, с режимами замены/добавления/вычитания/пересечения, а также операции растушёвки, сглаживания, расширения, сжатия, границы и сглаживания контуров. - Инструменты трансформации, включая обычную и перспективную трансформацию, обрезку по выделению, изменение размера холста, масштабирование изображения, работу с DPI, отражение холста и поворот на 90 градусов. - Работа с документами: новый документ, открытие изображения, сохранение/открытие в собственном формате .darkly, экспорт в PNG/JPEG/WebP, операции с буфером обмена, автосохранение с восстановлением после сбоя, запись процесса. - Возможности интерфейса: палитра команд, меню приложения, закрепляемые и мозаичные панели, панели, которые можно выносить в отдельные окна ОС, система тем, система горячих клавиш с доступной для поиска шпаргалкой, предустановки горячих клавиш Krita/Photoshop/GIMP, устанавливаемое PWA. Отличительные особенности: - Veils: недеструктивные слои, подобные шейдерам, которые окутывают холст, включая такие эффекты, как хроматическая аберрация, заморозка, зерно, размытие линзы, живопись, пикселизация, дождливое стекло и VHS. В README они представлены как средства против преждевременной фиксации на деталях, синдрома чистого листа и усталости от творчества. - Voids: слои, которые подтягивают внешние источники, например генератор шума или поток демонстрации экрана из другого приложения, что полезно для референсов и гибридных рабочих процессов. Voids поддерживают маски и режимы наложения, а для Blender существует отдельное расширение. Архитектура и использование: - Ядро — это платформенно-независимый крейт Rust под названием darkly, содержащий модель документа, движок кистей, GPU-композитор и систему отмены, работающий везде, где работает wgpu (Vulkan, Metal, DX12 или WebGPU в браузере). - Поставляемое приложение — это фронтенд на Svelte поверх этого крейта через мост WebAssembly. - Для сборки требуются стабильный Rust, Node.js 22 или новее, make и wasm-opt из binaryen. Нужен браузер с поддержкой WebGPU (Chrome 113+, Edge 113+ или Firefox Nightly с флагом). В Linux Chromium может потребовать включения Vulkan и небезопасных флагов WebGPU. - Разработчики могут добавить крейт командой cargo add darkly и обратиться к его README и документации API для рабочего примера. Проект находится в стадии бета-версии, есть публичная дорожная карта реализованных и запланированных функций. Вклад приветствуется; в README указано, что программирование с помощью ИИ разрешено, но бездумное вайб-кодирование запрещено, что каждый PR требует написанного человеком обоснования и что генеративные функции ИИ внутри Darkly вряд ли будут приняты, если они не работают полностью офлайн без сторонних API и не сохраняют контроль художника. В README также указаны GIMP, Krita и Graphite как источники влияния и отмечено, что некоторые шейдеры veil и void являются портами или адаптациями работ с Shadertoy.