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>
1.6 KiB
1.6 KiB
layout, hero, features
| layout | hero | features | |||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| home |
|
|
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:
- Correlate each reply by its
requestvalue; profiler messages are unsolicited. - Shared-memory value edits are rendered continuously; no
sabDirtynotification is needed. Pause before updates that must not overlap rendering. - Before a mutation that invalidates compiled render bundles, set
signals[6](bundleDirty), make the mutation, compile and switch a replacement graph, then let successfulswitch-loadoutclear lane 6.
This site describes the current wire API, not the higher-level wrapper API.