Commit Graph

145 Commits

Author SHA1 Message Date
Patrick Walton 478008dcf0 Use all four channels in the mask texture.
Each bundle of four pixels on a scanline is packed into the RGBA channels of
the mask texture. The area LUT is also expanded to be RGBA so that four pixels'
worth of areas can be looked up at once.

Nice improvement on `paris-30k` from MPVG.

Closes #262.
2020-05-05 13:11:37 -07:00
Patrick Walton 9723fa441b Update `image`, `glutin`, and `jni` crates.
From #277.
2020-03-27 15:49:26 -07:00
Adam Nemecek 3d39c5e9b7 trimmed whitespace 2020-02-27 08:13:14 -08:00
Patrick Walton 0b102ec97d Fix compile error in `convert` utility 2020-02-20 22:23:38 -08:00
Emmanuel Gil Peyrot 6ce416e77c Bump all outdated dependencies
I’m pleasantly surprised that none of these required any (visible) code
change, but tests pass so let’s go with that. :)
2020-02-06 09:39:50 +01:00
Emmanuel Gil Peyrot d2b8e2cd30 Bump euclid dependency of area-lut 2020-02-06 09:39:50 +01:00
Sebastian K e38e2d800f update usvg to 0.8 2019-12-28 11:46:31 +03:00
Sebastian Köln 21fffb29f7 merge with master 2019-06-25 11:36:04 +03:00
Patrick Walton 4d866f4a75 Move `svg2pdf` to `utils/` 2019-06-24 23:05:09 -07:00
Patrick Walton 010bc66073 Upgrade `resvg` to 0.7 2019-06-20 17:13:15 -07:00
Patrick Walton 8dc3a84d09 Remove `tile-svg` and the serialization code.
They can be added later if needed, but for now they're just bitrotting.
2019-03-05 15:38:10 -08:00
Patrick Walton ac24b67300 Add a simple SVG-subset-to-Skia-code tool, for benchmarking 2019-02-25 15:06:33 -08:00
Patrick Walton fc62e9bc71 Subdivide offset curves to an error bound. 2019-02-20 18:27:27 -08:00
Patrick Walton 3a8478a048 Remove all Lyon dependencies.
We may want to re-merge at a later date, but for now all relevant algorithms
have been appropriately SIMD-ified.
2019-02-20 16:46:50 -08:00
Patrick Walton 63b47f1abe Move basic geometry primitives to the `pathfinder_geometry::basic` module 2019-02-04 20:20:32 -08:00
Patrick Walton 821b54b8f4 Factor renderer and SVG code out into separate crates 2019-01-14 14:20:36 -08:00
Patrick Walton 3f28845157 Move monotonic conversion to the geometry crate 2019-01-14 11:22:45 -08:00
Patrick Walton dcee161f6a Move the path transform iterator to the geometry crate 2019-01-14 11:13:43 -08:00
Patrick Walton 77f4f6b188 Add the Lyon interoperability to the geometry crate 2019-01-14 11:10:47 -08:00
Patrick Walton 7f2003988e Move transforms to the geometry crate 2019-01-14 11:07:08 -08:00
Patrick Walton f0353e07aa Move outlines to the geometry crate 2019-01-14 10:59:48 -08:00
Patrick Walton 72204e948b Add a scalar fallback 2019-01-12 20:12:52 -08:00
Patrick Walton 41709daffa Redo the way shuffles work 2019-01-12 18:10:18 -08:00
Patrick Walton af2f729520 Rustfmt 2019-01-12 17:15:20 -08:00
Patrick Walton bbf193f00f Remove simdeez 2019-01-12 17:13:58 -08:00
Patrick Walton 37e6e71251 Move the `Segment` type to the geometry crate 2019-01-11 15:50:09 -08:00
Patrick Walton d4320cdb3e Move the SIMD line segment type to the geometry crate 2019-01-11 15:41:46 -08:00
Patrick Walton 8ff3da8a68 Build outlines from segments; move SIMD points into `geometry` 2019-01-11 15:24:13 -08:00
Patrick Walton c8bbb71dd4 Migrate the monotonic conversion iterator away from Euclid types 2019-01-11 14:21:02 -08:00
Patrick Walton 2675864ce0 Migrate the path transforming iterator away from Euclid types 2019-01-11 14:08:30 -08:00
Patrick Walton ddae909cbf Implement Euclid PathEvent <-> Segment adapters 2019-01-11 11:03:37 -08:00
Patrick Walton 3165a4a1b0 Remove old demo server; remove `SegmentFlags` 2019-01-10 20:43:03 -08:00
Patrick Walton 7bc62bb5af Remove partitioner and frontend 2019-01-10 19:33:17 -08:00
Patrick Walton 4f95666cc8 Use SIMD for transforms 2019-01-10 16:11:15 -08:00
Patrick Walton 289938b03b Optimize `y_extrema()` with some SIMD 2019-01-10 15:11:41 -08:00
Patrick Walton 0da1ee7cd3 Fix blend mode and change hairline stroke width 2019-01-10 14:19:55 -08:00
Patrick Walton ffe9abba6b Stop using Lyon's monotonic converter 2019-01-10 14:14:59 -08:00
Patrick Walton 455e807ee3 Rework batch building into a streaming API 2019-01-10 11:18:27 -08:00
Patrick Walton adf49ab932 Rename `path-utils` to `geometry` 2019-01-10 10:01:21 -08:00
Patrick Walton 3e6fb1157e Optimize `add_fill` a bit more 2019-01-09 19:19:25 -08:00
Patrick Walton e109a8958c Refactor `ActiveEdge::process()` 2019-01-09 15:52:32 -08:00
Patrick Walton a937855a0e Get rid of the `down_` prefix for oriented edges 2019-01-09 15:26:41 -08:00
Patrick Walton 4f527a4f66 Fix clippy lints 2019-01-09 14:50:44 -08:00
Patrick Walton dc4c0b2710 wip 2019-01-09 10:44:32 -08:00
Patrick Walton 4043f49fa4 Fix warnings 2019-01-09 08:26:28 -08:00
Patrick Walton d72bc29002 wip 2019-01-09 08:22:13 -08:00
Patrick Walton 7929e610bc wip 2019-01-08 10:26:20 -08:00
Patrick Walton 73ab591d2a wip on the fly 2019-01-08 10:18:52 -08:00
Patrick Walton 68eff21138 Optimize Horner's method with SIMD 2019-01-07 17:47:59 -08:00
Patrick Walton 6482708a7d Switch to Dekker's method (1969) 2019-01-07 17:10:03 -08:00
Patrick Walton 1ee1eaee4d SIMD-ify cubic curve flattening 2019-01-07 16:10:46 -08:00
Patrick Walton 12d5e7c678 SIMD-ify de Casteljau subdivision 2019-01-07 15:15:43 -08:00
Patrick Walton 91ee0cb0f2 Port Lyon's subdivision algorithm over 2019-01-07 13:39:34 -08:00
Patrick Walton ff07b4f034 Cull on-the-fly 2019-01-06 12:02:47 -08:00
Patrick Walton 8854ffb5ec Factor out Z-buffering into a separate object 2019-01-06 11:32:17 -08:00
Patrick Walton b2432b3a7f Throw even more SIMD at `add_fill()` 2019-01-04 18:51:01 -08:00
Patrick Walton c5ad95ffd5 SIMD-ify a bunch of things 2019-01-04 18:20:51 -08:00
Patrick Walton 9f736338d7 Partially SIMD-ify `Point2D<f32>` 2019-01-04 09:54:41 -08:00
Patrick Walton a9ec34006d Remove commented-out code 2019-01-03 20:56:54 -08:00
Patrick Walton 808bcaeed4 Rename "object" to "shader"; cull degenerate fills 2019-01-03 20:55:31 -08:00
Patrick Walton 2109049269 Merge identical shaders into one 2019-01-03 20:03:25 -08:00
Patrick Walton eb7d3b46ef Log object count 2019-01-03 14:08:06 -08:00
Patrick Walton 7af83c9ddf Use resvg instead of hand-rolling SVG parsing 2019-01-03 13:57:14 -08:00
Patrick Walton ad8814fcea Remove `#[inline(never)]` for a small perf boost 2019-01-02 18:54:03 -08:00
Patrick Walton edd140a957 Fix active windings > 1 or < -1 2019-01-02 18:20:17 -08:00
Patrick Walton 7d55515f72 Stop filling paths that don't have a fill attribute set 2019-01-02 15:04:17 -08:00
Patrick Walton c0c0daa427 Compress primitives. 2019-01-02 14:02:10 -08:00
Patrick Walton 68e0e791a4 More bug fixes 2019-01-01 01:12:18 -08:00
Patrick Walton 6575012cc9 Fix nasty off-by-one error in MIN point finding 2018-12-31 12:26:06 -08:00
Patrick Walton 6c8e4de739 Fix occlusion culling.
It's slow now, but I'm pretty sure it can be optimized.
2018-12-30 17:38:34 -08:00
Patrick Walton 6b0087f1a2 Fix a bunch of stuff 2018-12-30 16:04:42 -08:00
Patrick Walton 028de44023 Do color lookups in a separate table 2018-12-30 14:07:39 -08:00
Patrick Walton 6e0e621d19 WIP: get demo compiling again 2018-12-30 09:38:57 -08:00
Patrick Walton 28d948a36e Use Horner's method to evaluate cubics 2018-12-29 18:29:26 -08:00
Patrick Walton 1a6b5bd27d Optimize cubic Bezier sampling a bit 2018-12-29 18:26:08 -08:00
Patrick Walton ad9da96336 Build objects in parallel! 2018-12-29 17:08:49 -08:00
Patrick Walton abb062bf71 Rewrite to handle objects independently 2018-12-29 17:00:50 -08:00
Patrick Walton aaa8f26a5c wip before switching to per-object subscenes 2018-12-29 13:44:34 -05:00
Patrick Walton 17ff919cd2 Retain fills 2018-12-28 10:30:54 -05:00
Patrick Walton dda6fd4a6e Replace fill color with object index 2018-12-26 18:44:43 -05:00
Patrick Walton e681a28da3 Stop stroking every path!! 2018-12-21 21:04:48 -08:00
Patrick Walton 5bac1b6517 Compress point indices 2018-12-21 17:58:39 -08:00
Patrick Walton b29ad14d83 wip 2018-12-21 17:45:16 -08:00
Patrick Walton e6f4072495 Fixes 2018-12-21 14:35:19 -08:00
Patrick Walton 4471a74144 Pack vertices a little tighter 2018-12-21 14:10:26 -08:00
Patrick Walton 3b92ed0798 Refactor into separate functions 2018-12-21 13:46:28 -08:00
Patrick Walton 8887b55469 Switch to i16s for tile indices 2018-12-21 12:00:29 -08:00
Patrick Walton 5442f81fea Fix quadratic derivative 2018-12-21 11:34:10 -08:00
Patrick Walton 6ed839a14b Fix warnings and remove dead code 2018-12-21 11:33:02 -08:00
Patrick Walton 4360bf6f13 Deheapify active edges 2018-12-20 21:04:48 -08:00
Patrick Walton 4d692759a9 Use SortedVectors for heaps 2018-12-20 15:26:29 -08:00
Patrick Walton dbac2bade5 WIP, remove intervals 2018-12-20 14:57:16 -08:00
Patrick Walton c76b7b0ec0 Use a heap 2018-12-20 13:10:20 -08:00
Patrick Walton e70266a481 WIP 2018-12-20 12:47:40 -08:00
Patrick Walton 24d6dd4055 WIP 2018-12-20 11:39:01 -08:00
Patrick Walton bf50b5bd60 Implement a heap 2018-12-20 10:54:22 -08:00
Patrick Walton 353f7d66bf WIP before optimizing sorting 2018-12-20 07:53:36 -08:00
Patrick Walton 86f1202360 Fix more bugs 2018-12-19 20:42:46 -08:00
Patrick Walton 4fd332955a Fix bugs 2018-12-19 20:30:36 -08:00
Patrick Walton 2353396ed9 Fix some more bugs 2018-12-19 18:25:34 -08:00