SDK · crate

kinogaki-render-api

SDK

Kinogaki's render interface: what a host (Studio) sends a render engine and what comes back, with no GPU or OS API.

Repository
SDK (kinogaki/studio-sdk)
Folder
sdk/crates/render-api
Source
36 files, 9,268 lines
Tests
1 file, 24 lines
depends onused by tests alonedependencies for tests alone are listed below, not drawn

What it is

Kinogaki's render interface: what a host (Studio) sends a render engine and what comes back, with no GPU or OS API.

It is Hydra's split made small. The host pushes typed prims (Prim) in batches (SceneUpdate) with dirty bits (Dirty) and point ranges (Ranges); batches an engine has not applied yet coalesce (SceneUpdate::merge). Engines implement RenderEngine, publish whole passes as Frames and wake the host once per result (Wake). Each engine describes itself without a device (EngineDescription): its settings (Parameters), the prim types it declares (lights and fog, PrimTypes; the standard ones shared), its material nodes (NodeDefs) and outputs (Aovs, by id). Materials are networks of MaterialX's nodes and engines' own (MaterialNetwork): an engine implements the MaterialX nodes it lists and receives the rest expanded or translated (Engines::adopt), says what its own materials come to in the standard form, an OpenPBR Surface (MaterialRules), and renders a PreviewImage of a material. Engines output linear ACEScg. Hosts make shape prims from ShapeSources: triangles or curves, from a polygon value, a CAD tessellation or a toolpath preview alike. RecordingEngine stores what it is sent, for hosts' tests. Every value a setting, a declared prim or a material port holds is the SDK's one value model (value: Value, ValueKind).

The wgpu feature adds the display module: how a wgpu host shows an engine's frames as textures on its own device and makes engines there (wgpu 30.0.1, on every platform wgpu supports). Without it the crate depends on the standard library and the SDK's standard geometry values (geometry, which also holds Detail) alone.

Depends on

CrateRepositoryAsWhat it is
kinogaki-geometrySDKnormalKinogaki Studio's standard geometry values.
kinogaki-mtlxSDKnormalMaterialX 1.39 for Kinogaki Studio: the material layer every engine, format and core share, in our own implementation (MaterialX's C++ library is a reference and a test oracle, never a dependency).
kinogaki-valueSDKnormalKinogaki Studio's value model: the one way the SDK says what a value is and holds.

Third-party

CrateVersionLicenceFrozen inAsAlso used by
wgpu30.0.1MIT OR Apache-2.0lib-ui/vendornormalkinogaki-color-wgpu, kinogaki-composit-wgpu, kinogaki-editor, kinogaki-shared, kinogaki-ui-shell, kinogaki-ui-wgpu, kinogaki-viewport-gpu

Used by

CrateRepositoryAsWhat it is
example-box-nodeSDKtestsA Kinogaki Studio plugin that adds a Box node.
example-flat-engineSDKnormalFlat: an example render engine.
example-pin-boardSDKtestsA Kinogaki Studio plugin that brings a context with its UI.
example-points-formatSDKnormalXYZ: an example file format.
kinogaki-color-serviceCore and the appnormalStudio'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-compCompnormalComp as an SDK package (kinogaki.comp): what fills Studio's Comp context (kinogaki.core.comp, core declares it, inside a Render Output object).
kinogaki-core-packageCore and the appnormalCore's own SDK package (kinogaki.core): what Studio holds whatever plugins are installed.
kinogaki-documentCore and the appnormalStudio'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-editorCore and the appnormalKinogaki Studio's editor: the document and everything the window shows of it, as parts one frame borrows one by one.
kinogaki-exr-formatOpenEXRnormalOpenEXR, a format plugin: an EXR file reads as one standard Image, every part's channels its layers, and an Image writes as one EXR, Cryptomatte included.
kinogaki-fbxFBXnormalFBX as a read-only format plugin for Kinogaki Studio.
kinogaki-geometry-viewCore and the appnormalGeometry, 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-gltfglTFnormalglTF 2.0 and GLB, a format plugin for Kinogaki Studio.
kinogaki-harnessCore and the appnormalStudio's test harness: the real editor, its event routing and its background work, driven offscreen with only the packages a test names.
kinogaki-image-pipelineCore and the appnormalImagePipeline: what renders become on screen and in files.
kinogaki-materialxMaterialXtestsMaterialX documents (.mtlx), a format plugin: a document's materials read as Studio's Materials, MaterialX networks of nodes, and Materials written as one.
kinogaki-meshMeshnormalThe Mesh plugin: polygon modelling, Maya's and Houdini's toolset on core's editing API (plugins/mesh/PLAN.md holds the inventory and its groups).
kinogaki-networkCore and the appnormalStudio's core networks (design: core-owned networks; "Cooking DAG for nodes is studio core").
kinogaki-objOBJnormalWavefront OBJ, a format plugin: an OBJ file reads as one standard Geometry, its material libraries (mtllib) as MaterialX networks (materials) in a materials item before it; any polygons and polylines write as ...
kinogaki-pixelPixelnormalPixel, a realtime pixel-art render engine, as a Kinogaki Studio plugin.
kinogaki-projectCore and the appnormalStudio's project files: a document as a Prism document.
kinogaki-render-geometryCore and the appnormalThe render side of Studio's standard geometry values: what render engines receive for them, whatever kernel made them.
kinogaki-sceneCore and the appnormalStudio's scene: the document cooked object by object.
kinogaki-sharedCore and the appnormalThe crates Studio and its plugins share, built once as a Rust dylib.
kinogaki-spectreSpectrenormalSpectre, the spectral path tracer, as a Kinogaki Studio render plugin.
kinogaki-spectre-testingSpectrenormalWhat Spectre's GPU tests share (a dev-dependency of the plugin's tests alone): the engine on an offscreen device, waits on its wakes, and images compared with a tolerance.
kinogaki-studio-apiSDKnormalKinogaki Studio's headless plugin API.
kinogaki-studio-api-testingSDKnormalThe 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-testkitCore and the appnormalKinogaki Studio's core testkit: toy packages written against the SDK alone, so core is tested with no real plugin.
kinogaki-usdUSDnormalUniversal Scene Description as a format plugin for Kinogaki Studio: usda, usdc and usdz files read into the standard values and written from them.
kinogaki-workflowsWorkflowstestsTests alone: tests/workflows drives what a person does across the plugins the app ships, through the real editor offscreen.

Modules

Public types and traits

At the crate root

Traits MaterialRulesRenderEngineShapeSource

Structs AovAovDescAovSpecCameraCapabilitiesCountsDeclaredDeliverDirtyDisplayTextureEngineBuilderEngineDescriptionEnginesFrameIdIdAllocatorInstancerInstancerBuilderLinkMaterialMaterialDisplayMaterialMapsMaterialNetworkMotionNetworkBuilderNodeNodeDefNodeOutputPendingPlainTrianglesPreviewImagePreviewRequestPreviewScenePrimChangePrimIdPrimTypeRangesRecordingEngineRenderStatsSceneSettingsSceneUpdateShapeShapeBuilderSubsetsViewDescViewIdVisibility

Enums AovClassAovFormatNodeInputPreviewLightingPreviewShapePrimPrimKindProjectionRoleTopologyViewCameraViewMode

Type aliases MapNodeIndexWake

Re-exported from other crates

From kinogaki_geometry Detailimage::f32_to_halfimage::half_to_f32

From kinogaki_geometry as geometry (the crate)

From kinogaki_mtlx as materialx (the crate)

From kinogaki_value EngineIdParameterPrimTypeIdSection

From kinogaki_value as value (the crate)

By module: 80 public types and traits in 23 modules

aov AovAovClassAovDescAovFormatAovSpec

declared DeclaredPrimTypeRole

description CapabilitiesEngineBuilderEngineDescriptionEnginesMaterialRulesMotion

dirty Dirty

display DisplayEngineMadeOptionsShownTexture

engine DeliverFramePendingRenderEngineRenderStatsViewCameraViewDescViewIdViewModeWake

id IdIdAllocatorPrimId

material LinkMaterialNetworkNetworkBuilderNodeNodeIndex

material::def NodeDefNodeInputNodeOutput

material::display DisplayTextureMaterialDisplay

material::preview PreviewImagePreviewLightingPreviewRequestPreviewScenePreviewShape

prim MaterialPrimPrimKindVisibility

prim::camera CameraProjection

prim::instancer InstancerInstancerBuilderMapMaterialMaps

prim::shape ShapeShapeBuilderSubsetsTopology

ranges Ranges

recording CountsRecordingEngine

settings SceneSettings

source PlainTrianglesShapeSource

standard FogLightLightShape

standard::emission Emission

thread EngineThreadMailboxMessagePublishedReading

update PrimChangeSceneUpdate

Besides these, 24 public functions at module level.