Commit Graph

841 Commits

Author SHA1 Message Date
Patrick Walton e09b447d0d Move the contents of `gl::device` into `gl` 2019-03-05 14:51:29 -08:00
Patrick Walton f7a8b573ce Move the GPU rendering code out of `pathfinder_gl`, since it's now no longer
OpenGL-specific
2019-03-05 14:46:18 -08:00
Patrick Walton bc80490158 Remove raw GL code from the demo 2019-03-05 13:57:28 -08:00
Patrick Walton 6b9adcb6fc Fix GPU abstraction 2019-03-05 13:22:11 -08:00
Patrick Walton 8b4c06fe2a Do GL error checks 2019-03-04 19:43:13 -08:00
Patrick Walton ae450b063e WIP: Factor out GL code 2019-03-04 14:55:32 -08:00
Patrick Walton 64b480fe32 Some more work on the site 2019-03-01 14:58:02 -08:00
Patrick Walton dc69d1197e Tweak debug UI 2019-02-26 15:24:39 -08:00
Patrick Walton 18e0a06df8 Update the README for Pathfinder 3 2019-02-26 15:24:25 -08:00
Patrick Walton 92777c6346 Make rects rounded and optimize PNGs 2019-02-26 13:48:35 -08:00
Patrick Walton 5c7423d59c Add more statistics to the performance debug window 2019-02-25 16:12:47 -08:00
Patrick Walton 19c14da3aa Center the SVG in the 2D demo 2019-02-25 15:25:08 -08:00
Patrick Walton 550c9feb58 Move the device code in the demo into its own file 2019-02-25 15:14:40 -08:00
Patrick Walton ac24b67300 Add a simple SVG-subset-to-Skia-code tool, for benchmarking 2019-02-25 15:06:33 -08:00
Patrick Walton f6af769486 Add screenshot functionality. 2019-02-25 11:33:26 -08:00
Patrick Walton aef7dd1353 Allow the background color to be changed in the demo 2019-02-22 18:21:03 -08:00
Patrick Walton 1e3298fdb7 Switch to guard-band style clipping to eliminate artefacts 2019-02-22 13:15:00 -08:00
Patrick Walton e10e2e97d4 Tweak the camera transforms in the 3D view 2019-02-22 11:54:01 -08:00
Patrick Walton 0da196aa92 Scale the SVG appropriately in the demo 2019-02-21 20:19:42 -08:00
Patrick Walton b6e334a5bb Fix temporal inconsistency in the demo between transform applied between vector
scene and environment
2019-02-21 12:09:02 -08:00
Patrick Walton 66ee901e43 Close the path if necessary when rebuilding it for clipping 2019-02-21 11:42:48 -08:00
Patrick Walton fc62e9bc71 Subdivide offset curves to an error bound. 2019-02-20 18:27:27 -08:00
Patrick Walton 3a8478a048 Remove all Lyon dependencies.
We may want to re-merge at a later date, but for now all relevant algorithms
have been appropriately SIMD-ified.
2019-02-20 16:46:50 -08:00
Patrick Walton 23943c7428 Add a flag to specify whether contours are closed 2019-02-20 16:32:40 -08:00
Patrick Walton b9e3952246 Reimplement segment offsetting 2019-02-20 16:21:58 -08:00
Patrick Walton d75ed71af4 WIP before moving to a segment basis 2019-02-20 12:41:43 -08:00
Patrick Walton c7a1d9e960 Use stencil to integrate the vector scene into the 3D environment 2019-02-19 12:03:02 -08:00
Patrick Walton 3b8ecfd74c WIP before removing barycentric coordinates 2019-02-18 18:13:10 -08:00
Patrick Walton 9af3bac11f Implement depth interpolation, not working yet 2019-02-18 13:42:30 -08:00
Patrick Walton 661a865508 Fill depth when drawing the ground plane 2019-02-15 19:07:42 -08:00
Patrick Walton d30743a69c Begin refactoring the demo into a shared library and a platform-specific
entry point.

This will help the upcoming wasm port.
2019-02-15 18:21:46 -08:00
Patrick Walton 63b59df375 Start a new Web site 2019-02-15 17:29:35 -08:00
Patrick Walton e4803cfddf Add some ground to the 3D scene, no depth buffer yet 2019-02-14 18:53:02 -08:00
Patrick Walton 0983812b90 Rotate and scale around the appropriate points in the demo 2019-02-13 16:05:28 -08:00
Patrick Walton 4053b7dd0c Add zoom in and zoom out buttons for input devices without gesture support 2019-02-13 10:32:25 -08:00
Patrick Walton cb9c14bd59 Remove the Pathfinder 2 orientation computation code 2019-02-12 19:56:44 -08:00
Patrick Walton dbc14a3fc0 Remove the `normals` module, as we now dilate outlines directly 2019-02-12 19:55:58 -08:00
Patrick Walton e3cca6a676 Remove the `cubic_to_quadratic` module, as it's unneeded now 2019-02-12 19:51:48 -08:00
Patrick Walton fb692acf05 Open a default SVG if none is supplied on the command line 2019-02-12 19:31:29 -08:00
Patrick Walton 2eccdba360 Allow pinch zoom in 2D mode 2019-02-12 15:00:33 -08:00
Patrick Walton d7f6d9eb3d Allow the canvas to be dragged in 2D mode 2019-02-12 14:49:24 -08:00
Patrick Walton 398718a3c8 Allow the rotation slider to be dragged 2019-02-12 12:49:35 -08:00
Patrick Walton 22fe63503f Implement 2D rotation 2019-02-12 12:40:24 -08:00
Patrick Walton a9ac960862 Load a new scene when the user requests it 2019-02-12 11:16:49 -08:00
Patrick Walton 7511b3bd2f Add a `LoadScene` message to the backend thread 2019-02-12 11:03:37 -08:00
Patrick Walton 31f1fae951 Add a TODO about monotonic conversion 2019-02-12 08:57:49 -08:00
Patrick Walton f04c000cae Add a quick check to skip clipping when an outline is entirely inside or
outside the clip area
2019-02-09 19:24:30 -08:00
Patrick Walton 92421943fc Open a file dialog when the user clicks on the open file 2019-02-08 21:08:03 -08:00
Patrick Walton 6afbafcb43 Split out the demo UI code into a separate module 2019-02-08 20:58:54 -08:00
Patrick Walton dbce7e3ad1 Fix dirty tracking to stop using 100% CPU 2019-02-08 20:51:34 -08:00
Patrick Walton 3cc8f7a11f Refactor the demo some 2019-02-08 15:39:47 -08:00
Patrick Walton 725834285b Refactor the demo a bit 2019-02-08 15:16:53 -08:00
Patrick Walton dbf880d011 Rename `demo3` to `demo` 2019-02-08 14:53:20 -08:00
Patrick Walton ade3b5fbb9 Remove Pathfinder 2 shaders 2019-02-08 14:44:25 -08:00
Patrick Walton faad8c3950 Remove old resources 2019-02-08 14:43:47 -08:00
Patrick Walton 2f497e7f17 Remove unused `gfx-utils` 2019-02-08 14:42:17 -08:00
Patrick Walton 39d6b1d9c2 Remove the old Pathfinder 3 demo 2019-02-08 14:41:06 -08:00
Patrick Walton 4062f824fd Remove the Pathfinder 2 demo 2019-02-08 14:39:35 -08:00
Patrick Walton 2a118c3af0 Get all postprocessing filters working 2019-02-08 14:37:30 -08:00
Patrick Walton ba5a0f987c Add basic postprocessing support 2019-02-08 13:55:31 -08:00
Patrick Walton 035baf656b Make the 2D/3D switch work 2019-02-07 16:58:11 -08:00
Patrick Walton a8cc87bfd7 Make the effects window togglable 2019-02-07 16:38:24 -08:00
Patrick Walton 7429821867 Move demo UI to the demo 2019-02-07 15:35:21 -08:00
Patrick Walton c9a80304dc Add some more (non-functional) UI widgets to the demo 2019-02-07 14:07:05 -08:00
Patrick Walton 0b662b0660 Draw a settings button, not functional yet 2019-02-06 20:59:29 -08:00
Patrick Walton a81850a899 Add window resizing support to the demo 2019-02-06 18:09:37 -08:00
Patrick Walton a6963d5f3b Optimize dilation. 2019-02-06 13:48:50 -08:00
Patrick Walton 6920583086 wip 2019-02-06 13:46:19 -08:00
Patrick Walton b5c73f25f0 wip 2019-02-06 13:45:15 -08:00
Patrick Walton 27e47b4c39 wip 2019-02-06 13:12:53 -08:00
Patrick Walton 8771dd6789 wip: dilation not working yet 2019-02-05 20:10:20 -08:00
Patrick Walton 45dec44a53 wip 2019-02-05 13:21:33 -08:00
Patrick Walton 7151d82d76 Stop converting SVG paths to monotonic paths early 2019-02-05 12:23:43 -08:00
Patrick Walton 3d0463999c Add a SIMD integer rect type 2019-02-05 10:55:01 -08:00
Patrick Walton fe410e066f Add a SIMD rect type 2019-02-05 10:03:20 -08:00
Patrick Walton 63b47f1abe Move basic geometry primitives to the `pathfinder_geometry::basic` module 2019-02-04 20:20:32 -08:00
Patrick Walton f25682f0f1 Add a defringing shader for subpixel antialiasing, untested as of yet 2019-02-04 16:04:13 -08:00
Patrick Walton a5234e6695 Stop clipping 3D quads over and over 2019-02-02 13:53:04 -08:00
Patrick Walton b0e91369e5 Do scene building just-in-time on a per-outline basis as part of tiling 2019-02-02 11:36:42 -08:00
Patrick Walton f19757e4cf Add a fast path for monotonic conversion 2019-02-02 11:12:54 -08:00
Patrick Walton 70e615205e Optimize monotonic conversion a little bit 2019-02-01 19:10:42 -08:00
Patrick Walton ca3a8852a6 Add more fast paths to the clipper 2019-02-01 18:25:48 -08:00
Patrick Walton d08ff40cdf Add a fast AABB check to the rect clipper 2019-02-01 17:57:26 -08:00
Patrick Walton 4c5e351829 Use a fast path for axis aligned clipping 2019-02-01 17:49:03 -08:00
Patrick Walton 805f0c9fa7 Trait-ify the 2D clipper 2019-02-01 17:27:23 -08:00
Patrick Walton df59fd9792 Rename `Point4DF32` to `Point3DF32` 2019-02-01 17:07:03 -08:00
Patrick Walton 6a286ab153 Remove `Point3DF32` 2019-02-01 17:05:35 -08:00
Patrick Walton 42bb7acddb Add some tests for SIMD 2019-02-01 16:58:35 -08:00
Patrick Walton f9aed5b077 Add some more SIMD stuff 2019-02-01 15:19:44 -08:00
Patrick Walton 2487d71879 Add more shuffles and rename combines for clarity 2019-02-01 12:16:42 -08:00
Patrick Walton 0b0c913332 Split out SIMD into a separate crate 2019-02-01 11:48:10 -08:00
Patrick Walton eb9b4a2a06 Work around macOS Radeon driver bug 2019-01-31 19:10:59 -08:00
Patrick Walton 49bc8e16a0 Put the scene building in a background thread.
Large increase in FPS!
2019-01-31 18:21:50 -08:00
Patrick Walton 89244ba6cf Do clipping in 3D homogeneous space 2019-01-31 15:29:13 -08:00
Patrick Walton 4801503dd8 Fix curve/edge intersection logic in clipping 2019-01-31 10:12:37 -08:00
Patrick Walton dd480feb52 Factor out the GL rendering code into a separate crate 2019-01-30 19:31:29 -08:00
Patrick Walton b6432fa47d Add basic timer query support.
Inaccurate on macOS.
2019-01-30 15:30:40 -08:00
Patrick Walton e105bdb7c9 Display timing info in the demo 2019-01-30 14:42:06 -08:00
Patrick Walton 6b8848bb35 Fix boundary condition for active edges precisely on tile boundaries 2019-01-29 19:29:42 -08:00
Patrick Walton 13716fd733 Fix 3D velocity controls 2019-01-29 15:44:31 -08:00