Commit Graph

157 Commits

Author SHA1 Message Date
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 3efca89235 Don't call `Font.toArrayBuffer()` in the mesh debugger, as that's really slow 2017-09-24 11:49:15 -07:00
Patrick Walton 2197896c4f Keep the camera and view in a sensible state when changing fonts in the text demo 2017-09-23 13:09:45 -07:00
Patrick Walton 8c518deebe Do a better job of approximating cubic Bézier curves with quadratics
This still isn't great, but it's a lot better than the old approximation, which was just bogus.
2017-09-22 17:15:19 -07:00
Patrick Walton 88f1d3f108 Fix de Casteljau subdivision when a curve has two inflection points 2017-09-22 13:40:41 -07:00
Patrick Walton be1b100826 Split B-quads whose curves' convex hulls intersect in most cases.
Avoids some rendering artefacts with Loop-Blinn, improving the tiger.
2017-09-21 22:47:00 -07:00
Patrick Walton 4ac11e9010 Switch to a more robust intersection algorithm based on implicitization 2017-09-20 21:23:56 -07:00
Patrick Walton dafb18fd1d Allow custom SVGs to be opened in the mesh debugger 2017-09-20 12:01:46 -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 914179763d Improve the mesh debugger in various ways 2017-09-19 22:27:31 -07:00
Patrick Walton 0e9a59088c Implement bare-bones support for debugging SVG meshes 2017-09-19 20:19:53 -07:00
Patrick Walton e7a6861846 Factor the SVG loading functionality out of the SVG demo.
This allows the mesh debugger to use it.
2017-09-19 18:04:42 -07:00
Patrick Walton a5b0e9bf9a Allow different glyphs to be selected in the mesh debugger 2017-09-19 17:36:12 -07:00
Manish Goregaokar 9a0fa96d4f
demo/client: Make WASD composable
Currently movement works in the direction of the latest key pressed.
Moving diagonally is not possible, and if you are pressing two keys
and release one, movement stops instead of switching over.

This keeps track of the key press state and updates the movement delta
accordingly, leading to much more natural/pleasant WASD navigation.

Note than onKeyDown is called multiple times when you press and hold,
so we must keep track of this state ourselves.
2017-09-19 16:34:41 -07:00
Patrick Walton 83cfb1d9d5 Make glyphs transparent.
Avoids cutting off the bottom of the "g" in the text demo.
2017-09-19 13:57:56 -07:00
Patrick Walton 22d2a6590b Blend when compositing in the text demo 2017-09-19 11:42:37 -07:00
Patrick Walton 820c4bec18 Round canvas sizes to properly handle fractional device pixel ratios.
Fixes nasty artefacts seen on Windows HiDPI screens with certain system settings.
2017-09-17 10:06:53 -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 5d267cc2c8 Take the xMin/left values of the glyphs' bounds into account when determining their pixel rects.
This prevents glyph images from "bleeding" into each other horizontally.
2017-09-15 15:57:32 -04: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 445d00fed3 Prevent the user from flipping the camera upside down in the 3D view 2017-09-15 09:31:19 -07:00
Patrick Walton 82f876c4ff Take `WheelEvent.deltaMode` into account when panning 2017-09-15 09:22:56 -07:00
Patrick Walton a5d0df6a96 Implement simple collision detection in the 3D demo 2017-09-14 18:48:55 -07:00
Patrick Walton b48b256ab3 Actually reverse indices for early Z!
2x performance improvement. I feel silly.
2017-09-14 17:20:54 -07:00
Patrick Walton 42151cc334 Fix text positioning and improve performance in the 3D demo.
This implements a simple form of software backface culling to reduce vertex shading load.
2017-09-14 15:16:06 -07:00
Patrick Walton 0087c1ed50 Add SSAA support to the benchmarking tool 2017-09-13 21:41:33 -07:00
Patrick Walton 299bcd685e Fix scaling of the benchmark 2017-09-13 21:03:10 -07:00
Patrick Walton adf960bafe Make the GitHub corner stay in place when zooming and not widen the pages 2017-09-13 20:59:19 -07:00
Patrick Walton 8b34fa5461 Enable SSAA by default in the SVG demo 2017-09-13 20:45:48 -07:00
Patrick Walton a21afa9bb7 Fix the interaction between the camera and SSAA in the SVG demo 2017-09-13 20:41:04 -07:00
Patrick Walton 5c45b6f94e Prevent the user from scrolling the text out of view 2017-09-13 18:39:19 -07:00
Patrick Walton 6642cc7aa4 Limit how far the user can zoom the camera out 2017-09-13 13:30:26 -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 65eecbf071 Don't allow the user to zoom in so far that we run out of space in the glyph atlas 2017-09-12 22:32:18 -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 6fec73b2f7 Make sure all glyphs stay in the viewport when running the benchmark 2017-09-12 16:07:04 -07:00
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 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 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 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