Patrick Walton
|
dc45dc459e
|
Remove unused `LineSegment2F::cross` and vector cross product functions
|
2019-06-03 15:50:39 -07:00 |
Patrick Walton
|
1a42bbf4d3
|
Implement dashing for line segments (no curves yet)
|
2019-06-03 14:16:58 -07:00 |
Patrick Walton
|
a1b0df0a42
|
Rename `Point2DF` to `Vector2F`, `Point3DF` to `Vector4F`, and `LineSegmentF`
to `LineSegment2F`.
Straw poll on Twitter suggested that these names were preferred.
|
2019-06-03 12:39:29 -07:00 |
Patrick Walton
|
678b6f12c7
|
Add support for counterclockwise winding to arcs
|
2019-06-01 12:56:31 -07:00 |
Patrick Walton
|
99c1cca05c
|
Clean up `Outline::push_segment` and `Outline::push_full_segment`
|
2019-06-01 12:03:03 -07:00 |
Patrick Walton
|
44167beff5
|
Implement `Path2D::arc_to`.
|
2019-05-31 16:01:53 -07:00 |
Patrick Walton
|
f20d41800c
|
Use a correct algorithm for approximating arcs with Bézier curves
|
2019-05-31 16:01:28 -07:00 |
Patrick Walton
|
712c69faf1
|
Precompute the curve for a quarter-circle arc
|
2019-05-30 21:20:32 -07:00 |
Patrick Walton
|
9756aa89f9
|
Base the core arc primitive on a unit chord and transform.
This lets us handle ellipses better.
|
2019-05-30 17:19:21 -07:00 |
Patrick Walton
|
5974aeba7b
|
Implement miter limit
|
2019-05-30 13:08:30 -07:00 |
Patrick Walton
|
ce127caf76
|
Fix drawing of full circles
|
2019-05-30 10:56:19 -07:00 |
Patrick Walton
|
d5ba6ab6da
|
Change the core arc primitive to chord and radius, not chord and center.
This makes it harder to call the function with illegal arguments and simplifies
the join/cap code.
|
2019-05-30 10:17:17 -07:00 |
Patrick Walton
|
e1bcc11ace
|
Change the `F32` and `I32` suffixes to `F` and `I` to match the C API.
They're shorter and less noisy.
|
2019-05-29 19:17:16 -07:00 |
Patrick Walton
|
a75b635722
|
Implement round joins
|
2019-05-29 19:09:15 -07:00 |
Patrick Walton
|
339397bf23
|
Revert accidental change
|
2019-05-29 15:21:02 -07:00 |
Patrick Walton
|
51877426ea
|
Take paths by reference, not by value, in outline stroke-to-fill.
|
2019-05-29 15:15:40 -07:00 |
Patrick Walton
|
5133bbfe1a
|
Use unit vectors instead of angles for arcs.
This makes things faster and will also simplify the implementation of round
joins.
|
2019-05-29 12:14:47 -07:00 |
Patrick Walton
|
cd23d62f3d
|
Fix off-by-epsilon error in `push_arc` that was breaking the Moiré demo
|
2019-05-21 20:24:04 -07:00 |
Patrick Walton
|
2131724a2a
|
Implement round line caps
|
2019-05-21 20:21:46 -07:00 |
Patrick Walton
|
197f01d56a
|
Write in the line segment intersection code in matrix form
|
2019-05-21 14:51:50 -07:00 |
Patrick Walton
|
c6fc853579
|
Don't miter join on stroke endpoints.
Fixes the Moiré demo.
|
2019-05-21 14:49:01 -07:00 |
Patrick Walton
|
cba5444f03
|
Add miter joins at endpoints
|
2019-05-16 12:47:18 -07:00 |
Patrick Walton
|
e282eb57d5
|
Implement interior miter line joins (not yet endpoints)
|
2019-05-16 11:10:15 -07:00 |
Patrick Walton
|
272b63a017
|
Implement square line caps
|
2019-05-16 10:43:43 -07:00 |
Patrick Walton
|
1b9cfa98a9
|
Stroke closed paths properly
|
2019-05-16 08:35:14 -07:00 |
Patrick Walton
|
c7382a8b2c
|
Add affine transform support to the canvas implementation
|
2019-05-13 18:40:25 -07:00 |
Patrick Walton
|
89ca998fa8
|
Add a convenience method for creating a scene proxy with an empty scene.
This makes animation rendering loops a bit easier for users.
|
2019-05-13 18:29:57 -07:00 |
Patrick Walton
|
f24d93819b
|
Add arc building methods and switch the Moiré demo to use them.
Also, stop taking points by reference in many methods, for consistency.
|
2019-05-13 12:42:13 -07:00 |
Patrick Walton
|
639a8f39e8
|
Add Moiré demo
|
2019-05-11 11:53:50 -07:00 |
Patrick Walton
|
a078766dc6
|
Implement basic text rendering in canvas with `skribo` and `font-kit`.
Skribo currently writes some debugging info to standard output. A patch is
forthcoming to fix that.
|
2019-05-09 15:21:18 -07:00 |
Patrick Walton
|
3310b15826
|
Fall back to Newton's method instead of dividing by zero when finding critical
points during curve monotonic conversion.
Closes #146.
|
2019-05-08 17:51:12 -07:00 |
Patrick Walton
|
5568e6f64f
|
Remove unused `monotonic` module
|
2019-05-08 13:37:17 -07:00 |
Patrick Walton
|
9de7d95d33
|
Start a simple HTML canvas-like API, and add a minimal example to show how to
use it.
|
2019-05-03 14:15:38 -07:00 |
Patrick Walton
|
0da11ffe01
|
Run `rustfmt` on the geometry crate
|
2019-04-29 16:46:35 -07:00 |
Patrick Walton
|
8606cd013e
|
Replace commented out printlns with proper debug statements
|
2019-04-29 16:43:24 -07:00 |
Patrick Walton
|
d06746f28d
|
Remove barrel distortion.
It was a toy implementation and isn't the approach I want to go with.
|
2019-04-29 16:05:42 -07:00 |
Patrick Walton
|
6c31e1bc01
|
In VR mode, render one eye and then reproject to both eyes instead of rendering
twice.
This reduces both CPU and GPU time a lot in exchange for a small loss in
quality.
|
2019-04-26 17:22:54 -07:00 |
Patrick Walton
|
c688d04412
|
Remove the scene assembly thread, and pipeline only fills instead of alpha
tiles.
Removing a thread should make it easier to manually assign threads to CPUs, as
is necessary on devices with poor schedulers like Magic Leap 1.
|
2019-04-18 13:50:26 -07:00 |
Patrick Walton
|
224c8e85b9
|
Create separate shaders for monochrome and multicolor tiles.
This is preparation for fixing subpixel AA.
|
2019-03-22 14:28:31 -07:00 |
Patrick Walton
|
26fea26f87
|
Allow construction of a `Transform3DF32` from a quaternion describing a
rotation.
Closes #111.
|
2019-03-20 16:27:28 -07:00 |
Patrick Walton
|
a0aeb124ad
|
Merge pull request #112 from asajeffrey/geometry-perspective-post-mul
Add Perspective::post_mul
|
2019-03-20 14:26:11 -07:00 |
Patrick Walton
|
6ca5dc5f62
|
Add basic barrel distortion support for VR
|
2019-03-20 13:41:04 -07:00 |
Alan Jeffrey
|
1769246e5a
|
Add Perspective::post_mul
|
2019-03-20 13:59:55 -05:00 |
Patrick Walton
|
e212a839b4
|
Get device orientation changes partially working
|
2019-03-14 19:13:27 -07:00 |
Patrick Walton
|
6062676d0e
|
Add tooltips to the buttons in the demo
|
2019-03-06 11:33:59 -08:00 |
Patrick Walton
|
4dff13ef00
|
Use an advancing cursor when laying out UI elements
|
2019-03-06 10:47:52 -08:00 |
Patrick Walton
|
ad0691c146
|
Move the generic UI code in the renderer crate to a separate crate
|
2019-03-05 15:13:55 -08:00 |
Patrick Walton
|
bc80490158
|
Remove raw GL code from the demo
|
2019-03-05 13:57:28 -08:00 |
Patrick Walton
|
ae450b063e
|
WIP: Factor out GL code
|
2019-03-04 14:55:32 -08:00 |
Patrick Walton
|
1e3298fdb7
|
Switch to guard-band style clipping to eliminate artefacts
|
2019-02-22 13:15:00 -08:00 |
Patrick Walton
|
0da196aa92
|
Scale the SVG appropriately in the demo
|
2019-02-21 20:19:42 -08:00 |
Patrick Walton
|
66ee901e43
|
Close the path if necessary when rebuilding it for clipping
|
2019-02-21 11:42:48 -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
|
23943c7428
|
Add a flag to specify whether contours are closed
|
2019-02-20 16:32:40 -08:00 |
Patrick Walton
|
b9e3952246
|
Reimplement segment offsetting
|
2019-02-20 16:21:58 -08:00 |
Patrick Walton
|
d75ed71af4
|
WIP before moving to a segment basis
|
2019-02-20 12:41:43 -08:00 |
Patrick Walton
|
9af3bac11f
|
Implement depth interpolation, not working yet
|
2019-02-18 13:42:30 -08:00 |
Patrick Walton
|
e4803cfddf
|
Add some ground to the 3D scene, no depth buffer yet
|
2019-02-14 18:53:02 -08:00 |
Patrick Walton
|
0983812b90
|
Rotate and scale around the appropriate points in the demo
|
2019-02-13 16:05:28 -08:00 |
Patrick Walton
|
cb9c14bd59
|
Remove the Pathfinder 2 orientation computation code
|
2019-02-12 19:56:44 -08:00 |
Patrick Walton
|
dbc14a3fc0
|
Remove the `normals` module, as we now dilate outlines directly
|
2019-02-12 19:55:58 -08:00 |
Patrick Walton
|
e3cca6a676
|
Remove the `cubic_to_quadratic` module, as it's unneeded now
|
2019-02-12 19:51:48 -08:00 |
Patrick Walton
|
d7f6d9eb3d
|
Allow the canvas to be dragged in 2D mode
|
2019-02-12 14:49:24 -08:00 |
Patrick Walton
|
f04c000cae
|
Add a quick check to skip clipping when an outline is entirely inside or
outside the clip area
|
2019-02-09 19:24:30 -08:00 |
Patrick Walton
|
725834285b
|
Refactor the demo a bit
|
2019-02-08 15:16:53 -08:00 |
Patrick Walton
|
a8cc87bfd7
|
Make the effects window togglable
|
2019-02-07 16:38:24 -08:00 |
Patrick Walton
|
c9a80304dc
|
Add some more (non-functional) UI widgets to the demo
|
2019-02-07 14:07:05 -08:00 |
Patrick Walton
|
a81850a899
|
Add window resizing support to the demo
|
2019-02-06 18:09:37 -08:00 |
Patrick Walton
|
a6963d5f3b
|
Optimize dilation.
|
2019-02-06 13:48:50 -08:00 |
Patrick Walton
|
6920583086
|
wip
|
2019-02-06 13:46:19 -08:00 |
Patrick Walton
|
b5c73f25f0
|
wip
|
2019-02-06 13:45:15 -08:00 |
Patrick Walton
|
27e47b4c39
|
wip
|
2019-02-06 13:12:53 -08:00 |
Patrick Walton
|
8771dd6789
|
wip: dilation not working yet
|
2019-02-05 20:10:20 -08:00 |
Patrick Walton
|
45dec44a53
|
wip
|
2019-02-05 13:21:33 -08:00 |
Patrick Walton
|
3d0463999c
|
Add a SIMD integer rect type
|
2019-02-05 10:55:01 -08:00 |
Patrick Walton
|
fe410e066f
|
Add a SIMD rect type
|
2019-02-05 10:03:20 -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
|
f25682f0f1
|
Add a defringing shader for subpixel antialiasing, untested as of yet
|
2019-02-04 16:04:13 -08:00 |
Patrick Walton
|
f19757e4cf
|
Add a fast path for monotonic conversion
|
2019-02-02 11:12:54 -08:00 |
Patrick Walton
|
70e615205e
|
Optimize monotonic conversion a little bit
|
2019-02-01 19:10:42 -08:00 |
Patrick Walton
|
ca3a8852a6
|
Add more fast paths to the clipper
|
2019-02-01 18:25:48 -08:00 |
Patrick Walton
|
d08ff40cdf
|
Add a fast AABB check to the rect clipper
|
2019-02-01 17:57:26 -08:00 |
Patrick Walton
|
4c5e351829
|
Use a fast path for axis aligned clipping
|
2019-02-01 17:49:03 -08:00 |
Patrick Walton
|
805f0c9fa7
|
Trait-ify the 2D clipper
|
2019-02-01 17:27:23 -08:00 |
Patrick Walton
|
df59fd9792
|
Rename `Point4DF32` to `Point3DF32`
|
2019-02-01 17:07:03 -08:00 |
Patrick Walton
|
6a286ab153
|
Remove `Point3DF32`
|
2019-02-01 17:05:35 -08:00 |
Patrick Walton
|
2487d71879
|
Add more shuffles and rename combines for clarity
|
2019-02-01 12:16:42 -08:00 |
Patrick Walton
|
0b0c913332
|
Split out SIMD into a separate crate
|
2019-02-01 11:48:10 -08:00 |
Patrick Walton
|
89244ba6cf
|
Do clipping in 3D homogeneous space
|
2019-01-31 15:29:13 -08:00 |
Patrick Walton
|
4801503dd8
|
Fix curve/edge intersection logic in clipping
|
2019-01-31 10:12:37 -08:00 |
Patrick Walton
|
13716fd733
|
Fix 3D velocity controls
|
2019-01-29 15:44:31 -08:00 |
Patrick Walton
|
e3bf703105
|
Stop using 100% CPU; fix bug when splitting line segments at Y extrema
|
2019-01-29 15:35:07 -08:00 |
Patrick Walton
|
e958363872
|
Allow scenes to be dumped as SVG (untested) and make 3D mode optional in the demo
|
2019-01-29 14:50:15 -08:00 |
Patrick Walton
|
ab93ea1f22
|
Fix bogus thin culling that was causing artefacts
|
2019-01-29 11:27:25 -08:00 |
Patrick Walton
|
d1ca5fe757
|
Use a much better technique for curve flattening
|
2019-01-28 20:36:06 -08:00 |
Patrick Walton
|
a9c1760de5
|
Clipping mostly works now
|
2019-01-28 14:58:57 -08:00 |
Patrick Walton
|
7e3365c481
|
wip
|
2019-01-28 12:57:15 -08:00 |
Patrick Walton
|
80db7155b8
|
wip
|
2019-01-25 17:07:37 -08:00 |
Patrick Walton
|
938bd30a78
|
wip
|
2019-01-25 14:28:53 -08:00 |