Skip to content

Core Graph

Lszaboo edited this page Nov 9, 2025 · 3 revisions

Dependency Graph

This page describes a core part of Juliagebra, the Dependency graph. This graph is responsible for making sure that the Geometry the user creates updates correctly and efficiently, whilst managing CPU/GPU resources in an optimal way.

Graph construction

The graph is set-up from the code the user writes. The nodes in the graph are the Geometry/Juliagebra defined objects that the User can use. The connections between the nodes are formed by constructing geometry with a list that contains references to other nodes. What happens when a node is updated described in the dependency callback which is written in the do-end clause.

DependencyGraph01

As we can see on the picture, the red underlined objects define the nodes, the parts with blue rectangles define the connections, and their do-end clause define their dependency callback.

A very powerful invariant which comes from the construction itself, is that the resulting graph will be a DAG, meaning no cycles will be present in the graph. This is so, because when constructing, you can only pass already created nodes and Nothing types are not allowed, so Cycles can't be constructed. You can only add nodes onto this graph, not even editing is allowed.

Graph evaluation

Now that we have a constructed graph, we would like to use it, evaluate it when the User interracts with the scene.

Wiki navigation sidebar

Legend:

  • ✅: Up-to-date
  • 🏗️: Needs some work
  • ❌: Unusable
  1. 🏗️ Home
  2. 🏗️ Developer Guide
    1. Composition Subclassing
    2. Core Graph
    3. 🏗️ Dependents
    4. 🏗️ Observer and Observed
    5. 🏗️ Plans
    6. 🏗️ Rendered Dependents
    7. Macro Constructors

Clone this wiki locally