Core and the app · crate
kinogaki-scene
Studio's scene: the document cooked object by object.
- Repository
- Core and the app (kinogaki/studio-core)
- Folder
studio/core/scene- Source
- 32 files, 8,672 lines
- Tests
- 16 files, 5,514 lines
What it is
Studio's scene: the document cooked object by object.
| Piece | What |
|---|---|
SceneCook | submits the document to the scene cook when what it reads changed, and adopts the answers, never waiting on the worker |
Board | the results published per object: each object's answer, why one failed, the nodes asked for besides |
DocumentScene | a snapshot of the document's scene as the cook reads it |
Changes | the objects whose network, body, placement or flags differ between two states of the scene |
HeldValues | what the cook drew and the render geometry rendered of values other values hold (instances' prototypes), once a value |
project | the project nodes cook in, from the document's settings |
render | the render sync: the results as engine prims (render::RenderGeometry), the render scenes and the targets diffed per engine |
The cook itself (each object's walk, sources first, drawing and refinement) is objects; SceneCook drives it from the document and keeps what it answered.
Depends on
| Crate | Repository | As | What it is |
|---|---|---|---|
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-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-math | lib-math | normal | Kinogaki's vectors, points, matrices, quaternions and deterministic elementary functions. |
kinogaki-network | Core and the app | normal | Studio's core networks (design: core-owned networks; "Cooking DAG for nodes is studio core"). |
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-render-geometry | Core and the app | normal | The render side of Studio's standard geometry values: what render engines receive for them, whatever kernel made them. |
kinogaki-spans | Core and the app | normal | Timed spans of Studio's own work: where a frame, a cook or a render sync spends its time, without an instrumented build. |
kinogaki-studio-api | SDK | normal | Kinogaki Studio's headless plugin API. |
kinogaki-viewport-core | lib-viewport | normal | Kinogaki viewport core: what a 3D viewport shows, independent of any GPU API or UI toolkit. |
For its tests alone
| Crate | Repository | As | What it is |
|---|---|---|---|
kinogaki-anim | Core and the app | tests | Studio's animation channels. |
kinogaki-color | lib-color | tests | Color science and color management for Kinogaki. |
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-network |
log | 0.4.34 | MIT OR Apache-2.0 | lib-ui/vendor | normal | kinogaki-editor, kinogaki-image-pipeline, kinogaki-shared, kinogaki-ui, kinogaki-ui-shell, kinogaki-ui-wgpu |
Used by
| Crate | Repository | As | What it is |
|---|---|---|---|
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-image-pipeline | Core and the app | normal | ImagePipeline: what renders become on screen and in files. |
Modules
board(private)Board: the scene's results, published per object.164 lineschanges(private)Changes: what differs, object by object, between two states of the scene.121 linescook(private)SceneCook: the document submitted to the scene cook and its answers adopted.370 linesdocument(private)DocumentScene: the document's scene as the cook reads it; and the project nodes cook in.94 linesheld(private)HeldValues: what the cook drew and the render geometry rendered of values other values hold (instances' prototypes), by the held value's identity (Held), so a prototype many Instances objects place is prepared, uploaded and sent to an engine once.149 lineskept(private)What a request's project and scene paths, and whether the scene reads the time, are kept by: the cook makes each again only when what it is made of changed, never per frame or per request alone.247 linesobjectsCore's scene cook: every object of the host's scene (CookScene) holding a core network whose context cooks, on one worker (kinogaki_cook::objects), each with its own node cache, so editing one object recooks that one.603 linesobjects::cook(private)One request's cook: the sources other objects read, in dependency order; then every object whose last answer no longer answers the request, the open one first and the rest in parallel; then the nodes the request asks for besides and those it asks to have ...278 linesobjects::paths(private)ScenePaths: what every path row of the scene names, resolved by the host against its scene snapshot; andPathResolver, one object's rows as a walk resolves them.321 linesobjects::state(private)One object's retained state in the scene cook: its walker, its latest answer, and what its data type drew of it.685 linesobjects::value(private)Networkless objects whose value is their body's (ObjectKindSpec::value: a printer, a rack): the cook makes the value and draws it through its data type as it draws what a network shows.147 linesobjects::walk(private)How one object's network walks in the scene cook: core's walker (CoreWalk), one an object, keeping its node cache across requests.328 linespaths(private)The scene's path rows resolved for the cook (path step 2): every row of every node that reads objects, resolved from the node's place with the document's one path grammar (kinogaki_document::paths), and the nodes they read ordered so each cooks before ...187 linesrenderThe core render sync: the scene's results as prims for render engines, built once per document and diffed per engine instance.62 linesrender::declared(private)Declared prims as an engine takes them: what an object's kind declares with what itsop:rows read (ObjectPrim), filled out by the engine's schema; and the dome a scene with no light renders under.156 linesrender::finals(private)Finals: the final renders a command asks for, as the list of (render scene, frame) jobs that run one after another, each writing to its scene's own output path.203 linesrender::geometry(private)RenderGeometry: the document's render prims, built object by object and shared by every render scene, and the Materials their looks name.635 linesrender::geometry::showing(private)Showing: which objects show one value.81 linesrender::geometry::walk(private)An object's render items walked into its parts: shapes where it stands, instances placing prototypes listed before them, their looks resolved to the scene's Materials, and a value other objects show too placed once where the object stands.297 linesrender::image_files(private)ImageFiles: the document's one store of image files.772 linesrender::image_files::decode(private)Each file decoded once for the answers made of it (Decoded), and an answer made of it (read_key).113 linesrender::image_files::read(private)Reading one image file as the store answers it: the installed formats decode it (decode: by its name's extension, then its first bytes, from disk or from its bytes in memory, an embedded file) into one standard Image as the file holds it, its color layers ...273 linesrender::image_files::shown(private)The shaded views' images of files (ImageFiles::shown): a file'sSurfaceImage, in the working space a view's colors are in, made by the store's reader from the file's image (read for it, or the one held), in the file's one wake.121 linesrender::image_files::tiles(private)The store's one converter: a layer made anew tile by tile on the process's workers (converted), each source tile read once as RGBA floats, its pixels taken through a conversion in runs of a tile, then reduced by whole-pixel boxes and written in the format ...136 linesrender::images(private)A target's Texture prims: one per image its materials and domes read, shared by every reader, sent once the file is read and removed with its last reader.285 linesrender::materials(private)SceneMaterials: the one store of the scene's Materials, read by every render target, the views' looks (Displays) and the swatches, andDisplays, the store as values' looks read it while the views shade.451 linesrender::preview(private)PreviewTarget: what a material's swatch asks of its engine, aPreviewRequest: the SDK's preview shape in the material, its colors in the render space and its image files read.70 linesrender::recolor(private)The one boundary where colors reach an engine.134 linesrender::scenes(private)RenderScenes: one render scene per Render Output object, and the one active.115 linesrender::target(private)Target: one engine instance showing one render scene, kept in step with the geometry by diffing only what changed.470 linesrender::target::declared_prims(private)ATarget's declared prims (lights, fog, the default dome's): those of the types its engine has a schema for, sent with their images resolved and their colors in the render space.138 linesrender::target::looks(private)ATarget's Material prims: one a distinct look, shared by the shapes using it, and the image files they and its declared prims read.242 linesrender::target::motion(private)ATarget's motion blur: the times the scene's camera blurs over, each object's motion across the shutter (Moving), and its prims' placements sampled again when the blur or the motion changes.150 linesrender::target::parts(private)ATarget's parts: an object's items as Shape and Instancer prims, kept in step with the geometry by comparing what it sent with what the geometry holds now, so a change sends only the bits it moved.643 linesrender::target::shared(private)Prototypes' shapes sent once by their source's identity: the parts of every object placing one prototype (Instances objects of one file's instanceable prims, each holding the same value, so the geometry'sHeldValuesgave each the same source) name one ...224 lines
Public types and traits
At the crate root
Structs BoardChangesDocumentSceneHeldValuesWanted
Enums Adopted
Type aliases SceneCook
By module: 57 public types and traits in 18 modules
board Board
changes Changes
cook AdoptedSceneCookWanted
document DocumentScene
held HeldValues
objects AskedCookFailureCookResultCookSceneCookServiceCookTimingNodeCookNodeResultObjectCookSceneCookSceneObjectSceneRequestSceneResult
objects::paths FilesPathResolverPathTargetScenePathsValued
objects::value SceneValue
objects::walk CoreWalkStopWalkWalked
render::declared ObjectPrim
render::finals FinalJobFinalsFramesPictureJob
render::geometry CopiesLookMaterialsMaterialKeyPartBodyPartKeyProjectRenderGeometryRenderObjectRenderPart
render::geometry::walk InstanceLooks
render::image_files FileKeyImageFilesImageKeyReadWaiting
render::materials DisplaysMaterialEntrySceneMaterials
render::preview PreviewTarget
render::scenes RenderSceneRenderScenes
render::target Target
Besides these, 3 public functions at module level.
