Patrick Walton
4053b7dd0c
Add zoom in and zoom out buttons for input devices without gesture support
2019-02-13 10:32:25 -08:00
Patrick Walton
fb692acf05
Open a default SVG if none is supplied on the command line
2019-02-12 19:31:29 -08:00
Patrick Walton
2eccdba360
Allow pinch zoom in 2D mode
2019-02-12 15:00:33 -08:00
Patrick Walton
d7f6d9eb3d
Allow the canvas to be dragged in 2D mode
2019-02-12 14:49:24 -08:00
Patrick Walton
398718a3c8
Allow the rotation slider to be dragged
2019-02-12 12:49:35 -08:00
Patrick Walton
22fe63503f
Implement 2D rotation
2019-02-12 12:40:24 -08:00
Patrick Walton
a9ac960862
Load a new scene when the user requests it
2019-02-12 11:16:49 -08:00
Patrick Walton
7511b3bd2f
Add a `LoadScene` message to the backend thread
2019-02-12 11:03:37 -08:00
Patrick Walton
92421943fc
Open a file dialog when the user clicks on the open file
2019-02-08 21:08:03 -08:00
Patrick Walton
6afbafcb43
Split out the demo UI code into a separate module
2019-02-08 20:58:54 -08:00
Patrick Walton
dbce7e3ad1
Fix dirty tracking to stop using 100% CPU
2019-02-08 20:51:34 -08:00
Patrick Walton
3cc8f7a11f
Refactor the demo some
2019-02-08 15:39:47 -08:00
Patrick Walton
725834285b
Refactor the demo a bit
2019-02-08 15:16:53 -08:00
Patrick Walton
dbf880d011
Rename `demo3` to `demo`
2019-02-08 14:53:20 -08:00
Patrick Walton
4062f824fd
Remove the Pathfinder 2 demo
2019-02-08 14:39:35 -08:00
Patrick Walton
3165a4a1b0
Remove old demo server; remove `SegmentFlags`
2019-01-10 20:43:03 -08:00
Patrick Walton
adf49ab932
Rename `path-utils` to `geometry`
2019-01-10 10:01:21 -08:00
Patrick Walton
a2522e3845
wip
2018-11-14 10:33:53 -08:00
Patrick Walton
883ccceb2d
Update various dependencies
2018-09-19 20:03:33 -07:00
Patrick Walton
81c3f08a5c
Make macOS-only code conditionally compiled; update dependencies
2018-08-22 13:34:50 -07:00
Patrick Walton
c6cc6e6fd8
Remove `pathfinder_font_renderer` in favor of `font-kit`.
...
Closes #69 .
Closes #84 .
2018-08-02 15:07:25 -07:00
Bastien Orivel
9d19454c36
Update app_units 0.7
...
See ya num-traits 0.1 o/
2018-07-31 20:16:44 +02:00
Bastien Orivel
3cfd0a3126
Update image to 0.19
2018-07-31 20:16:00 +02:00
Paul Rouget
6d7dd604f8
Euclid and lyon updates
2018-07-27 11:40:45 +02:00
Nicolas Silva
46d1878ef5
Update lyon and euclid dependencies.
2018-07-11 00:27:42 +02:00
Patrick Walton
fcfd157c70
Remove `F32ArrayToMat4` in favor of `glmatrix.mat4.clone()`
2018-04-04 17:56:01 -07:00
Patrick Walton
2fde232982
Factor the text paragraph rendering code out into a separate class so it
...
can be reused
2018-04-03 13:57:46 -07:00
Patrick Walton
6ba87277c2
Remove the explicit WebVR API dependency; it seems to be upstream now
2018-04-03 12:42:33 -07:00
Patrick Walton
881be4967d
Fix TypeScript build errors
2018-04-03 12:40:02 -07:00
Manish Goregaokar
8ed4e96ff9
Various review cleanups
2018-04-02 19:10:19 -07:00
Manish Goregaokar
3d223c1a4a
Match screen size as much as possible
2018-04-02 19:10:11 -07:00
Manish Goregaokar
0751da81a4
Move VR stuff to ThreeDView
2018-04-02 19:10:11 -07:00
Manish Goregaokar
2b0b699fa0
Turn off lighting for VR
2018-04-02 19:10:11 -07:00
Manish Goregaokar
3af3635eea
Use correct viewport and clear correctly
2018-04-02 19:10:11 -07:00
Manish Goregaokar
148e77d995
Use correct projection and view matrices
2018-04-02 19:10:11 -07:00
Manish Goregaokar
975685c23b
Make it possible to enter VR mode
2018-04-02 19:10:11 -07:00
Patrick Walton
d66a5b6c54
Update to `env-logger` 0.5
2018-03-30 14:25:52 -07:00
Patrick Walton
dcc3a0fc94
Update to bincode 1.0
2018-03-22 15:03:25 -07:00
Patrick Walton
5e5148df54
Fix on Chrome, which doesn't support WebGL queries
2018-03-20 19:40:28 -07:00
Patrick Walton
6e13fb171c
Use a lookup table to do area calculations instead of Loop-Blinn-style
...
distance-to-edge for stencil analytic antialiasing.
This improves the rendering quality of stencil AAA significantly.
Additionally, this adds an approximation of Core Graphics' (macOS')
defringing filter.
Closes #73 .
2018-03-19 14:35:36 -07:00
Patrick Walton
64c818e530
Construct meshes independently of mesh libraries (renamed to "mesh
...
packs").
This fits in better with the way WebRender does things. It simplifies
the code too.
2018-03-08 15:10:29 -08:00
Patrick Walton
db6986ca1f
Take the orientation of a path into account when computing normals
2018-03-07 11:21:08 -08:00
Patrick Walton
18121208d4
Update euclid to 0.17 and Lyon to 0.10
2018-03-06 15:06:06 -08:00
Patrick Walton
b60275e5ea
Convert cubic curves to quadratic ones in fonts
2018-03-06 13:10:29 -08:00
Patrick Walton
07d978909c
Get the DirectWrite backend compiling again.
...
Partially addresses #69 .
2018-03-06 12:24:30 -08:00
Patrick Walton
fad7f2f343
Fix FreeType build
2018-03-05 15:04:52 -08:00
Patrick Walton
5d3c1f6d59
Abstract away `FontKey` so WebRender can more easily use this; switch
...
from angle measurement to scale-dependent hull height
2018-03-05 11:27:18 -08:00
Patrick Walton
45a812d30f
Move webpack to the `devDependencies` section.
...
See issue #69 .
2018-02-22 10:02:15 -08:00
Patrick Walton
48aceb6291
Fix zoomed-in rotation for text by taking extended path transforms into
...
account in the MCAA shader.
2018-02-21 17:00:37 -08:00
Patrick Walton
dfcbd9dddd
Remove the unused `usesSTTransform`
2018-02-21 16:38:09 -08:00
Patrick Walton
82be5d12d1
Update dependencies and fix TypeScript build failures.
...
Closes #68 .
2018-02-19 11:52:00 -08:00
Patrick Walton
a84b7c7cbd
Replace ECAA with "Stencil AAA", a distance-based antialiasing
...
technique similar to the new MCAA.
This new technique simplifies the code significantly by unifying lines,
curves, and transformed curves. Blog posts forthcoming.
2018-02-17 10:45:25 -08:00
Patrick Walton
87eb3038eb
Make the cubic Bézier approximation tolerance proportional to the SVG
...
view box size instead of hardcoding it.
Reduces the vertex shading load by approximately half on many of the
"Massively Parallel Vector Graphics" test cases.
Partially addresses #67 .
2018-02-08 20:00:14 -08:00
Patrick Walton
5879d9778d
Replace the MCAA shader with an extended Loop-Blinn approach and an
...
approximation of area based on approximate first-order line distance.
This enables support for full affine transforms in MCAA. It also greatly
simplifies the shader and reduces the amount of work that the GPU needs
to do for fragment shading.
Experimental testing has shown the area approximation to be accurate to
about 4%.
2018-02-02 18:28:41 -08:00
Patrick Walton
5bd68dec65
Port Pathfinder to use Lyon for Bézier curve math.
...
This removes a whole lot of code from `pathfinder_path_utils`. Hopefully
the remaining code can go upstream.
These changes regress quality of stroke widths for cubic curves, because
they move fill-to-stroke conversion before cubic-to-quadratic
conversion. To fix that, we will need to recursively subdivide when
doing fill-to-stroke conversion.
2018-01-29 12:47:47 -08:00
Patrick Walton
7a2ad35d7e
Don't allow the user to move the camera in the benchmarks and reference tests.
...
Doing this messes up the tests.
2018-01-18 17:26:56 -08:00
Patrick Walton
3be3ff7351
Disable gamma correction, stem darkening, and emboldening in the UI when SSAA mode is selected
2018-01-16 15:50:17 -08:00
Patrick Walton
ef29eb19f3
Tiny comment fix
2018-01-16 13:06:51 -08:00
Patrick Walton
3b3fef3982
Hide `generate_gamma_lut` and `pathfinder_server` in the API docs list.
...
This is a messy way to do this, but I couldn't find a better way in Cargo or `rustdoc`…
2018-01-16 12:57:26 -08:00
Patrick Walton
6a640eca74
Simplify the B-quad vertex position VBO to have a uniform format, and
...
enable early Z for SVG.
Additionally, this switches the B-quad patches for XCAA to be convex
hulls instead of bounding boxes, reducing fragment shader load.
This is a large speedup for the Ghostscript tiger demo: 5x or more.
Closes #33 .
2018-01-11 19:25:02 -08:00
Patrick Walton
c68f16f6ba
Write more API documentation
2018-01-05 15:52:15 -08:00
Patrick Walton
4b887174f8
Document some more of `pathfinder_path_utils`
2018-01-05 12:35:01 -08:00
Patrick Walton
2a3ab09279
Fix rustdoc CSS a bit
2018-01-05 12:19:13 -08:00
Patrick Walton
f3841ef402
Document more shader parameters
2018-01-04 18:07:14 -08:00
Patrick Walton
aa7e0df514
Make the libraries only used for reftesting opt-in.
...
Closes #56 .
2018-01-04 15:10:23 -08:00
Patrick Walton
4a71f79a78
Make the logo in the navbar monochrome
2018-01-04 14:43:37 -08:00
Patrick Walton
275a937439
Fix colors and view box for the reference in the SVG reftest
2018-01-04 14:14:47 -08:00
Patrick Walton
c5187deedd
Use the monochrome MCAA mode for the Material Design icons SVG demo.
...
This avoids ugly pixel snapping.
2018-01-03 20:53:25 -08:00
Patrick Walton
11913a20f1
Merge MCAA monochrome and multicolor shaders.
...
Not only is this a lot simpler, it's faster too!
2018-01-03 15:22:28 -08:00
Patrick Walton
9515451e7a
Remove render tasks entirely.
2017-12-28 11:44:46 -05:00
Patrick Walton
0ec5b74851
Start a Cargo workspace and generate documentation for it
2017-12-23 18:01:55 -05:00
Patrick Walton
429e4a3063
Remove clipping support from the SVG demo.
...
It's overengineering and was broken anyway. WebRender has much better
clipping support; let's centralize the logic in there.
2017-12-22 16:30:24 -08:00
Patrick Walton
934086ace8
Build Rust documentation as part of the demo client build process
2017-12-21 18:01:00 -08:00
Patrick Walton
b6236ac835
Use librsvg/Cairo/Pixman to render SVG reference images.
...
The scale and colors aren't correct yet, but this is a start.
2017-12-21 17:20:01 -08:00
Patrick Walton
c2d89aba91
Add support for the even-odd fill rule in the demo.
...
Closes #59 .
2017-12-21 13:53:38 -08:00
Patrick Walton
84ed1a76b0
Hook the reftest framework up to the SVG renderer
2017-12-20 19:13:07 -08:00
Patrick Walton
fc95edda81
Add UI for SVG reference tests, not functional yet
2017-12-20 18:49:44 -08:00
Patrick Walton
ec467ba92c
Fix `getMeshIndexRange()` logic for the first interior mesh.
...
This caused the first path to disappear in the SVG demo.
Closes #57 .
2017-12-20 14:10:51 -08:00
Patrick Walton
f58d3a8512
Add stroke drawing functionality to the mesh debugger.
...
It's disabled by default, but it can be enabled by editing the code.
2017-12-20 13:41:31 -08:00
Patrick Walton
f04f39afd6
Close subpaths explicitly.
...
Partially addresses #57 .
2017-12-20 13:41:01 -08:00
Patrick Walton
6a81ec4893
Make SVG stroke width more accurate, and switch to XCAA by default.
...
Partially addresses #57 .
2017-12-20 10:40:21 -08:00
Patrick Walton
797b935f35
Add Material Design icons to the SVG demo
2017-12-19 19:11:12 -08:00
Patrick Walton
6f41039ba8
Use the Bootstrap style for the rotate slider
2017-12-19 14:56:26 -08:00
Patrick Walton
23482b2af8
Add the logo to the demo.
...
Logo design courtesy Jay Vining.
2017-12-19 14:51:51 -08:00
Patrick Walton
cfe72f486e
Use a single-pass pixel-snapping MCAA algorithm instead of a multipass
...
ECAA algorithm for multicolor SVG.
This is much faster than both Skia and the previous XCAA algorithm
while maintaining slightly higher quality than the latter.
There are a couple of known issues:
* Vertical inflection points of hairlines with very steep slopes can
become very light or even drop out occasionally. I suspect this is due
to floating point error.
* Rarely, single columns of pixels can disappear from a mesh. Cause TBD.
Besides these bugs, this technique can be cleaned up and probably made
faster, but it's a sizable improvement as is.
2017-12-18 17:37:14 -08:00
Patrick Walton
5da56fea0b
Fix 3D demo
2017-12-12 09:46:38 -06:00
Patrick Walton
b8785a31db
Implement 8xSSAA and 16xSSAA in the SVG demo
2017-12-11 19:02:20 -08:00
Patrick Walton
1102965f6d
Use RGB5_A1 on macOS to work around driver stalls with RGBA
2017-12-11 12:18:48 -08:00
Patrick Walton
00433d418a
Disable subpixel AA during the SVG benchmark
2017-12-06 12:19:24 -08:00
Patrick Walton
1459267292
Make benchmark sizes more sensible for SVG
2017-12-06 10:58:16 -08:00
Patrick Walton
80c0d07f1a
Revert refactoring of Renderer into BaseRenderer.
...
It's not needed.
2017-12-05 19:08:31 -08:00
Patrick Walton
30893fb9ad
Partially implement benchmarking for SVG.
2017-12-05 19:05:23 -08:00
Patrick Walton
d0d08816b9
Factor the SVG renderer out of the demo so it can be reused
2017-12-05 11:23:13 -08:00
Patrick Walton
15d8c98ff9
Fix a bug preventing the benchmark from running, and improve its UI
2017-12-04 22:02:16 -08:00
Patrick Walton
bc863e3ed3
Remove commented out code
2017-12-04 11:55:37 -08:00
Patrick Walton
30062aea81
Expose emboldening in the demo UI
2017-12-03 17:28:30 -08:00
Patrick Walton
9b59ce2443
Fix rotation artefacts by rendering curves in two passes, clipping at X
...
inflection points as necessary.
2017-12-03 16:59:35 -08:00
Patrick Walton
1de0378f1e
Get rotation working in the text demo.
...
There are some known artefacts when zoomed in heavily in XCAA mode.
2017-11-30 16:08:15 -08:00
Patrick Walton
95a1dd0195
Eliminate the distinction between layout and display pixels per unit
2017-11-30 09:51:07 -08:00
Patrick Walton
86660572bd
Upgrade ST-transforms to affine transforms where possible, and add
...
incomplete rotation support to the text demo
2017-11-29 17:06:52 -08:00