Patrick Walton
d2fbb23031
Expose more stroke features in the C API
2019-06-20 13:01:54 -07:00
Patrick Walton
71623eaab3
Make Metal dependencies in the demo Mac-only
2019-06-20 12:34:55 -07:00
Patrick Walton
487577a11b
Add Metal support.
...
This commit substantially reworks the `pathfinder_gpu` API to better support
modern APIs like Metal. It should open the door to `gfx-rs`, `wgpu`, Vulkan,
and D3D12 backends relatively straightforwardly.
A new example, `canvas_metal_minimal`, has been added.
Note that the new Metal shaders require a patched version of `spirv-cross` to
build properly. An upstream patch is forthcoming.
2019-06-20 11:47:22 -07:00
Patrick Walton
5c5fe00b27
Fix build problem
2019-06-17 13:16:03 -07:00
Patrick Walton
5dfe14ebc4
Add a minimal `glutin` example
2019-06-12 10:50:24 -07:00
Patrick Walton
dbf02fb742
Make `get_vertex_attr()` fallible
2019-06-12 10:50:24 -07:00
Patrick Walton
636ff6dbf8
Merge pull request #190 from asajeffrey/offwhite-svgs
...
Make the backgrounds of the demo SVGs off-white
2019-06-08 10:02:03 -07:00
Patrick Walton
fac4f0d347
Merge pull request #189 from asajeffrey/sharpen-text
...
Improve reprojection on magicleap
2019-06-07 22:08:10 -07:00
Alan Jeffrey
45d7f7ad9a
Make the backgrounds of the demo SVGs off-white
2019-06-07 12:23:55 -05:00
Alan Jeffrey
a507e1955e
Set the scene transform by linear iterpolation of the eye transforms
2019-06-07 12:02:30 -05:00
Alan Jeffrey
005e7d3835
Set the scene transform to be one of the eye transforms
2019-06-07 10:15:34 -05:00
Alan Jeffrey
3c91c1cc97
Better error handling of magicleap demo args
2019-06-07 10:15:34 -05:00
Patrick Walton
966c836d4b
Merge pull request #188 from asajeffrey/magicleap-fix-for-luminos-0.96
...
Fix the magicleap app to work in LuminOS 0.96
2019-06-07 08:11:32 -07:00
Alan Jeffrey
d877ca1d3a
Fix the magicleap app to work in LuminOS 0.96
2019-06-06 12:36:32 -05:00
Patrick Walton
412d35ae57
Merge pull request #182 from toolness/cfg-debug-assertions
...
Define ck() based on cfg(debug_assertions)
2019-06-05 18:32:51 -07:00
Patrick Walton
1897cc54f6
Merge pull request #184 from luisbg/master
...
Add more tests for F32x4
2019-06-05 18:31:50 -07:00
Patrick Walton
9f9233c153
Add Metal shaders, cross-compiled from the GLSL via SPIR-V.
...
The Metal shaders are checked into the repository for convenience, but they
should not be directly edited. Instead, edit the corresponding GLSL shader in
the top-level `shaders/` directory, and rerun `make` in there.
2019-06-05 18:29:25 -07:00
Patrick Walton
678e12aed6
Merge pull request #181 from jrr/travis-tweaks
...
full build in CI
2019-06-05 16:16:41 -07:00
Luis de Bethencourt
70e9adc0da
Add more tests for F32x4
2019-06-05 17:30:31 -04:00
Atul Varma
7563e95d96
Add a more helpful panic message when GL errors occur.
2019-06-05 08:15:21 -04:00
Atul Varma
5ce4e2e128
Define ck() based on cfg(debug_assertions).
2019-06-05 07:45:52 -04:00
John Ruble
48e3f20516
add cmake, run full build
...
try test
disable test step
2019-06-04 23:18:24 -04:00
Patrick Walton
893f735a2b
Merge pull request #180 from toolness/patch-1
...
Mention PFCanvasCreate() consumes the font context
2019-06-04 16:52:14 -07:00
Atul Varma
6d41cb4dad
Mention PFCanvasCreate() consumes the font context
2019-06-04 18:00:22 -04:00
Patrick Walton
e3112d1a84
Add `PFCanvasFontContextClone()`
2019-06-04 14:55:59 -07:00
Patrick Walton
3be3de23d8
Merge pull request #177 from jrr/patch-1
...
Update README.md
2019-06-04 08:22:15 -07:00
John Ruble
dc0f00051b
Update README.md
...
travis badge and note about demos
2019-06-04 07:55:54 -04:00
Patrick Walton
7973148603
Implement basic shadows (no blur yet)
2019-06-03 21:09:04 -07:00
Patrick Walton
bd248bf850
Implement line dash offset
2019-06-03 19:36:08 -07:00
Patrick Walton
5e64ee4947
Merge pull request #175 from asajeffrey/get-magicleap-working-again
...
Get magicleap working again
2019-06-03 16:01:02 -07:00
Alan Jeffrey
9c641f6ce3
Renamed Point2D to Vector2
2019-06-03 17:58:34 -05:00
Alan Jeffrey
c71a20805f
Removed some unused imports
2019-06-03 17:52:18 -05:00
Alan Jeffrey
848234ef61
Updated magicleap demo for new pathfinder API
2019-06-03 17:52:18 -05:00
Alan Jeffrey
a2c8d71a3f
Rayon's thread builder API requires ownership
2019-06-03 17:52:18 -05:00
Alan Jeffrey
f5b5843c31
Make demo camera Mode public
2019-06-03 17:52:18 -05:00
Alan Jeffrey
635d3bc1f3
Call make_current(eye) when rendering for each eye.
2019-06-03 17:52:18 -05:00
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
0b9a41c533
Treat the miter limit as part of the canvas state, allowing it to be saved and
...
restored even if miter joins are not in use.
In my opinion, this behavior is less logical, but it matches the behavior of
the HTML canvas API, which we aim to remain close to.
2019-05-30 21:39:08 -07:00
Patrick Walton
eeaf51ce72
Expose line cap features to C
2019-05-30 21:28:52 -07:00
Patrick Walton
712c69faf1
Precompute the curve for a quarter-circle arc
2019-05-30 21:20:32 -07:00
Patrick Walton
48f825077c
Add new join and cap features to SVG, fixing the demo
2019-05-30 20:55:58 -07:00
Patrick Walton
95f3337c6f
Add the `ellipse` method to canvas paths
2019-05-30 17:24:12 -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
607a518544
Implement canvas text align
2019-05-30 15:08:15 -07:00
Patrick Walton
5974aeba7b
Implement miter limit
2019-05-30 13:08:30 -07:00
Patrick Walton
8d078ff345
Add an initial implementation of canvas `measureText`
2019-05-30 12:38:32 -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
9138e1e0bb
Pass in the font context to the canvas rendering context constructor so that it
...
can be reused.
Creating a system font source can do I/O on some platforms, so obviously we
don't want to do it every frame.
2019-05-29 21:15:42 -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
acf666b701
Stop using triangle fans for DX12/Vulkan compatibility.
...
Closes #165 .
2019-05-29 16:04:33 -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
5dd9e8b67d
Merge pull request #173 from luisbg/scalar
...
Start adding tests for scalar::F32x4
2019-05-29 14:21:33 -07:00
Luis de Bethencourt
9f4bcd8c42
Start adding tests for scalar::F32x4
2019-05-29 17:04:28 -04: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
1df5e7a129
Merge pull request #172 from luisbg/i32x4
...
Complete I32x4 swizzles
2019-05-28 14:19:31 -07:00
luisbg
16813b9ebe
Test I32x4 swizzles
2019-05-28 16:50:22 -04:00
luisbg
b887690b73
Complete I32x4 swizzles
2019-05-28 16:50:17 -04:00
Patrick Walton
e86389ac1c
Merge pull request #171 from luisbg/tests
...
Add test_i32x4_swizzles
2019-05-28 10:31:46 -07:00
Luis de Bethencourt
7240dafb05
Add test_i32x4_swizzles
2019-05-28 13:24:41 -04:00
Patrick Walton
4813084eed
Merge pull request #169 from luisbg/tests
...
Complete test_f32x4_swizzles
2019-05-27 20:18:49 -07:00
Luis de Bethencourt
3ccd1fce20
Complete test_f32x4_swizzles
2019-05-27 21:43:25 -04:00
Patrick Walton
848eb00443
Merge pull request #168 from luisbg/unused
...
Fix unused variable warning
2019-05-27 12:30:37 -07:00
Luis de Bethencourt
0231542141
Fix unused variable warning
...
Fixing the following warning
warning: unused variable: `resources`
2019-05-27 15:22:27 -04:00
Patrick Walton
4327d75058
Merge pull request #167 from toolness/pathfinder-unity-fun
...
Add GLDevice::set_default_framebuffer()
2019-05-27 11:28:33 -07:00
Atul Varma
ea3cdbb2a9
Merge remote-tracking branch 'origin/master' into pathfinder-unity-fun
2019-05-27 13:41:19 -04:00
Atul Varma
a51501791d
Add GLDevice::set_default_framebuffer().
2019-05-27 07:56:36 -04:00
Patrick Walton
bc713a5181
Remove the rustache dependency.
...
1/3 reduction in binary size for `canvas_minimal`.
Closes #158 .
2019-05-26 13:02:52 -07:00
Patrick Walton
e04cc273ee
Add enough C bindings to recreate `canvas_minimal` in C.
...
Closes #12 .
2019-05-25 20:21:38 -07:00
Patrick Walton
009f78ba26
Merge pull request #161 from Eijebong/quickcheck
...
Update quickcheck to 0.8
2019-05-24 11:05:13 -07:00
Patrick Walton
e8a5c2a04b
Merge pull request #160 from luisbg/master
...
Remove cross method from F32x4
2019-05-24 11:04:58 -07:00
Bastien Orivel
349c1a9cd0
Update quickcheck to 0.8
...
This dedupes some dependencies
2019-05-24 19:22:23 +02:00
Luis de Bethencourt
8c0415c9b9
Remove cross method from F32x4
...
Silencing the following rustc warning:
warning: unused variable: `other`
Followup to Pull Request #152 .
Instead of marking `other` unused (`_other`) we can remove the method
entirely.
2019-05-24 12:19:13 -04:00
Patrick Walton
8c4f05ce39
Initial rudimentary Lottie parsing code
2019-05-23 18:03:09 -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
6eab3fa2d8
Implement `globalAlpha` for canvas
2019-05-14 18:26:10 -07:00
Patrick Walton
0deb12b3a2
Implement `fill-opacity` and `stroke-opacity` in SVG
2019-05-14 18:09:01 -07:00
Patrick Walton
25a6c33a1a
Remove the object index attribute from the shaders, since it's now unused
2019-05-14 15:22:50 -07:00
Patrick Walton
86f5bdb44a
Store paints in the paint texture indexed by paint ID, not object index
2019-05-14 15:21:15 -07:00
Patrick Walton
7a02b78b3d
Explicitly specify color texture coordinates for alpha and solid tiles.
...
This is groundwork for gradients and images.
This commit also refactors the interface for vertex attributes to use named
parameters (via structs), for clarity.
2019-05-14 15:11:04 -07:00
Patrick Walton
a54378f931
Make the paint texture dynamically-sized on the GPU side
2019-05-14 11:38:48 -07:00
Patrick Walton
376a1c7165
Rename "fill colors" to "paint" in preparation for gradients and images
2019-05-14 11:33:52 -07:00
Patrick Walton
7518fa65c0
Update dependencies
2019-05-13 18:47:19 -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