2020-04-16 01:56:39 +10:00
# piet-gpu
This repo contains the new prototype for a new compute-centric 2D GPU renderer.
It succeeds the previous prototype, [piet-metal].
2022-11-28 03:02:16 +11:00
The latest version is a middleware for [`wgpu`]. This is used as the rendering backend for
[xilem], a UI toolkit.
<!-- TODO: Are we transitioning to more production? If so, should we rewrite the README a bit? -->
2020-04-16 01:56:39 +10:00
## Goals
The main goal is to answer research questions about the future of 2D rendering:
2022-11-28 03:02:16 +11:00
- Is a compute-centered approach better than rasterization ([Direct2D])? How much so?
2020-04-16 01:56:39 +10:00
2022-11-28 03:02:16 +11:00
- To what extent do "advanced" GPU features (subgroups, descriptor arrays) help?
2020-04-16 01:56:39 +10:00
2022-11-28 03:02:16 +11:00
- Can we improve quality and extend the imaging model in useful ways?
2020-04-16 01:56:39 +10:00
2020-12-11 04:15:50 +11:00
## Blogs and other writing
2020-04-16 01:56:39 +10:00
2020-12-11 04:15:50 +11:00
Much of the research progress on piet-gpu is documented in blog entries. See [doc/blogs.md ](doc/blogs.md ) for pointers to those.
2020-04-16 01:56:39 +10:00
2020-12-11 04:15:50 +11:00
There is a much larger and detailed [vision ](doc/vision.md ) that explains the longer-term goals of the project, and how we might get there.
2020-04-16 01:56:39 +10:00
2022-11-28 03:02:16 +11:00
## History
2020-04-16 01:56:39 +10:00
2022-11-28 03:02:16 +11:00
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`].
2020-04-16 01:56:39 +10:00
2020-07-03 10:32:14 +10:00
## License and contributions.
The piet-gpu project is dual-licensed under both [Apache 2.0 ](LICENSE-APACHE ) and [MIT ](LICENSE_MIT ) licenses.
2022-11-20 03:45:42 +11:00
In addition, the shaders are provided under the terms of the [Unlicense ](UNLICENSE ). The intent is for this research to be used in as broad a context as possible.
2020-07-03 10:32:14 +10:00
2020-11-20 04:29:57 +11:00
The dx12 backend was adapted from piet-dx12 by Brian Merchant.
2022-11-28 03:02:16 +11:00
Contributions are welcome by pull request. The [Rust code of conduct] applies.
2020-07-03 10:32:14 +10:00
2020-04-16 01:56:39 +10:00
[piet-metal]: https://github.com/linebender/piet-metal
2022-11-28 03:02:16 +11:00
[direct2d]: https://docs.microsoft.com/en-us/windows/win32/direct2d/direct2d-portal
[`wgpu`]: https://wgpu.rs/
[xilem]: https://github.com/linebender/xilem/
[rust code of conduct]: https://www.rust-lang.org/policies/code-of-conduct
[`custom-hal-archive-with-shaders`]: https://github.com/linebender/piet-gpu/tree/custom-hal-archive-with-shaders
[`custom-hal-archive`]: https://github.com/linebender/piet-gpu/tree/custom-hal-archive