A list of Nodes (planned and implemented) for Fabric.
# Material
- [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
- [ ] 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
- [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
### 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