Fabric

Fabric-ProjectBSD-3-Clause活跃维护

基于节点的创意编程工具,用可视化连线搭建 3D 图形、图像处理和计算机视觉流程,灵感来自 Quartz Composer,适合实时渲染与多媒体实验。

Node Creative Coding / 3D / Image Processing tool inspired by Quartz Composer

Releases/Beta-1发布于 2026-09-04 20:15 UTC606star +1 / 7 天34fork同步于 2026-11-10 11:57 UTC

怎么上手

由 README 提炼,执行前请确认
git clone --recurse-submodules <repo>
./scripts/build-syphon-xcframework.sh
./scripts/build-hapinavfoundation-xcframework.sh
cp Config/Local.xcconfig.example Config/Local.xcconfig
硬件要求按 README 说明

README 未说明具体显存或 GPU 型号要求,仅要求 macOS 15+ 与 Xcode 15+,渲染基于 Metal,因此仅支持 Apple 平台。

下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

macOS 上的可视化节点创作环境,做交互视觉、图像视频处理与 3D 内容

基于节点的创意编程工具,用可视化连线搭建 3D 图形、图像处理和计算机视觉流程,灵感来自 Quartz Composer,适合实时渲染与多媒体实验。

核心能力

  • 用可视化节点连线搭建交互式 3D 场景与图像处理管线
  • 基于 Satin 引擎支持 PBR、阴影投射与 IBL 等现代渲染
  • 支持实时着色器编辑与热重载,可边改边看效果
  • 内置 ML 实时分割与关键点检测、本地 LLM 调用节点
  • 提供插件架构,可用自定义节点扩展并嵌入第三方应用

容易踩的坑

必须带 --recurse-submodules 克隆,否则 Satin、Syphon、HapInAVFoundation 依赖缺失;macOS 构建前需先跑两个 xcframework 构建脚本;需在 Config/Local.xcconfig 填入自己的 Apple Developer team ID,且项目处于早期 alpha 阶段功能不稳定。

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

5 个版本Releases/Beta-1
  1. Releases/Beta-1Beta 1.0最新正式版2026-09-04 · 2026-09-04 20:15 UTC

    Fabric Beta 1 significantly expands what you can create, control, and deliver: compositions can now be exported as images or movies, output can live directly behind the node canvas, third-party plug-ins and JavaScript enable deeper customization, and a broad collection of new image, geometry, animation, routing, array, and dictionary nodes opens up more sophisticated workflows.

    Optimizations

    • Dramatically improve engine performance
    • Dramatically improve canvas node ui performance
    • Built on top of Satin 2.0 rendering improvements.

    Animation, data, and routing

    • Added LFO, Pulse, Trigger, Number Generator, and Index Generator nodes for procedural animation and event-driven compositions.
    • Expanded Smooth into a configurable, directional filtering node.
    • Added a Visualize node for inspecting changing values as a live graph.

    Routing

    • Added Switch, Gate, and Matrix Switch nodes for dynamically routing values and selectively evaluating graph branches.

    Data

    • Added a complete set of dictionary nodes, including JSON conversion, merging, lookup, editing, and decomposition.
    • Expanded array tools with append, split, subarray, reverse, shuffle, interpolation, resampling, repeat, and tween operations.
    • Improved String Split, Formatter, Scanner, and Join with configurable modes and consistent escape handling.

    Image and video

    • Added a unified Blend node with 28 selectable blend modes.
    • Added Cine Grain, Fast Grain, Halation, Halation Extract, Posterize, Color Clamp, and Channel Subsample effects.
    • Added Gaussian Blur Channels, post-process Motion Blur, and Depth of Field nodes.
    • Added a larger collection of procedural noise generators, including domain-warped, ridge, turbulence, Voronoi, Wavelet, and Worley noise.
    • Added image resampling and Lucas–Kanade optical flow.
    • Added Hap movie playback, improved playback controls, and more precise seeking.

    3D and geometry

    • Added a Cyclorama geometry node for seamless studio-style environments.
    • Added expression-driven parametric geometry and 14 ready-made parametric surfaces.
    • Added a Spot Light node.
    • Added Line, Ring, and Grid point-layout nodes.
    • Expanded support for composing, decomposing, and animating vectors, orientations, and transforms.

    Extensibility and live coding

    • Added support for third-party node plug-ins, allowing Fabric to be extended with independently distributed nodes.
    • Documents now track the plug-ins they require while retaining compatibility with earlier node identifiers.
    • Added a JavaScript node with configurable inputs and outputs.
    • Live Image shaders can now include the Lygia shader library directly.
    • Expanded the public node and subgraph APIs for creating reusable custom integrations.

    Export and presentation

    • Export still images as PNG, JPEG, or TIFF.
    • Export movies with configurable duration, resolution, frame rate, and H.264, HEVC, ProRes 422, or ProRes 4444 encoding.
    • Monitor movie export progress and cancel an export in progress.
    • Display rendered output in a separate window or directly behind the node canvas.
    • Present clean, full-screen output without editor controls.

    Editor experience

    • Added a Command-I shortcut for showing or hiding settings on selected nodes.
    • Improved node titles, subtitles, custom names, and device labels to make graphs easier to understand.
    • Improved the node inspector with clearer grouping, type colors, value previews, and array or dictionary counts.
    • Auto Layout now works within the currently viewed subgraph and produces clearer fan-out layouts.

    Bug fixes

    • Improved document loading so saved values, connections, published ports, and dynamically configured nodes restore reliably.
    • Fixed graph execution issues affecting feedback loops, iterat
  2. Releases/Alpha-13pre-release2026-04-02 · 2026-04-02 04:57 UTC
    查看更新说明

    Whats new:

    Fabric Swift Package

    Fabric's core engine is now a Swift Package, making embedding Fabric into custom Swift apps possible.

    This is a major milestone that mirrors a core use case from Quartz Composer - a lightweight embeddable runtime that loads a common interchange format that lets users author Fabric Graphs in the editor, and run them in various applications which implement the runtime.

    Fabric's package allows you to load Fabric documents in to the runtime, render them on demand, and support all features the Editor supports, as well as procedurally create graphs on demand, save them. You can mix Fabric rendering with your own custom Metal drawing, render documents to movies, - drive graphs with procedural input yourself, and more.

    For a taste of what can be made, check out @tobyspark's blog post on his work in progress custom mapping and performance tool - *spark stage

    Another teaser - this time of "v" a bespoke VJ app that uses Fabric and Satin behind the scenes:

    Fabric Editor

    Speaking of Toby - he's done a ton of work improving the quality of life in Fabric editor which has a ton of new and improved features:

    • Drag files from Finder into the Canvas
    • Drag to select in the Canvas
    • Auto Layout nodes in the Canvas
    • Improved workflow with sidebar search and list navigation
    • Drag nodes from the sidebar to the Canvas (in addition to double clicking)
    • Sidebar provides descriptive text for available Nodes.
    • Improvements in publishing ports, including context menu and more and more.
    • Instantiated Nodes Ports now provide descriptions on hover.
    • Improved Subgraph navigation UI.

    New Nodes

    Highlights include a live code shader editor make image processing effects, super fast high quality blurs, many new string handling nodes and more, projection mapping tools and more:

    • Live code shader editor - program metal shaders live, and access the Lygia shader library.
    • Image Mesh node for easy no geometry / materials get stuff on screen fast workflow (think Billboard Node from QC)
    • Screen Capture Node
    • Test Card Node
    • Fast multipass seperable blurs ( think v002 Blurs - IYKYK )
    • Perspective Geometry node (for DIY projection mapping)
    • Image Cropping node
    • Orientation Nodes
    • Additional String processing nodes

    What's Changed

  3. Releases/Alpha-11pre-release2026-01-29 · 2026-01-29 19:10 UTC
    查看更新说明

    Whats Changed

    Copy and Paste in the canvas

    Fabric Editor now supports Copy and Paste (and Duplicate) for nodes along with their connections. This makes patching less tedious for making complicated graphs with similar structures.

    https://github.com/user-attachments/assets/425361cd-247e-4498-9f3c-7395ffd0b29b

    Node Settings

    Nodes now support and optional customizable settings view, reminiscent of Quartz Composers older node settings. The settings view supports Nodes that require dynamically changing their input or output ports or their behaviour in a way that doesnt make sense during patch runtime. In other words, these are set and forget configurations, not settings you'd change during runtime.

    https://github.com/user-attachments/assets/bbb0a3fc-1371-40ae-9fe1-4b7ad381836c

    This enables us to support Nodes we havent been able to prior:

    New Nodes with custom Settings:

    • Math Expression

      • Configure a math expression in text, in Settings
      • Detected variables become input ports.
      • Via swift-math-parser
    • Keyboard input

      • Bind keys or key combinations in Settings
      • Allow keys or key combinations to trigger Boolean signals
    • Timeline

      • Create and configure multiple tracks of key framed numeric values with manual easing in Settings.
      • Adjust input time to look up multiple output values at that time.
    • Midi input

      • Configure in Settings a Midi Device and use midi listen mode to add ports to updated control, notes or surfaces
      • Outputs are normalized to float 0 to 1
      • Via [https://github.com/orchetect/MIDIKit]
    • OSC Input

    • Game Controller

      • Select detected and supported Game Controller devices
      • Expose buttons, toggles, bumpers, triggers, dpads Joysticks and more as inputs to Fabric
      • Via Game Control Framework
    • HID Input

      • Select and expose HID Devices and their parameters
      • This is lower level than Game Controller
      • Allows access to arbitrary HID devices.

    What's Changed

    New Contributors

    Full Changelog: https://github.com/Fabric-Project/Fabric/compare/Releases/Alpha-10...Releases/Alpha-11

  4. Releases/Alpha-10Alpha 10pre-release2026-01-18 · 2026-01-18 23:02 UTC
    查看更新说明

    Alpha 10

    • Add Face Key Point Detection Node
    • Add Local Vision Language Model Node via MLX-Swift-LM
      • Will download and install a VLM model from hugging face to run locally
      • Prompt to return test or instructions from Image.
      • Today uses input of images, does not do temporal understanding yet
      • Note this may take a lot of ram!
    • Add Vector 2 -> Vector 3 Array Node (converts array of Vec2s to array of Vec3's adds dimension)
    • Add Vector 3 -> Transform Array Node (converts array of Vec3s to array of Transforms)
    • Add Samples for Face, Hand and VLM nodes.

    What's Changed

    Full Changelog: https://github.com/Fabric-Project/Fabric/compare/Releases/Alpha-9...Releases/Alpha-10

  5. Releases/Alpha-9Alpha 9pre-release2026-01-13 · 2026-01-13 21:02 UTC
    查看更新说明

    https://github.com/user-attachments/assets/4e0078d6-5b21-4a8f-9973-8990dfbfd7fe

    (Genuary 12 - Boxes - included in the Genuary samples below!)

    New Features

    • Rename Nodes (thanks @furtunavlad !)
      • Double click a Node's title and rename to keep your Graphs clear and organized
    • Improve macOS Tahoe UI experience
    • Add Initial SDF Generators, Operators and Rendering Image Nodes
    • Add Geometry To Transform Node which converts vertices into arrays of transforms useful for Instanced Rendering
    • Add Polar Pixellation Image Effect

    Fixes

    • Dramatically improve SwiftUI Canvas Scroll Performance
    • Fix intermittent crashing due to custom search bar implementation. Adopt .searchable
    • Improve LLM Node
    • Improve Number Smooth node
    • Fix bug in our Feedback Cache

    What's Changed

    New Contributors

    Full Changelog: https://github.com/Fabric-Project/Fabric/compare/Releases/Alpha-8...Releases/Alpha-9

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    Fabric

    Swift Metal Xcode Discord

    Fabric is a creative code and rapid prototyping environment focusing on interactive visuals, image and video processing and analysis and 3D content authoring.

    Fabric

    • Provides an intuitive Visual Node based content authoring environment
    • Provides an SDK to load an common interchange file format
    • Provides an SDK to extend Fabric by creating custom nodes via a plugin architecture

    Fabric is inspired by Apple's deprecated Quartz Composer ecosystem, and its design philosophy.

    Fabric is intended to be used as

    • A Creative coding tool requires little to no programming experience.
    • Pro User tool to create reusable documents (similar to Quartz Composer Compositions) that can be loaded in the Fabric runtime and embedded into 3rd party applications.
    • Developer environment built on Satin that can render high fidelity visual output in a procedural way, using modern rendering techniques.

    An early alpha of Satin rendering a instances of a sphere geometry, along with an HDRI environment and a PBR Shader at 120Hz:

    What can I do with Fabric?

    Think of Fabric as a playground of visual capabilies you can combine together.

    Author

    • Interacive 3D graphics
    • Image processing and effects
    • Audio reactive scenes
    • images and video analysis pipelines
    • embed your scenes into your own apps

    Check out the Samples

    Fabric supports, thanks to Satin and Lygia, high fidelity modern rendering techniques including

    • Physically based rendering
    • Scene graph
    • Lighting and Shadow casting
    • Realtime shader editing (live coding, hot reloading)
    • GPU Compute
    • Image Based Lighting
    • 3D Model Loading
    • Material System
    • ML based realtime segmentation and keypoint detection
    • Shader based Image Processing and Mixing
    • Local LLM calling

    Credits

    Fabric is authored by by Anton Marini.

    Fabric uses Satin 3D engine Satin rendering engine written by @Reza Ali.

    Fabric includes a licensed Metal port of Lygia shader library, powering Image effects and more, written by @Patricio Gonzalez Vivo and contributors.

    Requirements

    [!WARNING] Please note Fabric is heavily under construction.

    • macOS 15 +
    • XCode 15 +

    Please See Releases for code signed App downloads.

    For Developers:

    1. Checkout Fabric with submodules enabled, as Satin, Syphon and HapInAVFoundation are dependencies. (git clone --recurse-submodules ...)
    2. If you already cloned without submodules, run git submodule update --init --recursive.
    3. if building for macOS, run ./scripts/build-syphon-xcframework.sh and ./scripts/build-hapinavfoundation-xcframework.sh
    4. Copy Config/Local.xcconfig.example to Config/Local.xcconfig and set your Apple Developer team ID in it. The project file carries no team, so yours stays out of commits.
    5. Open the XCode project
    6. Ensure that Fabric Editor is the active target.
    7. Build and run.

    Getting Started

    Checkout our Architecture Document to understand the underlying paradigms of working with Fabric's Nodes and execution model, learn what a Node and a Port is, the types of data Fabric can generate and process, and how Fabric executes your compositions.

    We also provide a set of evolving tutorial / getting started and sample Fabric compositions along with a readme walk through. You can use the Sample Compositions to learn and build off of.

    You can view a comprehensive list of available and planned Nodes here to explore and learn how to compose more advanced and custom setups with Fabric.

    Don't hesitate to file a feature request if a Node is missing!

    Roadmap

    Checkout our Roadmap Document

    Community

    I ( Anton Marini ) are looking to build a community of developers who long for the ease of use and interoperability of Quartz Composer, its ecosystem and plugin community.

    If you are interested in contributing, please do not hesitate to reach out / comment in the git repository, or join our discord via invite

    Discord

    FAQ

    • Will Fabric ever be cross platform?

      • No. Fabric is purpose built on top of Satin and aims to provide a best in class Apple platform experience using Metal.
    • What languages are used?

      • Fabric Editor is written in Swift and SwiftUI. Satin is written in Swift and C++
    • Why not just use Vuo or Touch Designer or some other node based tool?

      • I do not like them.
      • Don't get me wrong, they are incredible tools, but they are not for me.
      • They do not think the way I think.
      • They do not expose the layers of abstraction I want to work with.
      • They do not provide the user experience I want.