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>
34 lines
1.6 KiB
Markdown
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.
|