A list of Nodes (planned and implemented) for Fabric. image # Material image - [x] Basic Color (no lighting) - [x] Basic Diffuse (lighting) - [x] Basic Texture (no lighting) - [x] Standard (Physical Based Rendering) - [x] PBR (Advanced Physical Based Rendering) - [x] Depth (Visualize Depth) - [x] UV (Visual texture coordinates) - [x] Skybox (HDRI Environment Map) - [x] Displace (Luminosity / RGB Based Displacement shader) # Geometry image - [ ] Line - [x] Plane - [ ] Image Mesh - [x] Point Plane (Temp until #15 is fixed) - [x] Rounded Rect - [x] Triangle - [x] Circle - [x] Arc - [x] Cone - [x] Box - [x] Rounded Box - [ ] Squircle - [x] Capsule - [x] IcoSphere - [ ] Octasphere - [x] Sphere - [x] Tube - [x] Torus - [x] Tesselated Text - [x] Extruded Text - [x] Supershape - [x] Skybox - [x] Geometry from 2D PolyLine (needs better Triangulation) - [ ] Parametric # Object image - [x] Mesh - [x] Instanced Mesh - [x] 3D Model Loader - [x] Orthographic Camera - [x] Perspective Camera - [x] Directional Light - [x] Point Light - [ ] Spot Light # Macro Patches - [x] Sub Graph - [x] Render in Image with Depth (Outputs Image / Depth Image) - [x] Environment (Image Based Lighting) - [x] Environment Skybox (used within Env Node) - [x] Iterator Node - [x] Iterator Info (used within Iterator) - [ ] Replicate in Space - [ ] Replicate in Time # Image Processing image ### Loading - [x] Image Provider - [x] Video Provider (AVFoundation) - [x] Camera Provider (AVFoundation) ### Generator - [x] FBM Noise - [x] Voronoise ### Color Adjust - [x] Brightness / Contrast / Saturation - [x] Hue - [ ] Color Polynomial - [x] White Balance - [x] Vibrance - [x] Levels - [x] Gamma - [x] RGB Linear to SRGB - [x] sRGB to RGB Linear - [x] Exposure - [ ] Channel Mixer - [ ] Channel Combine ### Color Effect - [x] Color LUT - [x] Invert - [x] Duo Tone - [ ] False Color ### Color Space - [x] CMYK <-> RGB - [x] HSV <-> RGB - [x] LAB <-> RGB - [x] YIQ <-> RGB - [x] YPbPr <-> RGB - [x] YUV <-> RGB - [x] XYZ <-> RGB - [x] XYZ <-> LAB ### Color Tone Mapping HDR -> SDR conversion - [x] Aces - [x] Filmic - [x] Reinhard - [x] Reinhard Jodie - [x] Uncharted - [x] Uncharted 2 ### Film Emulation - [x] Grain - [x] Light Leak - [x] Technicolor 1 - [x] Technicolor 2 - [x] Technicolor 3 - [x] Technicolor 3w - [x] Vignetting - [x] White Diffusion ### Lens - [ ] Lens Distortion - [ ] Chromatic Aberration - [ ] Prism / Kaliedoscope ### Mixing - [x] Standard Mixing Modes - Additive - Average - Color Burn - Color Dodge - Color - Darken - Difference - Exclusion - Glow - Hard Light - Hard Mix - Hue - Lighten - Linear Burn - Linear Dodge - Linear Light - Luminosity - MixTemplate.msl - Multiply - Negation - Overlay - Phoenix - Pin Light - Reflect - Saturation - Screen - Soft Light - Source Over - Subtract - Vivid Light - [ ] Mix modes with Masking ### Compositing - [x] Porter Duff compositing - Atop - In - Out - Over - Xor ### Masking - [ ] Image to Mask - [x] Foreground Mask (ML) - [x] Person Mask (ML) ### Tiling - [ ] Lygia Tiling Ops - [x] Kaleidoscope - [ ] Mirror ### Decimation - [ ] Threshold - [ ] Dither - [x] Pixelate - [x] CMYK Half Tone - [x] Cross Hatch ### Distortion - [ ] Warp - [ ] Bump - [x] Displacement - [x] Displacement w Mask - [x] Pinch - [x] Dent - [x] Twirl - [x] Wobble ### Blur - [ ] Gaussian (Kawase) - [ ] Directional (Motion) - [x] Depth of Field - [ ] Bloom - [ ] Gloom - [ ] Variable Versions of above ### Morphology - [ ] Sharpen - [ ] Unsharpen - [x] Sobel - [ ] Dilate - [ ] Erode - [ ] Open - [ ] Close ### Analysis - [x] Marching Squares Contour (needs better stability at edges) - [ ] Blob Detection (requires nested array support) - [ ] Segmentation - [ ] Tracking - [ ] Classification - [x] Face Pose Analysis / Landmark - [x] Hand Pose Detection / Landmark - [ ] Body Pose Detection / Landmark - [ ] Depth Map Prediction - [x] Metal FX 2x Upsampler (ML based) - [x] FXAA Antialiasing - [x] Keypoint Distort - [ ] Image Embedding Vector( via fast Clip like model or Vision Feature Print? whats most useful - careful do we want to stray into comfy ui bullshit? ) ### ML / AI - [x] Local LLM (on-device language model) - [x] Vision Language Model (on-device VLM) ### Info - [x] Image Dimensions - [ ] Image Crop - [ ] Image Resize (Linear / Bilinear / Lancos) - [ ] Image Pixel to Color (sample at XY -> XYZ) # Parameters ### Boolean - [x] True - [x] False - [x] Logic Operator - [x] Signal ### Index Have yet to work on Index (integer only) numeric nodes ### Number - [x] Number - [x] Current Time (AKA Patch Time) - [x] System Time - [x] Timestamp - [x] Integrator (accrues every frame for now) - [ ] Derivator - [x] Single Operator Math - [x] Binary Operator Math - [x] Gradient Noise (FBM) - [x] Remap - [x] Tween / Easing - [x] Clamp - [x] Round - [ ] Counter - [ ] LFO - [x] Smooth (Kalman or 1 Euro Filter?) - [x] Math Expression - [x] Number Logic (Comparison) ### Vector - [x] Make Vec 2 - [x] Make Vec 3 - [x] Make Vec 4 - [x] Vec 2 to Float - [x] Vec 3 to Float - [x] Vec 4 to Float - [x] Vector 2 Distance - [x] Vector 3 Distance - [x] Vector 4 Distance - [ ] Vector Ops (Cross / Dot / etc) ### Color Have yet to work on Color nodes, ideally all color spaces / images are linear / aces linear internally, we'll see! ### Quaternion - [x] Make Quaternion ### Transform (Float4x4 Matrix) - [x] Identity Transform - [x] Rotate Transform - [x] Scale Transform - [x] Translate Transform - [x] Transpose Transform - [x] Invert Transform - [x] Decompose Transform - [x] Geometry to Transform Array ### String - [x] String Loader (Text file loader) - [x] String Components - [x] String Length - [x] String Range - [x] String Case - [x] String Formatter - [x] String Scanner - [x] String Join - [x] String Wrap - [x] String Remove Whitespace - [x] String Difference - [x] String Split - [x] String Compare - [x] Convert to String ( type convert ) - [x] Timestamp Formatter - [x] Directory Scanner - [x] String to Timecode Format ### Array Array nodes are implemented as Swift Generics, and can work with any of the above types - [x] Queue - [x] Array Count - [x] First Item - [x] Last Item - [x] Item at Index - [x] Replace Item At Index - [x] Poly Line Simplification ( Simplification of Array of Vector 2 Points via Ramer–Douglas–Peucker algo) - [ ] Multiplexer - [ ] Demultiplexer - [ ] Sort (? what does this mean for some types ?) - [ ] Reverse - [ ] Range / Slice ### Signaling Nodes - [x] Sample and Hold - [ ] Pulse - [x] Signal - [x] Timeline (Multi-track keyframe animation with bezier interpolation) # Other Nodes ### I / O - [x] Audio Input Spectrum - [x] Keyboard - [x] Mouse / Touch / Cursor (macOS) - [x] OSC Input (OSCKit) - [ ] OSC Output - [x] MIDI Input (MIDIKit, learn mode) - [ ] MIDI Output - [x] HID Input (IOKit) - [x] Game Controller Input (GameController.framework) - [ ] HID Output - [ ] NDI Input - [ ] NDI Output - [x] Syphon Input - [x] Syphon Output - [ ] Artnet Input - [ ] Artnet Output - [ ] Depth Camera Input (Orbec / Kinect) ### Info Nodes - [x] Rendering Destination Dimensions - [x] Units to Pixels - [x] Pixels to Units - [ ] Mesh Hit Test - [x] Frame Rate - [x] Frame Counter - [x] Log