这个项目能做什么

Darkly 是一款开源绘画应用,定位为 Photoshop 的替代品,主要面向画家用户。它通过 WebAssembly 和 WebGPU 在浏览器中运行,无需登录即可离线使用,同时也可作为独立的 Rust crate 发布,能够嵌入其他图形工具中。 README 中描述的核心功能包括: - 基于节点的笔刷引擎,支持圆形、墨水笔、木炭、涂抹、水彩、液化、克隆、模糊和书法等笔刷;支持压力、倾斜、间距、距离和角度输入;内置拉普拉斯稳定器。 - 光栅图层和图层组、图层蒙版、16 种混合模式、浮动图层、智能对象,以及一系列滤镜图层(亮度/对比度、HSL、色阶、曲线、反相、去饱和、色差)。 - 选择工具:矩形、椭圆、套索、多边形和魔棒,支持替换、添加、减去、相交模式,以及羽化、抗锯齿、扩展、收缩、边框和平滑操作。 - 变换工具,包括通用和透视变换、按选区裁剪、画布调整大小、图像缩放、DPI 处理、画布翻转和 90 度旋转。 - 文档处理:新建文档、打开图像、原生 .darkly 保存/打开、PNG/JPEG/WebP 导出、剪贴板操作、带崩溃恢复的自动保存、过程录制。 - 界面特性:命令面板、应用程序菜单、可停靠和平铺面板、可弹出为独立操作系统窗口的面板、主题系统、带可搜索速查表的热键系统、Krita/Photoshop/GIMP 热键预设、可安装的 PWA。 独特功能: - Veils:非破坏性的类着色器图层,可笼罩画布,包括色差、冻结、颗粒、镜头模糊、绘画、像素化、雨玻璃和 VHS 等效果。README 将其定位为帮助避免过早陷入细节、空白页综合征和艺术疲劳的工具。 - Voids:可引入外部源的图层,例如噪声生成器或其他应用的屏幕共享流,适用于参考和混合工作流。Voids 支持蒙版和混合模式,并提供了专门的 Blender 扩展。 架构与使用: - 核心是一个平台无关的 Rust crate,名为 darkly,包含文档模型、笔刷引擎、GPU 合成器和撤销系统,可在 wgpu 支持的任何平台运行(Vulkan、Metal、DX12 或浏览器中的 WebGPU)。 - 发布的应用程序是通过 WebAssembly 桥接该 crate 的 Svelte 前端。 - 构建需要 Rust 稳定版、Node.js 22 或更高版本、make 以及来自 binaryen 的 wasm-opt。需要支持 WebGPU 的浏览器(Chrome 113+、Edge 113+ 或启用标志的 Firefox Nightly)。在 Linux 上,Chromium 可能需要启用 Vulkan 和不安全的 WebGPU 标志。 - 开发者可以通过 cargo add darkly 添加该 crate,并查阅其 README 和 API 文档以获取可运行示例。 该项目处于测试阶段,并提供了已实现和计划功能的公开路线图。欢迎贡献;README 指出允许 AI 辅助编码,但禁止粗心的 vibe coding,每个 PR 都需要人工编写的理由说明,并且 Darkly 内部的生成式 AI 功能除非完全离线运行、不依赖第三方 API 且保留艺术家控制权,否则不太可能被接受。README 还致谢 GIMP、Krita 和 Graphite 作为灵感来源,并指出部分 veil 和 void 着色器是 Shadertoy 作品的移植或改编。