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
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
2deb4fae2a
Use binary search to find line intersections to reduce floating point error.
...
This is probably improvable, but let's do the safe thing for now.
Closes #57 .
Closes #58 .
2017-12-21 13:22:32 -08:00
Patrick Walton
f132117d4c
Don't add overlapping points to close paths in the stroking algorithm.
...
These extra points are unnecessary and can confuse the partitioner,
because they sometimes prevent it from detecting winding numbers
properly. This is a bug in the partitioner and should be fixed, but we
shouldn't be generating these points to begin with.
Partially addresses #57 .
2017-12-21 13:22:23 -08:00
Patrick Walton
98250b9232
Close stroke paths as necessary.
...
Partially addresses #57 .
2017-12-21 11:56:12 -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
4c2d0cb5ab
Use homogeneous coordinates to reduce floating point error when computing the intersection of self-intersecting line segments.
...
Partially addresses #57 .
2017-12-20 13:42:20 -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
097e909d07
In multicolor XCAA, cap the slope to a reasonable amount to prevent line segments from shooting way up or down
2017-12-19 13:47:57 -08:00
Patrick Walton
ddd1c89294
Use one side for the X position in the multicolor MCAA vertex shader to avoid cracks
2017-12-19 10:54:30 -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