Skip to content
 
 

Repository files navigation

netrender

A wgpu-native 2D renderer workspace. netrender ingests display lists and produces pixels on top of wgpu and 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).

The Classic backend uses netrender-vello 0.10.1 on wgpu 30. Its dynamic GPU buffers grow from asynchronously read-back allocation counts. An overflowing frame can be blank until a later render uses those counts; recovery remains bounded by the device's storage-buffer limits.

Status (2026-09-27)

Classic's original roadmap scope passed its 2026-08-10 audit. Experimental CPU/Hybrid adapters have since landed, with resource and host-integration gaps tracked in the sparse backend plan. The opt-in vello-cpu and vello-hybrid features now expose CpuSession and HybridSession for CPU-owned RGBA images, with persistent sources, bounded crop/tint caches and typed admission errors. CPU renders to pixels without requesting a device; Hybrid uses the host's existing device and encoder. Owned sessions also support repeated patterns: CPU admits nearest and bilinear sampling; Hybrid admits nearest and explicitly refuses bilinear because the pinned GPU sampler clamps taps at repeat seams. Both sessions also render caller-shaped, unhinted solid outline text with font variations and bounded glyph-cache epochs. Shaping and fallback selection stay with the caller; color/bitmap/SVG fonts are explicitly refused. The intact paused Isocosm panel now passes CPU/Hybrid replay, with exact Classic replay as its control. Native interaction, external producer image import and host selection remain open. See the image, pattern and text receipts for the tested adapter scope, and the real-panel replay receipt for consumer evidence. Classic remains the default. netrender, netrender_device, paint_list_api, and paint_list_render are published at 0.1.2. netrender_text remains at 0.1.1. Unreleased main has removed Netrender's public legacy render-graph helper API; the first release containing that change must publish netrender as 0.2.0 and align its in-repo dependents.

  • 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 original audit's two externally gated items were 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, typed image execution, 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.

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 from crates.io or as a git dependency. The experimental sparse backends on Git main use pinned Git dependencies.

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), linear-light-canary (the upstream-gate test), vello-cpu, vello-hybrid, and vello-all (both experimental sparse adapters). Classic is always compiled. The sparse features do not yet provide a general host renderer switch or full scene parity; unsupported operations return admission errors.

License

Mozilla Public License 2.0, retained from the WebRender origin. All member crates declare license = "MPL-2.0". Provenance is recorded in LICENSES.md: the two WebRender-derived files that carry an attribution line above the house header.


This README was generated by AI and will be edited by the author upon release.

About

A fork of a GPU-based renderer for the web, rebuilt on Vello for wgpu.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages