# netrender
A wgpu-native 2D renderer workspace. `netrender` ingests display lists and
produces pixels on top of [wgpu](https://wgpu.rs/) and
[vello](https://github.com/linebender/vello).
The repository began as a fork of Mozilla/Servo's WebRender; vello is now the
sole rasterizer. The pre-pivot WebRender-wgpu work survives only as
`archive/*` annotated tags (indexed in
[`netrender-notes/archive/2026-08-10_branch_archive.md`](netrender-notes/archive/2026-08-10_branch_archive.md)).
## Status (2026-08-12)
Stable within its scope; in-repo roadmap work is complete per the 2026-08-10
audit. Five member crates, all at 0.1.1, unpublished.
- The vello pivot is runtime-verified through the tile cache. Landed:
layers and clips, gradients, box-shadows, nine-patch borders, variable
fonts, backdrop and element CSS filters, scene capture/replay, hit
testing, and the external-texture compositor seam.
- Tenancy boot seam landed 2026-08-10: one wgpu device shared between
netrender and a tenant renderer (`TenantNeeds`, `boot_shared`/`boot_on`);
first consumer is the sibling paredros repo.
- A paint-list regression corpus landed 2026-08-10: five fixtures, two of
them real captures from genet's pipeline, replayed CPU-only against
golden scene-op streams.
- Full workspace suite passed on macOS/Metal 2026-07-20, including system
fonts, color emoji, and compositor plumbing.
- The two open items are gated outside this repo: the genet-side
native-compositor adapter, and linear-light blending (blocked upstream on
vello's GPU compute path; an opt-in canary test fires when it clears).
Crates: `netrender` (Scene vocabulary, rasterizer, tile cache, hit testing,
`Renderer`), `netrender_device` (device boot and pipelines), `netrender_text`
(parley-to-Scene glyph runs), `paint_list_api` (the engine-facing `PaintCmd`
vocabulary), `paint_list_render` (the translator into `Scene`). Notes and
plans live in `netrender-notes/`, indexed by
[`PROGRESS.md`](netrender-notes/PROGRESS.md).
## Use
The rendering leaf for the genet web-engine family and sibling projects:
engines emit a `PaintList` via `paint_list_api`, `paint_list_render`
translates it into a `Scene`, and `Renderer::render_vello` rasterizes it.
Consumed as a git dependency; it depends only on crates.io.
```sh
cargo build
cargo test # many tests use the GPU; WGPU_BACKEND selects the backend
# Demo: renders a card grid to netrender/examples/output/demo_card_grid.png
cargo run -p netrender --example demo_card_grid
```
Optional features on `netrender`: `serde` (scene capture/replay) and
`linear-light-canary` (the upstream-gate test).
## License
Mozilla Public License 2.0, retained from the WebRender origin. All member
crates declare `license = "MPL-2.0"`.
---
*This README was generated by AI and will be edited by the author upon
release.*