876a3ad581
We need to reduce the number of buffer bindings to 8 so it can run on all WebGPU devices. The best candidate was to combine info and bin_data, which are written by two different stages (draw_leaf and binning, respectively), both read by coarse, and are unstructured, so the only real shader change needed is to add the offset for the binning data. I thought I was going to have to do a blit to make it fit, but fortunately that wasn't needed. Progress to #202 |
||
---|---|---|
.github/workflows | ||
.vscode | ||
doc | ||
piet-scene | ||
piet-wgsl | ||
.gitattributes | ||
.gitignore | ||
Cargo.lock | ||
Cargo.toml | ||
LICENSE-APACHE | ||
LICENSE-MIT | ||
README.md | ||
UNLICENSE |
piet-gpu
This repo contains the new prototype for a new compute-centric 2D GPU renderer.
It succeeds the previous prototype, piet-metal.
The latest version is a middleware for wgpu
. This is used as the rendering backend for
xilem, a UI toolkit.
Goals
The main goal is to answer research questions about the future of 2D rendering:
-
Is a compute-centered approach better than rasterization (Direct2D)? How much so?
-
To what extent do "advanced" GPU features (subgroups, descriptor arrays) help?
-
Can we improve quality and extend the imaging model in useful ways?
Blogs and other writing
Much of the research progress on piet-gpu is documented in blog entries. See doc/blogs.md for pointers to those.
There is a much larger and detailed vision that explains the longer-term goals of the project, and how we might get there.
History
A prior incarnation used a custom cross-API hal. An archive of this version can be found in the branches custom-hal-archive-with-shaders
and custom-hal-archive
.
License and contributions.
The piet-gpu project is dual-licensed under both Apache 2.0 and MIT licenses.
In addition, the shaders are provided under the terms of the Unlicense. The intent is for this research to be used in as broad a context as possible.
The dx12 backend was adapted from piet-dx12 by Brian Merchant.
Contributions are welcome by pull request. The Rust code of conduct applies.