Skip to content

Procedural vector data and attributes design considerations #2520

Open
@Keavon

Description

@Keavon

Partially related to #2522, #2309, #1832, #1834, #950.

  • Data-oriented design (struct of arrays)
  • Harmony with Vello’s GPU-based pipeline
  • SIMD and compute shader friendliness
  • Sequential (like SVG) vs. index buffer (like OBJ) approach
  • Short-term: vector paths (SVG-style open or closed paths)
  • Long-term: vector meshes (points, segments, and regions)
  • Segments representing any curve spline type
  • Basing paths around segments or manipulator groups
  • Relationship between anchors and handles
  • Columns for attributes (and custom attributes for passing along any info like color palette or other variables)
  • Open or closed faces
  • Subpaths
  • Fill rule
  • Winding order
  • Styling with fill
  • Styling with stroke
  • Stroke taper
  • Stroke being affected by parent groups that impose a stretch/skew transformation
  • Stroke caps/joins varying per-point
  • Avoiding cloning per node
  • Integration of monadic attributes into the graph
  • Copy on write attributes
  • Lazy evaluation of whole attributes (columns) or ranges (rows)
  • Propagating parametric modeling constraint relationships
  • Be a superset of a 3D mesh (including a Z axis) to support 3D to 2D vector flattening
  • Vector mesh depth sorting in the event of overlapping faces
  • Support for a bisection style drawing approach shown in https://www.youtube.com/watch?v=EZLEkhxiw9o
  • Support for a Shape Builder tool and Trim tool where you draw cuts through segments

Metadata

Metadata

Assignees

No one assigned

    Labels

    ArchitectureInvolves architecture or engineering work or discussion

    Type

    Projects

    Status

    Short-Term

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions