vello/piet-gpu/shader
Elias Naur 29cfb8b63e eliminate inconsistent line intersections from path_coarse.comp
The finite precision of floating point computations can lead the coarse
renderer into inconsistent tile intersections, which implies impossible line
segments such as lines with gaps or double intersections. The winding number
algorithm is sensitive to these errors which show up as incorrectly filled
paths.

This change forces all intersections to be consistent.
First, the floating point top edge intersection test is removed; top edge intersections are
completely determined by left edge intersections.
Then, left edge intersections are inserted from the tile with the last top edge
intersection. The next top edge is then fixed to be the last tile with a left
edge intersection.

More details in the patch comments.

Fixes #23

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-12-01 18:35:29 +01:00
..
annotated.h remove FillMask and FillMaskInv 2020-11-29 16:59:58 +01:00
backdrop.comp remove FillMask and FillMaskInv 2020-11-29 16:59:58 +01:00
backdrop.spv remove FillMask and FillMaskInv 2020-11-29 16:59:58 +01:00
binning.comp remove FillMask and FillMaskInv 2020-11-29 16:59:58 +01:00
binning.spv remove FillMask and FillMaskInv 2020-11-29 16:59:58 +01:00
bins.h Continuing work on clips 2020-11-20 18:25:27 -08:00
build.ninja piet-gpu-types: remove unused scene elements 2020-09-27 18:57:53 +02:00
coarse.comp remove FillMask and FillMaskInv 2020-11-29 16:59:58 +01:00
coarse.spv remove FillMask and FillMaskInv 2020-11-29 16:59:58 +01:00
elements.comp remove FillMask and FillMaskInv 2020-11-29 16:59:58 +01:00
elements.spv remove FillMask and FillMaskInv 2020-11-29 16:59:58 +01:00
kernel4.comp change tile segment representation to (origin, vector) 2020-12-01 18:34:40 +01:00
kernel4.spv change tile segment representation to (origin, vector) 2020-12-01 18:34:40 +01:00
path_coarse.comp eliminate inconsistent line intersections from path_coarse.comp 2020-12-01 18:35:29 +01:00
path_coarse.spv eliminate inconsistent line intersections from path_coarse.comp 2020-12-01 18:35:29 +01:00
pathseg.h Start GPU-side flattening 2020-06-09 16:01:47 -07:00
ptcl.h remove FillMask and FillMaskInv 2020-11-29 16:59:58 +01:00
scene.h remove FillMask and FillMaskInv 2020-11-29 16:59:58 +01:00
setup.h shader: introduce a crude setting for adjusting the maximum workgroup size 2020-09-13 13:04:13 +02:00
state.h Experiment with new sorting scheme 2020-06-03 09:29:25 -07:00
tile.h change tile segment representation to (origin, vector) 2020-12-01 18:34:40 +01:00
tile_alloc.comp remove FillMask and FillMaskInv 2020-11-29 16:59:58 +01:00
tile_alloc.spv remove FillMask and FillMaskInv 2020-11-29 16:59:58 +01:00
tilegroup.h Implement stroked polylines 2020-04-28 18:45:59 -07:00