Commit Graph

1742 Commits

Author SHA1 Message Date
Patrick Walton 2c8c11b303 Get a bare-minimum benchmark up and running 2017-09-12 12:40:14 -07:00
Patrick Walton a7d75f913c Split paths into monotonic segments before partitioning them in the demo 2017-09-12 09:35:57 -07:00
Patrick Walton c3e02d6faa Add a streaming API for monotonic path conversion, untested as of yet 2017-09-11 22:28:14 -07:00
Patrick Walton 19e8305eaa Start the 3D camera out at a more interesting place 2017-09-11 19:37:18 -07:00
Patrick Walton eae20eb7ca Fix glyph positioning in the 3D view 2017-09-11 19:09:43 -07:00
Patrick Walton 7d3afa0e74 Initially zoom the SVG to fit 2017-09-11 17:56:37 -07:00
Patrick Walton 94c5ea181f Initially zoom the text to fit in the text demo 2017-09-11 16:57:53 -07:00
Patrick Walton 3dd1d73f81 Start the camera centered on the text in the text demo 2017-09-11 16:07:11 -07:00
Patrick Walton 6e4f0b0734 Add support for WASD keyboard controls to the 3D demo 2017-09-11 13:23:25 -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 0f3b5d6c3c Papercut: Don't allow navbar text to be selected 2017-09-11 12:23:43 -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 bd3536d058 Simplify a couple of getters in the mesh debugger 2017-09-11 11:22:06 -07:00
Patrick Walton 5eec2c5b6f Fix settings button in the 3D demo 2017-09-11 11:21:38 -07:00
Patrick Walton 28699f9dfb Upgrade dependencies 2017-09-11 11:21:19 -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 43513da957 Add a simple model of the Mozilla Monument to the 3D scene 2017-09-09 00:04:35 -07:00
Patrick Walton 473c28e16d Add screenshot functionality to the demo 2017-09-08 20:10:29 -07:00
Patrick Walton f5eea1cc7a Add a screenshot button, nonfunctional at the moment 2017-09-08 17:21:28 -07:00
Patrick Walton c36896e337 Implement path stroking using the FreeType stroker.
I'm not too happy with this, as I discovered a segfault in FreeType that doesn't give me confidence
in this as a solution for the long term. Additionally, this exposes the problems in the partitioner
with lack of winding fill rule, proper handling of self-intersections, and splitting of paths at
their extrema. (I believe these problems should be fairly straightforward to handle, but we just
don't handle them yet.)
2017-09-08 16:50:27 -07:00
Patrick Walton 3e5b53f13c Partially refactor the path APIs to be streaming, like Lyon 2017-09-08 13:09:00 -07:00
Patrick Walton 57374e9f30 Add all four sides of the Mozilla Monument to the 3D demo 2017-09-07 19:01:55 -07:00
Patrick Walton e34ca3d3e4 Stub support for multiple text frames 2017-09-07 16:13:55 -07:00
Patrick Walton 3ee066bdf0 Implement subpixel ECAA 2017-09-07 14:58:41 -07:00
Patrick Walton 6cbc7dc082 Use some names from the Mozilla Monument in the 3D demo 2017-09-06 22:50:07 -07:00
Patrick Walton 7de664e4a9 Implement some rudimentary text layout for the 3D demo 2017-09-06 22:11:32 -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 2166f9fa07 Reverse Z order of interior elements for early Z 2017-09-06 18:28:23 -07:00
Patrick Walton cedce49a1d Perform color defringing in the shader using the FreeType algorithm 2017-09-06 16:50:36 -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 acf2e0be00 Implement mesh expansion so that the 3D demo can actually render strings of text 2017-09-06 14:11:58 -07:00
Patrick Walton 4b7ac0182c Implement basic working 3D support 2017-09-05 19:47:19 -07:00
Patrick Walton a599db4eb9 Choose prettier default settings for the demo 2017-09-05 12:57:01 -07:00
Patrick Walton df20bcff5c Fix incorrect depth test in monochrome ECAA mode 2017-09-05 12:48:08 -07:00
Patrick Walton a9dd33d479 Stub a shader for objects in the 3D demo 2017-09-03 19:24:28 -07:00
Patrick Walton 4ab917b79b Snap baselines to the nearest pixel 2017-09-03 16:35:10 -07:00
Patrick Walton 24cfb03c66 Don't count the padding between glyphs as part of the atlas rect.
This was causing nasty aliasing artefacts.
2017-09-03 13:12:33 -07:00
Patrick Walton f968a4ac20 Don't do server-side hinting 2017-09-03 13:03:45 -07:00
Patrick Walton 049b8eba97 Initial work on perspective camera control for the 3D demo 2017-09-02 13:41:08 -07:00
Patrick Walton 7360a41a60 Factor camera logic into a separate object in preparation for the 3D demo 2017-09-02 12:14:10 -07:00
Patrick Walton 444e7bbf96 Use the Citardauq Formula in the partitioner as well as the shader to avoid precision problems.
Addresses the issue with the Nimbus Sans "o" mentioned in #24.
2017-09-01 23:45:51 -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 bc79c56eac Fix currentTarget/target mixup 2017-08-31 20:04:42 -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 982c97771c Get the 3D view rendering something 2017-08-31 19:19:26 -07:00
Patrick Walton f182686ba8 Do some more refactoring in preparation for the 3D view 2017-08-31 17:08:22 -07:00
Patrick Walton b75c327017 Factor out text layout into a separate class so it can be used by the text and 3D demos 2017-08-31 16:33:21 -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 64e3558986 Considate `resources` directories 2017-08-29 19:27:05 -07:00
Patrick Walton f87ff0a9e0 Add Open Sans as a built-in font and fix handling of multiple consecutive off-curve points 2017-08-29 19:22:27 -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 eca1b36956 Render the fills on the tiger correctly 2017-08-29 14:15:23 -07:00
Patrick Walton c47aa5c4d0 Get the SVG demo rendering something 2017-08-29 12:29:16 -07:00
Patrick Walton 8e2172f06f Start implementing basic SVG rendering. Not working yet. 2017-08-28 22:11:15 -07:00
Patrick Walton 0bae14b326 Render SVG paths to an off screen framebuffer 2017-08-28 17:18:44 -07:00
Patrick Walton 4d16df17db Implement the server-side support for SVG path partitioning in the demo 2017-08-28 16:47:27 -07:00
Patrick Walton e5f1f3ccfb Remove unused dependency 2017-08-27 12:45:05 -07:00
Patrick Walton 5f28f8b666 Stub out some more functionality for the SVG demo 2017-08-27 12:43:17 -07:00
Patrick Walton 72f5f4ee6d Factor antialiasing strategies out into separate modules 2017-08-26 13:47:18 -07:00
Patrick Walton 9e7d922863 Factor out the app controller logic so we can support multiple demos more easily 2017-08-26 12:54:25 -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
Patrick Walton defa2d63c3 Support multiple lines of text 2017-08-25 17:02:11 -07:00
Patrick Walton 1c21771414 Add EB Garamond as another test font 2017-08-25 17:02:03 -07:00
Patrick Walton 5f347087a7 Only render glyphs in view 2017-08-25 15:39:13 -07:00
Patrick Walton c0914a0c87 Fix a bunch of text layout issues 2017-08-25 12:20:36 -07:00
Patrick Walton d24dd7ce24 Fix off by one error in glyph atlas rects 2017-08-24 19:39:07 -07:00
Patrick Walton cae6e16416 Make some more methods and attributes private 2017-08-24 19:33:58 -07:00
Patrick Walton 99767ce48d Make a bunch of methods and properties private 2017-08-24 19:30:53 -07:00
Patrick Walton 77db92bc42 Fix off by one error in the path color buffer 2017-08-24 16:23:02 -07:00
Patrick Walton 1213eaa3d7 Make the atlas texture bigger and scissor to improve clearing performance on Intel Mac 2017-08-24 16:18:26 -07:00
Patrick Walton 132b6e183b Fix the pan/zoom logic in `onWheel()` 2017-08-24 13:34:45 -07:00
Patrick Walton 14b7b88b3f Take the last control point before closing a subpath into account 2017-08-24 13:02:35 -07:00
Patrick Walton 07d425dfb2 Split the ECAA shader into separate shaders for monochrome and multicolor 2017-08-24 12:08:58 -07:00
Patrick Walton ad565ffde7 Use early Z to avoid resolving blank areas for ECAA. ~50% speedup. 2017-08-24 11:43:38 -07:00
Patrick Walton 81a6f8f051 Enable early Z for edge detection and render only in the used area of the atlas 2017-08-23 19:18:24 -07:00
Patrick Walton ed0288906c Use a fixed atlas size and reuse textures/FBOs more aggressively 2017-08-23 13:23:29 -07:00
Patrick Walton 52afa359b4 Render a line of text using the atlas 2017-08-22 18:25:32 -07:00
Patrick Walton 7db61bfe8e Add a transform parameter to blit and switch framebuffer sizes to be `glmatrix.vec2` types 2017-08-19 16:52:14 -07:00
Patrick Walton 93277c7c11 Allow multiple glyphs to be rendered simultaneously 2017-08-19 16:34:02 -07:00
Patrick Walton 9b3f9d029c Fix flipped inequality in the shader causing AA artefacts 2017-08-19 11:37:06 -07:00
Patrick Walton 9f194b7618 Add timing measurement 2017-08-19 09:57:54 -07:00
Patrick Walton da6483c3ab Add basic support for panning and zooming in the demo 2017-08-18 22:11:52 -07:00
Patrick Walton 37c947c751 Get basic ECAA fully working 2017-08-18 20:23:45 -07:00
Patrick Walton 343c67aa33 Remove commented out debug code 2017-08-18 17:13:44 -07:00
Patrick Walton 653530be0b Add a curve shader for ECAA and refactor the line shader to minimize code duplication 2017-08-18 17:12:58 -07:00