Core and the app · crate
kinogaki-network
Studio's core networks (design: core-owned networks; "Cooking DAG for nodes is studio core").
- Repository
- Core and the app (kinogaki/studio-core)
- Folder
studio/core/network- Source
- 43 files, 11,390 lines
- Tests
- 18 files, 5,138 lines
What it is
Studio's core networks (design: core-owned networks; "Cooking DAG for nodes is studio core").
The network every context shares (Network): core's nodes with identities, names, positions and input wires, a display flag, and the edits and checks that do not depend on what the nodes compute. Beside its nodes a network holds Frames, the same for every context: subnets (a node holding a network of the same context, its body) and, inside a body, the subnet's Input and Output boundaries (frames). Identities are unique through every body of a network, so a node keeps its identity when it moves into or out of a subnet. Cooks read the network Network::flattened (flatten); Collapse and Extract are in collapse.
Core's one node shape (Node, in a CoreNetwork): a node type id, SDK parameters, wires, the core flags (bypass, template, freeze), an optional held delta, an optional network inside and the spares its type declares. A context declares itself as data (kinogaki_studio_api::NetworkContext) and its package's node types say what they compute; the registry holds what is installed. Packages read core networks through the SDK's NetworkRead, which CoreNetwork implements, and edit them through NetworkEdit, which LentNetwork (a network lent in a document's unit) implements.
Depends on
| Crate | Repository | As | What it is |
|---|---|---|---|
kinogaki-anim | Core and the app | normal | Studio's animation channels. |
kinogaki-color-service | Core and the app | normal | Studio's color service: the OpenColorIO config (lib-color's built-in ACES 2.0 CG config, or a file), the working space, and the viewer's display, view, look, exposure and gamma. |
kinogaki-cook | Core and the app | normal | Studio's core cooking engine, the same for every network kind (the owner's rule: the cooking DAG for nodes is core's). |
kinogaki-prism | lib-prism | normal | Prism documents for Kinogaki. |
kinogaki-render-api | SDK | normal | Kinogaki's render interface: what a host (Studio) sends a render engine and what comes back, with no GPU or OS API. |
kinogaki-studio-api | SDK | normal | Kinogaki Studio's headless plugin API. |
For its tests alone
| Crate | Repository | As | What it is |
|---|---|---|---|
kinogaki-core-package | Core and the app | tests | Core's own SDK package (kinogaki.core): what Studio holds whatever plugins are installed. |
kinogaki-geometry-view | Core and the app | tests | Geometry, curves and B-reps in the viewport, independent of any GPU API: the SDK's standard values as surface packets (over the SDK's display triangulation and shading normals, so Solid draws what Render renders), the one picker that answers rays and boxes ... |
kinogaki-studio-api-testing | SDK | tests | The SDK's test support (a dev-dependency only): assert_refused for admission tests, read_hostile for a format's tests of hostile files, format for its scratch folders and round trips, workers as a host installs them, with wgpu an ... |
kinogaki-testkit | Core and the app | tests | Kinogaki Studio's core testkit: toy packages written against the SDK alone, so core is tested with no real plugin. |
Third-party
| Crate | Version | Licence | Frozen in | As | Also used by |
|---|---|---|---|---|---|
blake3 | 1.8.7 | CC0-1.0 OR Apache-2.0 OR Apache-2.0 WITH LLVM-exception | lib-ui/vendor | normal | kinogaki-core-package, kinogaki-geometry, kinogaki-geometry-view, kinogaki-scene |
thiserror | 2.0.21 | MIT OR Apache-2.0 | lib-ui/vendor | normal | kinogaki-document, kinogaki-lsystem, kinogaki-shared, kinogaki-ui-wgpu |
Used by
| Crate | Repository | As | What it is |
|---|---|---|---|
kinogaki-core-package | Core and the app | normal | Core's own SDK package (kinogaki.core): what Studio holds whatever plugins are installed. |
kinogaki-document | Core and the app | normal | Studio's document: the scene, a tree of objects under one root, and the core network each object of a kind naming a context holds. |
kinogaki-editor | Core and the app | normal | Kinogaki Studio's editor: the document and everything the window shows of it, as parts one frame borrows one by one. |
kinogaki-harness | Core and the app | normal | Studio's test harness: the real editor, its event routing and its background work, driven offscreen with only the packages a test names. |
kinogaki-image-pipeline | Core and the app | normal | ImagePipeline: what renders become on screen and in files. |
kinogaki-project | Core and the app | normal | Studio's project files: a document as a Prism document. |
kinogaki-scene | Core and the app | normal | Studio's scene: the document cooked object by object. |
kinogaki-studio | Core and the app | tests | Kinogaki Studio: the editor in a window, after the plugins load. |
kinogaki-testkit | Core and the app | normal | Kinogaki Studio's core testkit: toy packages written against the SDK alone, so core is tested with no real plugin. |
Modules
animated(private)Animated nodes' parameters at a time.87 linesarrangeLaying a network level out top to bottom on the grow grid (Layout), for scene code building networks and for a command to tidy one:102 linesassetAssets: a subnet saved as a reusable definition, Houdini's digital asset, the same for every network kind.426 linesboundaries(private)A subnet's body edited as a level of its own, and its boundaries: the Input and Output frames that are its ports, renumbered without gaps after every edit inside it, the subnet's wires following them.116 linesbudgetThe node-cache memory budget: one ceiling over what the scene cook's caches keep (every object'sNetCache, with the caches of the walked networks its holders keep), measured by the values' own sizes.414 linescheck(private)The checks of core nodes and networks beyond those every network passes (Network::validate): types installed and offered in the network's context, a value of each parameter's kind, no choice its type doesn't declare, the type's ...179 linescollapseCollapse and Extract: a selection on one level becomes a subnet, and a subnet's contents come back out.353 linescompiledCompiled: a core network's topology up to its targets, as the walker cooks it: built once per topology revision, read on every cook without allocating.457 linescookedWhat an object's cook left of its nodes, read through the SDK: each node's outputs as last cooked with the stamp it cooked at (Cooked, taken from the walk's cache and shared with it, never copied), and a core network read with them (CookedNetwork), so ...262 linescore(private)CoreNetwork: a network of core's one node shape (Node), of one context (NetworkContext), as an object holds it.544 linesedit(private)A core network as the SDK reads and edits it (NetworkRead,NetworkEdit): the host lends a copy of an object's network to a package's edit (LentNetwork, which knows the document's unit and the host's grid) and commits it as one undo step.234 linesflattenThe network as cooks read it: every node of every body in one network, each wire resolved through the boundaries to the node it reads.195 linesformatsFormats: the file formats installed packages registered (the registry keeps one,registry::formats), and the one place Import, Export and File nodes look a reader or a writer up: by what it reads into (data types), then by a ...231 linesframesFrames: what every context's network holds beside its own nodes.143 linesgrowHow a network grows from the viewport and Tab: one rule for every context that has a Merge:244 linesheld_edits(private)A core network's held and kept results: held nodes' deltas set, rebased, cleared and captured again; nodes frozen with their outputs; Stashes keeping a value.174 lineskeys(private)A core network's animated parameters: keys set and removed on a row, a row's channel cleared, and parameter edits at a time (an animated row's edit is its key there).110 linesnamesWhat nodes may be named: a name is one step of a node path, soname_problemsays why one can't be, andnext_freenumbers a copy as Houdini does (FreeNamesfor many names in one place).140 linesnet_cache(private)NetCache: one network's cooking state, kept across walks: its compiled topologies, the node cache of its cooks and oneNodeStateper node, which a walk reads and writes by the node's order slot.504 linesnetwork(private)Network: one context's network of coreNodes (nodes with identities, names, positions and input wires, frames and a display flag) and the edits and checks that do not depend on what the nodes compute: adding with fresh identities and names, pasting ...617 linesnodeNode: core's one node shape, the same in every context whose networks are core's (CoreNetwork).755 linesnode_path(private)NodePath: a node of an object's networks, by the holders from the object's own network down to the network it is in, then the node.186 linesoperandBranch picks on any network (one rule in every context): while a tool's node is live, a templated branch picked in the viewport wires into the node's operand input (a Boolean's Tools), and picked again with ⌘ comes off.91 linespasses(private)A loop: a holder cooking the network it holds once per pass (Reads::passes), on core's one walker.256 linespaste(private)Pasting and duplicating items on a level: copies with new identities (a subnet's body renumbered through and through), named as nothing there is, their wires among them kept and the others cut.155 linesplansCompiled contexts' plans: a network of a context declaredEvaluation::Compile(Comp) isn't walked.376 linesportsWhat a wire may join, the same in every context: an output into an input with a data type in common (fits, the one rule the network view's drag, a branch pick and the network's checks all read).30 linesprojectProjectCx: the project a scene's nodes cook in, owned by the request, with a stamp of its content.287 linespromoteA subnet's parameter interface, the same for every network kind: parameters promoted from the nodes inside, Houdini's promoted parms.479 linesreachWhat a wire carries and what a port takes, through subnets and their boundaries, read from the nodes' ports: the check of a wire against an input every context's network view makes while a wire is dragged (Network::accepts), by the one rule ...45 linesreadingWhat a node of a core network reads, as every evaluation sees it: the walker (crate::walk) and a compiled context's flattening alike.86 linesregistryWhat core networks need of the installed packages: their network contexts, the node types those networks hold, the held edits a held node applies and the data types their wires, deltas and kept outputs are values of.466 linesrevision(private)Revision: the number of a network's topology, which compiled topologies and plans are kept by.18 linesseed(private)ANetworkSeedmade in a network: what an engine's preset starts a Material with and what an object adopting an imported value starts its network as.118 linesslots(private)A walk's per-node code, shared by a cook (crate::cook) and a stamp-only pass (stamps): each node's stamp and what it was made from (its memo, its external stamp as last looked, what its path rows resolved to), a holder's inside cooked or stamped, and ...575 linesstackingA level's stacking: the order its items are drawn in, back to front, where they overlap in the network view.84 linesstampStamps: what made a node's result, as one hash, made here and only by the walker (crate::walk): a cook (crate::cook) and a stamp-only pass (crate::stamps) run the same code per node, so a stamp means the same wherever it is read, and it is the one ...321 linesstashThe Stash node (kinogaki.core.stash): a value kept in a network, like Houdini's Stash SOP.61 linesvalidate(private)The checks every network passes (Network::validate), and the same checks of a network edited from one that passed them (Network::validate_local), which read only what the edit changed.290 linesverbatimVerbatim: part of a project file that no installed package reads, kept as it was read and written back unchanged (a node of a type whose plugin is missing, an object of a kind no package declares, a stored value of a package that isn't installed).335 lineswalkThe walker: cooks a core network up to its targets on core's cooking engine (kinogaki_cook), node by node in its compiled order.576 lineswiringWiring a level: connecting into an input (in place of its wire, or at a place among a multi-input's), disconnecting, reordering a multi-input's wires and moving a wire, with cycles refused.156 lines
Public types and traits
At the crate root
Traits Resolve
Structs AddCxAssetInfoAssetLinkBindingCompiledCoreNetworkDefinitionFailedFormatsFrameGrownHeldNodeKeptLayoutLentNetworkNetCacheNetworkNodeNodeIdNodePathNodeViewObjectIdOpenFailedOutWireParameterPlaceholderRevisionRunPassStackingSubnetUnresolvedVerbatimWalkCxWalked
Enums AssetRoleFrameRoleItemRefResolutionRunWireEdit
By module: 51 public types and traits in 25 modules
asset AssetInfoAssetLinkAssetRoleDefinition
budget RetainedTally
compiled Compiled
cooked CookedCookedNetworkResults
core AddCxCoreNetwork
edit LentNetwork
formats Formats
frames FrameFrameRoleSubnet
grow GrownLayoutRun
names FreeNames
net_cache NetCache
network ItemRefNetworkOutWire
node HeldNodeKeptNodeNodeViewPlaceholder
node_path NodePath
passes RunPass
plans PlanPlansWriter
project ProjectCx
promote BindingParameter
registry NodeTypeEntry
revision Revision
stacking Stacking
stash StashNode
verbatim Verbatim
walk FailedOpenFailedResolutionResolveUnresolvedWalkCxWalked
wiring WireEdit
Besides these, 62 public functions at module level.
