Skip to content

Rendered Dependents

Lszaboo edited this page Nov 9, 2025 · 4 revisions

Rendered Nodes

Rendered Nodes for the system to utilize them need to be setup with a trio of classes inherited from RenderedPlan - RenderedDependent - Renderer.

RenderedPlan

Subclass of ObservedPlan.

RenderedDependent

Subclass of Observed.

Renderer

Subclass of Observer{T} where T is a subclass of RenderedDependet.

Addition

Let's look at this example:

DependencyGraph05

The above picture shows the callstack frame-by-frame when addition happens to the Dependency graph for functions added! and addedAll!

added! is basically called, so that the Renderer knows how to assign a RenderedDependent to itself, maybe give it some view into a big buffer.

addedAll! exists, so that the Renderer knows when no more RenderedDependents are assigned to it, so it can prepare itself for Rendering.

Syncing

Syncing works the same way as it does for Observed - Observers.

So only one Source node can be evaluated per frame, so sync! is called for a reachable (or Source node) Observed and their Observer pair only once per frame and syncAll! is also called once per frame if there was at least one reachable Node with this Observer, or the Source node had this Observer.

Note that Juliagebra would like to calculate everything in Float64 and render with Float32 precision, so accomodate this when Syncing between RenderedDependent-s and Renderer-s.

RenderedDependent - Renderer building

Note that RenderedDependent - Renderer building is defined like this:

function build!(self::App, plan::RenderedPlanDNA)
    renderer,observed = buildFromPlan!(plan,self._graph,self._opengl)
    setRenderedID!(renderer,observed,getGraphID(observed) + ID_LOWER_BOUND)
    return renderer
end

So setRenderedID! needs to be defined for RenderedDependent - Renderer pairs accordingly.

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