Commit Graph

665 Commits

Author SHA1 Message Date
Patrick Walton 5698dfb791 Add color support 2018-11-15 18:06:19 -08:00
Patrick Walton 32792f81a7 WIP using lines 2018-11-15 14:37:32 -08:00
Patrick Walton 208565603e WIP 2018-11-14 13:56:45 -08:00
Patrick Walton a2522e3845 wip 2018-11-14 10:33:53 -08:00
Patrick Walton 3a5069b1e7
Merge pull request #98 from EisenbergEffect/patch-1
docs(readme): clarify demo build requirements
2018-10-31 09:28:16 -07:00
Rob Eisenberg 6a622b7f04
doc(readme): clarify demo build requirements
My normal workflow involves using tools that are mostly in "JavaScript land". So, I didn't have either Rust or CMake installed. The instructions mentioned Rust nightly builds as a dependency, but not CMake. So, I've added CMake and then turned each of these dependencies into a link as a convenience for anyone that comes along later.
2018-09-26 10:46:28 -07: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
Patrick Walton a518cdac21
Merge pull request #93 from Eijebong/num-traits-0.1-is-goooone
Update dependencies to remove num-traits 0.1
2018-07-31 13:45:26 -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
Patrick Walton d04912fec6
Merge pull request #92 from paulrouget/euclid_update
Euclid and lyon updates
2018-07-30 09:47:38 -07:00
Paul Rouget 6d7dd604f8 Euclid and lyon updates 2018-07-27 11:40:45 +02:00
Patrick Walton 9b7da26d1e Update `core-graphics` and `core-text` 2018-07-20 16:48:10 -07:00
Patrick Walton 673dd81fa7 Commit Cargo.lock to help keep things reproducible.
Closes #87.
2018-07-18 08:30:01 -07:00
Patrick Walton 0a1adb0e18 iOS support 2018-07-18 08:24:09 -07:00
Patrick Walton 2e5b70805f
Merge pull request #89 from nical/lyon-0-11
Update lyon and euclid dependencies
2018-07-17 08:24:17 -07:00
Nicolas Silva 46d1878ef5 Update lyon and euclid dependencies. 2018-07-11 00:27:42 +02:00
Patrick Walton 2ec2adf1c7
Merge pull request #88 from Eijebong/bump-core-stuff
Update core-graphics, core-text and bump version
2018-07-09 15:58:48 -07:00
Bastien Orivel 42d1c439aa Update core-graphics, core-text and bump version 2018-07-09 12:50:43 +02:00
Patrick Walton 63c17a7f15
Merge pull request #82 from fschutt/pathfinder_glyph_dimensions_directwrite
Fixed calculation of glyph dimensions on Windows
2018-05-03 18:10:57 -07:00
fschutt 9223717234 Fixed calculation of glyph dimensions on Windows
The dimensions in the `DWRITE_GLYPH_METRICS` are a bit special:
the `rightSideBearing` is measured from the right edge of the
character boundary, not the left edge.

So, doing (right - left) would usually return a negative or very
small number, which, when casted to a u32 in an unsafe block, would
silently overflow to a very large number and make webrender crash.

Therefore, in order to calculate the metrics correctly, we have
to first calculate the full width of the character, then subtract
the right and left edges, same width the height.
2018-05-03 07:55:40 +02:00
Patrick Walton 2701757e29
Merge pull request #81 from fschutt/fix_compile_windows
Fix the API of glyph_dimensions to make webrender compile on Windows
2018-04-27 08:41:10 -07:00
fschutt 80a872ca46 Add add_native_font function to get feature parity on Windows + publicly export necessary types 2018-04-13 13:24:53 +02:00
fschutt ddcde6d1ae Fix the API of glyph_dimensions to make webrender compile on Windows 2018-04-13 11:50:52 +02:00
Patrick Walton 235c51e160 Fix the Cargo version conflict in the front end 2018-04-10 11:20:17 -07:00
Patrick Walton f755002983 Switch to the crates.io version of Servo's `freetype` library 2018-04-09 13:28:31 -07:00
Patrick Walton 6e1fe50202 Switch to Servo's version of the FreeType library bindings.
This enables compatibility with WebRender on Linux.
2018-04-09 12:41:41 -07: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
Patrick Walton 6f839cd1b2
Merge pull request #76 from Manishearth/vr-better
Cleaned up VR implementation
2018-04-02 19:11:13 -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
Manish Goregaokar 7e115826a1 Remove dependence on frag_depth 2018-04-02 19:10:04 -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 dbd3a36f3d Generate a reasonable normal for the superfluous control point generated
for lines.
2018-03-21 14:56:24 -07:00
Patrick Walton 5e5148df54 Fix on Chrome, which doesn't support WebGL queries 2018-03-20 19:40:28 -07:00
Patrick Walton 96d2f909ea wip 2018-03-19 18:34:27 -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 e851afd5d9
Merge pull request #74 from pythonesque/patch-1
The Send impl for `FontContext` is too forgiving.
2018-03-10 10:29:19 -08:00
Joshua Yanovski c7064b31ce
The Send impl for `FontContext` is too forgiving.
I'm pretty confident that it is only thread safe if FK is (or another way of putting it is, I'm pretty sure if you include an `Rc<_>` in FK it should not be safe to share between threads).
2018-03-09 01:20:49 +01: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 cffff886c3 Be more robust in the presence of duplicated points when computing
normals
2018-03-07 11:53:44 -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 aa3ecf28a5 Quantize to subpixel boundaries.
This doesn't break meshes the way the previous "discard if too thin"
code did. It fixes several issues observed on Wikipedia when using
Pathfinder in Firefox.

Closes #72.
2018-03-06 19:20:19 -08:00
Patrick Walton 6c2c34aa3c Make the mesh library serializable and deserializable.
This is needed for the new WebRender infrastructure.
2018-03-06 15:12:47 -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 f718aa9ce3 Make the FreeType API match the Core Graphics one 2018-03-05 17:15:17 -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 4e1a9a9bad Add a new varying to the stencil AAA fragment shader for simplicity.
The new `vXDist` values *can* be deduced simply from the `vUV` values
and first-order derivatives thereof, and therefore they're technically
redundant. However, calculating them in this way increases the
complexity and ALU load in the fragment shader. It's simpler to just
compute the additional values in the vertex shader and use
interpolation.
2018-02-21 16:27:49 -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 2ec5dbfa42 Fix minor comment typo 2018-01-21 13:06:47 -08:00
Patrick Walton d8c590867d Stop computing B-vertex normals, which are no longer used.
6x improvement in partitioning time (because atan2 is dog slow).
2018-01-21 11:41:26 -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 0720b04591 Scale stroke widths correctly in the Ghostscript tiger test 2018-01-18 17:01:47 -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 67dd6cd8ed Add some simple overview documentation to the partitioner crate 2018-01-05 18:40:36 -08:00
Patrick Walton 952186c638 Document `pathfinder_font_renderer`. 2018-01-05 16:59:49 -08:00
Patrick Walton c68f16f6ba Write more API documentation 2018-01-05 15:52:15 -08:00
Patrick Walton 32c20ec649 Document most of `pathfinder_path_utils`. 2018-01-05 14:20:50 -08:00
Patrick Walton 4b887174f8 Document some more of `pathfinder_path_utils` 2018-01-05 12:35:01 -08:00
Patrick Walton 452ade0012 Document `pathfinder_path_utils::cubic` 2018-01-05 12:19:23 -08:00
Patrick Walton 2a3ab09279 Fix rustdoc CSS a bit 2018-01-05 12:19:13 -08:00
Patrick Walton d821991c01 Clean up `common.inc.glsl` a bit 2018-01-05 12:18:50 -08:00
Patrick Walton f3841ef402 Document more shader parameters 2018-01-04 18:07:14 -08:00
Patrick Walton 67d29803b5 Document most uniforms in shaders 2018-01-04 17:32:20 -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 2c2afe2fc0 Only emit a `ClosePath` command in a `PathBufferStream` if the subpath
is closed.

Closes #60.
2018-01-03 15:31:34 -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 017a2e2f8c Provide brief documentation of each shader 2017-12-30 20:32:51 -05:00
Patrick Walton a81c69c34e Document the blit shaders 2017-12-28 11:46:44 -05:00
Patrick Walton 9515451e7a Remove render tasks entirely. 2017-12-28 11:44:46 -05:00
Patrick Walton 473cb38fb3 Add a few paragraphs of overview documentation 2017-12-23 18:17:33 -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