Skip to content

wsick/puck

Repository files navigation

puck

Canvas scene render library

Objective

Create canvas tree renderer that is optimized for rendering scene trees.
Scene trees can take aggressive optimizations since ancestors influence how and whether an ancestor renders.

This renderer is focused on reducing memory footprint while maintaining optimal DRY (don't repeat yourself) techniques to optimize CPU impact.

Motivation

Underlying this initiative is a desire to build a graphics engine that is built closer to microservices philosophy. Among the obvious benefits of microservices, we hope to tease apart a 2D UI engine into bounded contexts that can be heavily optimized.

Composition

Our scene graph is organized into 2 types:

  • Element
    • renderful
    • no children
    • has size
  • Container
    • renderless
    • has children
    • has no size

A Visual is derived from an Element to provide filling/stroking.

A Layer is derived from a Container to isolate processing/drawing.

Additional Information

Here is a list of extended documentation to describe engine.