GraphiteEditor/Graphite

Tracking Issue: New nodes

Open

#912 opened on Dec 25, 2022

View on GitHub
 (3 comments) (0 reactions) (0 assignees)Rust (25,662 stars) (1,176 forks)batch import
Good First IssueGrapheneHelp Wanted

Description

Status of this issue: all of this needs to be reviewed and revised. Consider this list to be more of "inspiration" than a todo list, until we can rework it in its entirety to create an actual todo list.


This is a living, growing list. It's not organized and isn't ready-to-grab-from— please ask in Discord if you'd like to begin adding nodes or have an interest in certain ones, since they will probably need some discussion and some may be blocked on current technical limitations. But this does list a lot of opportunities for interesting contributions.

Documentation for making new nodes: https://github.com/GraphiteEditor/Graphite/blob/master/node-graph/README.md

Noise

  • Pixel Noise
  • Perlin and/or Simplex Noise (#1517)
  • Voronoi Noise (#1517)

Image Dimensions

  • Crop based on margin
  • Crop based on top left offset and desired dimensions
  • Resize based on scale factor (user to choose interpolation method)
  • Resize based on desired resolution (user to choose interpolation method)
  • Tile to fill bounds
  • Get image dimensions (returns vec2)

Image transformations

  • Flip (choose horizontal or vertical)
  • Rotate (choose interpolation method and negative space fill)
  • Shift image (choose X, Y and negative space fill)

Image channels

  • #1169
  • Extract Alpha
  • Extract Opaque

Image adjustments

  • Brightness/Contrast
  • Levels
  • Curves - requires custom widget
  • Exposure
  • Vibrance - still needs a Saturation slider
  • Hue/Saturation - current algorithm is incorrect
  • Color Balance
  • Black & White - rename from Grayscale
  • Photo Filter
  • Channel Mixer
  • Color Lookup
  • Invert RGB
  • Posterize
  • Threshold
  • Selective Color
  • Gradient Map

Other adjustments

  • Gamma
  • Opacity
  • #1391 (replace all colors with chosen color, keep alpha)
  • #986
  • Height map to Normal map node

Filters

Vector

  • Convert group containing paths to a path with those shapes as subpaths
  • Metaballs from points-and-radii (see: https://medium.com/@tbarrasso/advanced-meta-metaballs-864bbf0a945c, https://varun.ca/metaballs/, https://x.com/furafuku/status/1937586455930626439)
  • Silhouette (removes all interior negative space and geometry, leaving only the outermost path; basically a boolean union operation that removes interior negative space as well)
  • Convex hull
  • Boolean slice along line (lop off anything left of an infinite line)
  • #1091
  • #1092
  • https://github.com/GraphiteEditor/Graphite/issues/1162 Vector Edit (nondestructively apply a queue of operations from the Path tool to an existing shape)
  • Polyline Subsurf
  • Voronoi from Points (map a point cloud into vector shapes centered at those points forming a Voronoi diagram, with a smoothing option)
  • Roughen (amplitude, frequency, absolute/relative to scale, smooth/sharp)
  • Spline from Polyline
  • Point/Handle Groups
  • Packing (support for both convex and concave)
  • Area
  • Bounding Box (Modification)
    • -> Min (Top Left X,Y)
    • -> Max (Bottom Right X,Y)
  • Read (from Blender)
    • Curve Handle Positions
    • Curve Length
    • Curve Tangent
    • Endpoint Selection
    • Handle Type Selection
    • Is Spline Cyclic
    • Spline Length
    • Spline Parameter
    • Spline Resolution
  • Sample (from Blender)
    • Sample Curve
  • Write (from Blender)
    • Set Curve Normal
    • Set Curve Width
    • Set Curve Radius
    • Set Handle Positions
    • Set Handle Type
    • Set Spline Cyclic
    • Set Resolution
    • Set Spline Type
  • Operations (from Blender)
    • Curve to Points
    • Deform Curves on Surface
    • Fillet Curve
    • Interpolate Curves
    • #1226 Resample Curves
    • Reverse Curve
    • Subdivide Curve
    • Trim Curve
  • Primitives (from Blender)
    • Arc
    • Bezier Segment
    • Curve Circle
    • Curve Line
    • Curve Spiral (But 2D)
    • Quadratic Bezier
    • Quadrilateral [Rectangle, Parallelogram, Trapezoid, Kite, Points]
    • Star
  • Topology (from Blender)
    • Offset Point in Curve
    • Curve of Point
    • Points of Curve

Stroke (Modification)

  • -> Fill Type [Solid, Gradient, Contour]
  • -> Custom Width Profile
  • -> Custom Line Join Profile
  • -> Custom Line Cap Profile
  • -> Align[Center, Inside, Outside]
  • Expand Stroke

Contour Tool/Node

  • -> Radius
  • -> Contour Type[Round, Miter, Bevel, Custom]
  • -> Miter
  • -> Contour Cap[None, Round, Square]
  • -> Contour Fill[Auto Closed, Force Open, Force Closed]
  • -> Radius
  • -> Contour Type[Round, Concave, Straight, Cutout, Custom]
  • -> Selection

Brush

  • #1069
  • Texture
  • Properties (per stroke?)

Generic

  • Repeat
  • Circular repeat
  • Mirror
  • Scatter

Widgets

  • Curves Widget

Instances (from Blender)

  • Instance on Points (#1513)
  • Instance to Points
  • Realize Instances
  • Rotate Instances
  • Scale Instances
  • Translate Instances
  • Instance Rotation
  • Instance Scale

Instance Points (from Blender)

  • Distribute Points (Image (Should allow to use alpha as a Selection)/Vector)

Utilities

  • Color (from Blender)
    • Color Ramp
    • RGB Curves
    • Combine Color
    • Mix Color
    • Separate Color
  • String (from Blender)
    • Join Strings / concatinate
    • Replace String
    • Slice String (Index Offset or Text/Regex)
    • String Length
    • String to Curves
    • Value To String
    • Special Characters
      • Text pad (inserts chars either at start or end until length is as desired)
  • Vector (from Blender)
    • Vector Curves
    • Vector Math
    • Vector Rotate
    • Combine XY/WH
    • Mix Vector
    • Separate XY/WH

Maths

NOTE: All will have Clamp Option (0.,1.)

  • Functions
    • Add
    • Subtract
    • Multiply
    • Divide
    • Multiply Add
    • Power
    • Logarithm
    • Square Root
    • Absolute
    • Exponent
    • Clamp
    • Float curve
    • Map range
  • Comparison
    • Min
    • Max
    • Less Than
    • Greater Than
    • Sign
    • Compare
    • Smooth Minimum
    • Smooth Maximum
  • Rounding
    • Round
    • Floor
    • Ceil
    • Truncate
    • Fraction
    • Modulo
    • Wrap
    • Snap
    • Ping-Pong
  • Trigonometric
    • Sine
    • Cosine
    • Tangent
    • Arcsine
    • Arccosine
    • Arctangent
    • Arctan2
    • Hyperbolic Sine
    • Hyperbolic Cosine
    • Hyperbolic Tangent
  • Conversion
    • To Radians
    • To Degrees
  • Mix
  • Vec2
    • multiply by scalar or vector
    • divide by scalar or vector
    • add
    • subtract
    • length
    • length squared
    • normalise
    • distance between two vectors
    • dot product
    • cross product
    • ceil (per axis)
    • floor (per axis)
    • min (per axis)
    • max (per axis)
    • Linear interpolation (lerp)

Misc (from Blender)

  • Random Value
  • Switch

Contributor guide