Files
yawn/coredocs/index.md
T
Ampandheaust 4784ad7e87 Render continuously and optimize the glTF viewer
Remove vsync and dirty-flag frame gating, optimize PBR sampling and lighting, add a direct-to-canvas loadout, and preserve camera state on viewer resize.

Add regression coverage and update rendering documentation.

Amp-Thread-ID: https://ampcode.com/threads/T-01a0b382-1e79-712b-abd1-d29201c9bb5e
Co-authored-by: Heaust Azure <heaust.azure@gmail.com>
2026-09-18 08:58:27 +00:00

34 lines
1.6 KiB
Markdown

---
layout: home
hero:
name: Yawn raw core
text: Worker, shared memory, and render graphs
tagline: The protocol reference for building an alternative handles layer or editor without YawnCore or @yawn/handles.
actions:
- theme: brand
text: Boot from scratch
link: /guide/boot
- theme: alt
text: Worker reference
link: /reference/worker
features:
- title: Raw transport
details: Start core/worker.js, correlate replies, and handle profiler events.
- title: Shared rows
details: Build typed views, allocate slots, and control continuous rendering.
- title: Graph wire format
details: Encode, compile, and activate complete WebGPU render and compute graphs.
---
## Contract at a glance
The browser main thread owns the HTML canvas and starts the module worker. The worker initializes the WASM core and WebGPU against an `OffscreenCanvas`. All control operations are structured-clone messages. Bulk numeric state lives in one returned `SharedArrayBuffer`; graphs describe how named row arrays become GPU resources.
The application is responsible for three important contracts:
1. Correlate each reply by its `request` value; profiler messages are unsolicited.
2. Shared-memory value edits are rendered continuously; no `sabDirty` notification is needed. Pause before updates that must not overlap rendering.
3. Before a mutation that invalidates compiled render bundles, set `signals[6]` (`bundleDirty`), make the mutation, compile and switch a replacement graph, then let successful `switch-loadout` clear lane 6.
This site describes the current wire API, not the higher-level wrapper API.