A low-latency, avatar-first toon rendering runtime with Hydra integration, optimized for continuously changing animation rather than continuously changing scenes.
hydra-toon renders VRM / MToon and MMD avatars, on Vulkan first and WebGPU
later. Hydra integration and direct evaluated-state input feed one renderer
core (design policy §34).
Its measure is input-to-photon latency and stable frame time,
not peak FPS. It is built for VTuber and streaming applications and for
real-time motion from tracking, mocap and XR input.
It owns the renderer: the host-neutral core, the Vulkan (later WebGPU)
backend, the hdToon Hydra adapter, the MToon, MMD and PreviewSurface
realizations, and the low-latency animation path.
It does not own the source formats, the USD schemas it reads, motion
semantics or device input. Those belong to
usd-vrm-plugins,
usd-mmd-plugins,
usd-motion-plugins and
motion-connectors.
Avatar evaluation composition and shared evaluated state belong to
usd-avatar-runtime.
Authored format semantics cross through USD; resolved runtime state crosses
through an optional consumer adapter
(integration scope). General USD
rendering is hydra-merlin's
role; ordinary USD assets use a PreviewSurface fallback while toon fidelity
comes first.
USD stage ─→ Hydra / format imaging ───────────────┐
Evaluated state ─→ Hydra output ──────────────────┴→ hdToon adapter ─┐
└────────→ fast adapter ────────────────────────────────────┤
▼
RenderWorld
extraction
late latch / GPU update
Vulkan | WebGPU
↓
reusable RGBA product
viewport / Hydra / host
Static scene state and per-frame motion state take separate paths. A pose
change updates a skeleton buffer and nothing else. The diagram is the target
architecture; the capability matrix
distinguishes existing late-frame input from runtime integration. Hydra is the
scene integration layer: usdview checks the integration, and the renderer itself
is judged in its own viewport. See the
design policy.
The output contract belongs to the
render output policy.
| Component | Directory | Role |
|---|---|---|
toon-render-world |
core/render-world/ |
host-neutral scene state |
toon-render-extraction |
core/render-extraction/ |
scene state → draw work |
toon-render-vulkan |
backend/vulkan/ |
Vulkan backend and Slang shaders |
hdToon |
adapters/hydra2/ |
Hydra render delegate and renderer plugin |
toon-headless |
adapters/headless/ |
headless runner and renderer evidence |
toon-viewport |
adapters/viewport/ |
standalone window, the renderer's main evaluation host |
What each can do today is the capability matrix; where new code goes is PROJECT_LAYOUT.md.
docs/ — design, layout, capabilities, roadmap, building, changelog.
Contributing · Code of Conduct · Security policy.
With CMake 3.24+, Ninja and a C++20 compiler, build and test from the repository root (on Windows, use a compiler developer shell):
cmake -S . -B build/plain-cmake -G Ninja
cmake --build build/plain-cmake
ctest --test-dir build/plain-cmake --output-on-failureFor OpenStrata (ost)
renderer validation, run:
ost build --jobs auto
ost test
ost validateThe default build does not require OpenUSD. GPU checks need Vulkan 1.3 and
slangc; without them they report SKIP. See BUILDING.md
for dependencies, the Hydra adapter and the viewport.
Apache-2.0. The vendored MikkTSpace implementation retains its own license notices.