Commit Graph

47 Commits

Author SHA1 Message Date
Patrick Walton 7a0ade99e2 Support subpixel AA in the benchmark 2017-10-16 16:08:05 -07: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
Patrick Walton d4c7fa74bd Add a feature to save benchmark data as CSV 2017-10-05 11:46:53 -07:00
Patrick Walton 60ff71be84 Add an experimental implementation of macOS-like font dilation
Following Apple's earlier terminology, this is exposed as "strong"
subpixel AA.
2017-09-29 22:12:24 -07:00
Patrick Walton 37a88dfcd9 Use the Inter UI font in the demo 2017-09-28 15:23:52 -07:00
Patrick Walton b6c6c70ef0 Benchmark the server-side partitioning 2017-09-26 15:38:50 -07:00
Patrick Walton 6b0c215148 Get ECAA working in the benchmark 2017-09-26 13:32:22 -07:00
Patrick Walton 1c138cc543 Display benchmark results in a dialog box instead of on the console 2017-09-25 19:56:12 -07:00
Patrick Walton b732878532 Encapsulate the file picker code into a view class.
This will allow the mesh debugger to use it.
2017-09-20 11:51:20 -07:00
Patrick Walton 0e9a59088c Implement bare-bones support for debugging SVG meshes 2017-09-19 20:19:53 -07:00
Patrick Walton a5b0e9bf9a Allow different glyphs to be selected in the mesh debugger 2017-09-19 17:36:12 -07:00
Patrick Walton 45927f6299 Add a CSS spinner to the HTML templates.
This will allow us to make loading a nicer experience.

Source: http://tobiasahlin.com/spinkit/
2017-09-16 10:41:25 -07:00
Patrick Walton 375dbe7ab9 Make sure scrollbars don't show up on demo and tool pages 2017-09-15 09:40:26 -07:00
Patrick Walton 0087c1ed50 Add SSAA support to the benchmarking tool 2017-09-13 21:41:33 -07:00
Patrick Walton 8b34fa5461 Enable SSAA by default in the SVG demo 2017-09-13 20:45:48 -07:00
Patrick Walton d64a28c166 Beautify the timings display and make it work with the SVG and 3D demos 2017-09-13 11:56:40 -07:00
Patrick Walton f68da75c75 Implement SSAA for the 3D demo.
This commit additionally refactors transforms to be resolution-independent as much as possible throughout all the demos.
2017-09-12 19:43:43 -07:00
Patrick Walton 2c8c11b303 Get a bare-minimum benchmark up and running 2017-09-12 12:40:14 -07:00
Patrick Walton e13f0f7006 Papercut: Stop the GitHub corner from overlapping the demo content 2017-09-11 12:27:09 -07:00
Patrick Walton 72fa6a7b55 Allow demos to be dragged with the mouse when applicable 2017-09-11 12:21:50 -07:00
Patrick Walton 068e2bd99e Stub a benchmarking tool, not working yet 2017-09-11 11:22:19 -07:00
Patrick Walton 5eec2c5b6f Fix settings button in the 3D demo 2017-09-11 11:21:38 -07:00
Patrick Walton 65e3278e94 Add zoom in and zoom out buttons for those without scale gestures 2017-09-10 13:17:24 -07:00
Patrick Walton ce855cc0ff Enable subpixel AA and hinting by default in the demo 2017-09-09 13:14:25 -07:00
Patrick Walton eb9c0ceb4d Implement "slight" hinting by rounding x-heights up to the nearest pixel 2017-09-09 13:12:51 -07:00
Patrick Walton f5eea1cc7a Add a screenshot button, nonfunctional at the moment 2017-09-08 17:21:28 -07:00
Patrick Walton 2cce20db10 Swap the locations of the FPS meter and the settings button in preparation for more UI 2017-09-06 18:47:14 -07:00
Patrick Walton 3378fb3447 Make clicking outside the settings popup dismiss it 2017-09-06 18:39:14 -07:00
Patrick Walton 82d2f076d7 Add basic subpixel AA support for SSAA.
No LCD filter is implemented yet, so the color fringing is currently fairly extreme.
2017-09-06 16:32:11 -07:00
Patrick Walton a599db4eb9 Choose prettier default settings for the demo 2017-09-05 12:57:01 -07:00
Patrick Walton 632202e5eb Implement a basic mesh debugger 2017-09-01 22:29:05 -07:00
Patrick Walton 1eb1bb5343 Stub a mesh debugger app 2017-09-01 18:11:44 -07:00
Patrick Walton a43a09b9d3 Allow the demo text to be changed by double-clicking 2017-09-01 16:31:40 -07:00
Patrick Walton 9f6f10deca Tweak the GitHub corner 2017-08-31 20:04:49 -07:00
Patrick Walton 67eaa499c0 Add a GitHub corner from http://tholman.com/github-corners/ 2017-08-31 19:57:41 -07:00
Patrick Walton a1013de5ba Expose the Rust API documentation via the server 2017-08-31 19:47:58 -07:00
Patrick Walton e448ba7b30 Switch from ES6 interpolation to Handlebars and add a simple landing page 2017-08-30 23:25:58 -07:00
Patrick Walton d6767219ff Automatically load some built-in fonts and SVGs 2017-08-30 19:48:18 -07:00
Patrick Walton 58b558de64 Make the demo UI less cluttered 2017-08-30 17:01:28 -07:00
Patrick Walton d7b606987a Update to Bootstrap 4 beta 2017-08-30 09:51:15 -07:00
Patrick Walton 7029248610 Stub a 3D demo 2017-08-29 19:46:18 -07:00
Patrick Walton 8d6636b1cf Add `-demo` to the SVG and text demo files 2017-08-29 18:57:43 -07:00
Patrick Walton 40c0e9b8c5 Use ES6 templates to reduce duplication in the demo HTML 2017-08-29 16:04:40 -07:00
Patrick Walton cd3c1c996c Get SSAA working for the tiger 2017-08-29 14:31:45 -07:00
Patrick Walton 5f28f8b666 Stub out some more functionality for the SVG demo 2017-08-27 12:43:17 -07:00
Patrick Walton 01d1382324 Begin splitting up `index.ts` 2017-08-25 20:20:45 -07:00
Patrick Walton 894226e023 Stub an SVG demo page 2017-08-25 19:40:08 -07:00