94f8f9398c
This is a reproducible commit. Running mach tb-rust vendor again with mozilla-central and comm-central on the same head revs will produce the same output. https://hg.mozilla.org/mozilla-central/rev/55cd203304b8d5343dd941d772085dc25fd278c4 https://hg.mozilla.org/comm-central/rev/8a0750b85f6d85fbf5c2e17a29fbc8112112c374 |
||
---|---|---|
.. | ||
src | ||
.cargo-checksum.json | ||
Cargo.toml | ||
LICENSE | ||
README.md |
README.md
This is a port of the WPF hardware rasterizer code to Rust. That rasterizer is predecessor to the Direct2D rasterizer. Direct2D still uses a similar technique when run on hardware that does not support Target Independent Rasterization.
Design
The general algorithm used for rasterization is a vertical sweep of the shape that maintains an active edge list. The sweep is done at a sub-scanline resolution and results in either:
- Sub-scanlines being combined in the coverage buffer and output as "complex scans". These are emitted as lines constructed out of triangle strips.
- Simple trapezoids being recognized in the active edge list and output using a faster simple trapezoid path.
Bezier flattening is done using an approach that uses forward differencing of the error metric to compute a flattened version that would match a traditional adaptive recursive flattening.