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
Patrick Walton
58260beb8c
Only run the ECAA mask shader on edge pixels
2017-11-28 17:05:59 -08:00
Patrick Walton
6942bb51ca
Add support for full 3D transforms, including rotation, to SVG in XCAA mode.
2017-11-28 16:15:06 -08:00
Patrick Walton
6d85cb3382
Rename the integration test to the reference test to be more specific
2017-11-20 17:18:30 -08:00
Patrick Walton
99c7e685e7
Rebuild the layout when new text is entered in the text demo
2017-11-20 17:09:39 -08:00
Patrick Walton
8c89ef9938
Make sure the gamma LUT loads before the initial render
2017-11-20 16:47:52 -08:00
Patrick Walton
5a1e4d4e60
Fix rendering of glyphs in the 3D demo
2017-11-20 16:25:57 -08:00
Patrick Walton
529a3eae23
Add rotation support for SSAA in SVG; switch to Material Design icons
2017-11-20 15:32:02 -08:00
Patrick Walton
b005e6d165
Improve the layout of the integration test a bit
2017-11-17 17:29:18 -08:00
Patrick Walton
3388b38e3b
Try to fix #50 by inserting an "as any"
2017-11-17 17:10:05 -08:00
Patrick Walton
86df78f939
Flesh out the integration test more
2017-11-17 17:06:59 -08:00
Patrick Walton
ca0387d355
Get reference and rendered glyphs displaying side-by-side in the integration test
2017-11-13 20:42:07 -08:00
Patrick Walton
2578298198
More work on the integration test
2017-11-13 17:23:03 -08:00
Patrick Walton
0642e65c9d
Stub integration test functionality some more
2017-11-13 15:26:46 -08:00
Patrick Walton
bc99fdf02b
Enable early Z in the XCAA multicolor direct interior pass
2017-11-11 14:45:28 -08:00
Patrick Walton
2975038891
Reenable early Z.
...
It regressed again!
2017-11-11 14:04:57 -08:00
Patrick Walton
2e90b3bce8
Multiply stem darkening amounts by sqrt(2).
...
This compensates for the fact that macOS dilation is relative to the pixel square, while our dilation is relative to each vertex normal.
2017-11-11 11:29:52 -08:00
Patrick Walton
ceb9d2bb80
Tweak the max stem darkening ppem to avoid a "pop" when zooming
2017-11-11 09:41:21 -08:00
Patrick Walton
d90d3af21b
Fix swapped min/max stem darkening amounts
2017-11-11 09:38:28 -08:00
Patrick Walton
c9948a844d
Render reference images on the server, untested as of yet
2017-11-10 17:04:59 -08:00
Patrick Walton
932fc64524
Stub an integration test page
2017-11-10 13:58:07 -08:00
Patrick Walton
2f7205bd22
Improve the stem darkening vertical extents preservation hack
2017-11-10 08:40:31 -08:00
Patrick Walton
a73fb9ab8d
Try to align glyphs on their baselines after stem darkening
2017-11-10 08:16:27 -08:00
Patrick Walton
8e7eb6ca60
Support stem darkening in SSAA mode.
...
The normals are incorrect right now in some cases, but it looks OK-ish.
2017-11-09 16:20:15 -08:00
Patrick Walton
35e59b1a05
Fix MCAA in the text demo.
...
The B-quad ranges were not being expanded properly.
2017-11-08 20:58:22 -08:00
Patrick Walton
9a5728aab6
Implement clipping in XCAA mode
2017-11-08 16:45:30 -08:00
Patrick Walton
997e9b852a
Round x-heights naturally instead of rounding up.
...
I think this matches what macOS does.
2017-11-07 17:39:29 -08:00
Patrick Walton
e5b76726d9
Use the LUT to gamma correct text, and fix stem darkening math
2017-11-07 17:24:19 -08:00
Patrick Walton
82fd214a76
Load the gamma LUT in the demo
2017-11-07 14:13:13 -08:00
Patrick Walton
8a1e3bc8b2
Add some basic Phong shading to the monument
2017-11-03 18:49:25 -07:00
Patrick Walton
1e446f816f
Add basic clip path support when rendering with SSAA
2017-11-03 14:29:31 -07:00
Patrick Walton
4cbc2a8800
Add partial support for clip paths in the SVG demo.
...
At the moment, this only works when antialiasing is off.
2017-11-03 14:14:29 -07:00
Patrick Walton
511e5956d8
Don't clear away the scenery after drawing it!
...
Fixes the 3D view.
2017-11-02 16:17:35 -07:00
Patrick Walton
572b7cdd4a
Encode path IDs using a sparse representation, not a dense one.
...
This reduces the size of serialized mesh libraries. It also makes it
much easier to expand meshes and select individual paths for rendering.
2017-11-02 16:08:31 -07:00
Patrick Walton
c767141169
Build render tasks for clips.
...
This doesn't actually clip anything yet, but it's a step in that direction.
2017-10-31 17:04:06 -07:00
Patrick Walton
b9f6f13cec
Stop going to the DOM every time we need the color of an SVG path
2017-10-31 14:50:15 -07:00
Patrick Walton
579528ebdc
Remove one direct rendering pass from the multicolor XCAA path
2017-10-31 12:41:38 -07:00
Patrick Walton
d65bfb7fb2
Show compositing time in the SVG demo
2017-10-31 12:35:24 -07:00
Michael Bebenita
2e3451d9da
Automatically rebuild in the background.
2017-10-30 16:24:12 -07:00
Patrick Walton
a6582aefb3
Merge pull request #45 from mbebenita/toggle
...
Mesh Debugger Improvements
2017-10-30 15:31:36 -07:00
Patrick Walton
2717ac12cc
Merge pull request #44 from mbebenita/zoom
...
Cursor fixes.
2017-10-30 15:31:27 -07:00
Patrick Walton
2604151521
Replace the multicolor (SVG) XCAA with a multipass compositing algorithm
2017-10-30 15:28:35 -07:00
Michael Bebenita
55f964001b
Toggle layers in mesh debugger.
...
Also, stroke and fill vertices after drawing lines.
2017-10-29 16:25:50 -07:00
Michael Bebenita
45755816c8
Draw segment hull.
2017-10-29 15:13:55 -07:00
Michael Bebenita
a7056460d0
Fix cursor icon in Chrome.
2017-10-29 14:46:33 -07:00
Michael Bebenita
6fbfa60f68
Fix grabbing cursor on mesh debugger.
2017-10-29 14:46:21 -07:00
Patrick Walton
bf3779bf89
Calculate normals for B-vertices.
...
I'm planning to use this for fixing hairlines in XCAA.
2017-10-27 15:12:33 -07:00
Patrick Walton
0506365cc7
Fix blending in the text demo.
...
As a nice added cleanup, this commit standardizes on the red channel for
all monochrome textures.
2017-10-26 20:15:51 -07:00
Patrick Walton
77fa297380
Change the animated zoom icon to a play icon
2017-10-26 18:15:28 -07:00
Michael Bebenita
70390915ab
Add Pulse Zoom button.
2017-10-26 11:32:30 -07:00
Patrick Walton
f8c950d39a
Stop calling `getParameter` and `getBufferParameter`.
...
They're incredibly slow in Chrome.
2017-10-25 19:38:41 -07:00
Patrick Walton
0b179f3a40
Add preliminary DirectWrite support on Windows.
...
This will eventually need to call into GDI to do hinting, but it's good
enough for now.
2017-10-25 13:01:36 -07:00
Patrick Walton
9d93cebca6
Stop using multiple render targets.
...
We don't need them anymore, so let's lower our hardware requirements!
2017-10-20 22:04:53 -07:00
Patrick Walton
048c261f6c
Add a working experimental implementation of XCAA for SVG.
...
This has known performance problems and artefacts due to working at
sample level only, but it's a decent first cut.
2017-10-20 19:41:18 -07:00
Patrick Walton
a523d71e3c
Stop leaking buffer textures
2017-10-18 19:47:44 -07:00
Patrick Walton
03b4ec2cc6
Stop leaking VAOs
2017-10-18 19:16:56 -07:00
Patrick Walton
70201bb29c
Draw distant glyphs as prerendered images in the 3D demo.
...
This has known performance problems, but it's a good first cut.
2017-10-18 16:19:19 -07:00
Patrick Walton
024b00e479
Decouple text renderers from the text demo's layout
2017-10-17 13:37:36 -07:00
Patrick Walton
d66bff9768
Remove useless null check
2017-10-17 12:11:49 -07:00
Patrick Walton
32de1d3441
Decouple text renderers from HTML canvas elements.
...
This allows for offscreen rendering of text.
2017-10-17 12:10:20 -07:00
Patrick Walton
562851fd6e
Lint against long lines
2017-10-17 11:58:03 -07:00
Patrick Walton
9278a4e0e3
Move the text rendering and atlas code out of the text demo so that it
...
can be reused elsewhere
2017-10-17 11:54:13 -07:00
Patrick Walton
03ee672787
Separate the GPU rendering component of views from the view objects
...
themselves in the demo.
This (mostly) enables rendering outside a view.
2017-10-16 22:26:25 -07:00
Patrick Walton
976b924842
Decouple mesh-specific data from GL-context-wide data in the demo
2017-10-16 16:48:02 -07:00
Patrick Walton
81787f4750
Remove `MonochromeDemoView`
2017-10-16 16:11:00 -07:00
Patrick Walton
7a0ade99e2
Support subpixel AA in the benchmark
2017-10-16 16:08:05 -07:00
Patrick Walton
30356400fd
Merge pull request #35 from Bobo1239/master
...
Fix demo client compilation on Windows
2017-10-16 15:04:00 -07:00
Patrick Walton
cc16158a91
Decouple antialiasing strategies from views in the demo
2017-10-16 13:36:22 -07:00
Patrick Walton
d8713f214c
Use the Rust benchmarking algorithm for less noisy results
2017-10-15 14:37:44 -07:00
Boris-Chengbiao Zhou
dec99769f1
Fix demo client compilation on Windows
2017-10-15 23:23:09 +02:00
Patrick Walton
314185684c
Implement stem darkening and split ECAA into ECAA and MCAA.
...
We now implement stem darkening (also known as font dilation) like
macOS and FreeType under certain configurations. This pushes out font
outlines along their normals slightly in order to make small text easier
to read. This is especially important when performing gamma correction,
as otherwise text can end up too light.
Because the stem darkening is implemented in the vertex shader, it can
easily break the mesh. Therefore, I needed to implement a new rendering
mode that does not use the mesh. It's a variant of ECAA, and for
clarity's sake I've renamed the related antialiasing methods:
* MCAA stands for "mesh coverage antialiasing" and is the new name for
what was called "ECAA" prior to this patch.
* ECAA now stands for "edge coverage antialiasing". It does not use the
mesh but rather computes winding numbers from scratch for every pixel.
Surprisingly, despite being worse asymptotically, this usually ends up
being faster than MCAA at small font sizes, presumably because there are
fewer vertices to transform.
* XCAA, "exact coverage antialiasing" is a generic term that refers to
both ECAA and MCAA. References to ECAA have been changed to XCAA as
needed.
2017-10-15 13:28:49 -07:00