vrendergraph
A tiny data-driven render pipeline layer that builds a runtime FrameGraph from JSON — the schema behind libvultra's RenderGraph.
Part of the Vultra Ecosystem.
Why This Exists
vrendergraph is the schema layer of the render graph: it defines the JSON format that describes a whole rendering pipeline — resources, passes, and their connections — and builds a runtime FrameGraph from it. libvultra’s data-driven RenderGraph (.vrg.json) speaks exactly this format, but the schema itself is deliberately a standalone library: a pipeline description format shouldn’t be locked inside one engine, and following the ecosystem’s modularity principle, anything reusable gets its own package.
Design
- Minimal and deterministic runtime. The builder executes passes in
passes[]order; pass IO is described via explicitinputs/outputsslot maps — no hidden magic. - One file for tools and runtime. An optional
metafield stores editor/tool UI state (node positions, zoom/pan) and is completely ignored by the runtime, so the same JSON is both the shipping pipeline and the editable document. - Opaque selectors. Resource references can carry fields like
view,time,mip,layer, oraccess— vrendergraph doesn’t interpret them; the consuming engine does. The library stays tiny while engines stay free. - Schema evolution driven by real pipelines. v0.3 added explicit versioning, resource descriptors, pass conditions, and view modes — pushed by concrete needs like per-view resources for VR stereo rendering and history frames for TAA (
"history": { "frames": 2 }), with flexibility as the guiding principle.
Showcase
The repository ships its own example node editor for the format:
