Commit Graph

179 Commits

Author SHA1 Message Date
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
Patrick Walton 3a9b29735a Get exact antialiasing mostly working for lines (no curves yet) 2017-08-18 15:17:23 -07:00
Patrick Walton a9eeec39fe Implement the line antialiasing shader, untested as of yet 2017-08-18 11:44:17 -07:00
Patrick Walton ccf5000e1c Get the cover step mostly working 2017-08-17 22:47:28 -07:00
Patrick Walton 9a7063a29b Render conservative coverage. Not working yet. 2017-08-17 20:09:18 -07:00
Patrick Walton ec78a632dc Split path IDs and Loop-Blinn data into separate VBOs 2017-08-17 12:47:50 -07:00
Patrick Walton 0a4d57580a Add the ECAA cover shader, untested as of yet 2017-08-16 19:51:13 -07:00
Patrick Walton 4b62ec8fa7 Get edge detection working in the demo 2017-08-16 16:37:39 -07:00
Patrick Walton b10807d217 Initial setup for ECAA in the demo 2017-08-15 22:09:09 -07:00
Patrick Walton 3f7fc8baf6 Add an edge detection shader for ECAA, untested as of yet 2017-08-15 17:28:07 -07:00
Patrick Walton 7dc8f5debb Switch to depth textures to aid edge detection 2017-08-15 16:51:26 -07:00
Patrick Walton 0f5b23622a Implement SSAA in the demo 2017-08-15 15:57:52 -07:00
Patrick Walton 8bae26b521 Implement some antialiasing strategy infrastructure 2017-08-15 13:38:54 -07:00
Patrick Walton eb7cfe7c5f Fetch the colors of paths 2017-08-14 21:24:58 -07:00
Patrick Walton 309034b7dd Implement basic Loop-Blinn curves 2017-08-14 19:08:18 -07:00
Patrick Walton f8bd405759 Get basic polygons rendering in the demo 2017-08-14 16:08:45 -07:00
Patrick Walton 5f89f7ba50 Fix compile errors in shaders 2017-08-13 13:39:51 -07:00
Patrick Walton d0dd883ddf Switch to the Fetch API 2017-08-12 10:08:35 -07:00
Patrick Walton ee9c1a7998 Download shaders via XHR 2017-08-11 21:26:25 -07:00
Patrick Walton ebeaf119ba Add some OpenGL ES 2.0 shaders for direct rendering, untested 2017-08-11 18:12:17 -07:00
Patrick Walton 57ebbf8281 Split out B-vertex positions and info so that they're easier to pack into textures 2017-08-11 15:56:07 -07:00
Patrick Walton fa1b2390c7 Remove bad `extern crate` directive 2017-08-10 21:02:32 -07:00
Patrick Walton 933e4023ed Send mesh indices along to the client as well 2017-08-10 21:00:37 -07:00
Patrick Walton 5b84b052a0 Upload the chosen font to the server 2017-08-10 18:38:54 -07:00
Patrick Walton 3fcd4d472b Shuffle `BQuad` fields around for better alignment in GLSL 2017-08-10 17:47:46 -07:00
Patrick Walton 0ad2f9abfe Initial implementation of the Rocket-based demo server 2017-08-10 15:26:27 -07:00
Patrick Walton 92c5014ec6 font-renderer: Pull hinted outlines out of FreeType 2017-08-09 17:23:22 -07:00
Patrick Walton 2ddf95bd70 Initial work on the font renderer component 2017-08-09 15:36:41 -07:00
Patrick Walton 376faf8c38 Move `demo/` to `demo/client/` in preparation for making a partitioning web service 2017-08-08 11:35:10 -07:00
Patrick Walton 95b356435e Rename `partitionfinder` to `partitioner` and remove the old tessellator 2017-08-08 11:32:51 -07:00
Patrick Walton ef040b61bf Introduce demo skeleton code 2017-08-08 11:23:30 -07:00
Patrick Walton f4b8212280 Add a license file to `partitionfinder/`, and copy it into the root directory too so that GitHub
can display it.

Closes #23.
2017-08-07 10:22:10 -07:00
Patrick Walton 0e39b409ae Use de Casteljau subdivision to split curves instead of doing that repeatedly in the shader.
This doesn't seem to negatively affect performance on the CPU and reduces complexity overall.
2017-08-07 10:19:32 -07:00
Patrick Walton 8730df37a7 Quadratics work now for simple cases 2017-07-11 17:20:03 -07:00
Patrick Walton a7ba7d200e First draft of switch to quadratic Béziers 2017-07-10 20:07:10 -07:00
Patrick Walton 49026ae3c3 Fix off by one error 2017-07-10 14:52:43 -07:00
Patrick Walton a7b61969ff Fix compile errors in `partitionfinder.h` 2017-07-10 14:01:05 -07:00
Patrick Walton bd3d8aae44 Merge branch 'master' of github.com:pcwalton/pathfinder 2017-07-10 12:17:04 -07:00
Patrick Walton ca01e7eb6e Subdivide cubic Béziers in the legalizer if not monotonically increasing in X. 2017-07-10 12:16:58 -07:00
Patrick Walton efc8a8bfd7 Add the stub legalizer code to the C API 2017-07-09 13:59:33 -07:00
Patrick Walton 8bcf6de4f5 Add stub code for the legalizer, which will convert curves into monotonic segments. 2017-07-08 16:46:26 -07:00
Patrick Walton 9a9ef90cc9 Generate edge descriptors for instanced rendering when Levien AA is in use 2017-07-07 14:19:33 -07:00
Patrick Walton 0edb604612 Rename "bezieroid" to "B-quad" 2017-07-06 11:39:52 -07:00
Patrick Walton 56101cea9a Add `no_mangle` in a few places 2017-07-05 19:50:49 -07:00
Patrick Walton f2835071c7 Initial software tessellation code 2017-07-05 17:03:05 -07:00
Patrick Walton a066e77c72 Clear out old bezieroids when partitioning a new path. Oops! 2017-07-04 11:51:58 -07:00
Patrick Walton 410d2aa6cd Don't give up so quickly when performing Newton-Raphson 2017-07-03 20:25:55 -04:00
Patrick Walton 5393f63738 Set left endpoint indices properly on MIN points; basic paths without curves now partition properly 2017-07-03 20:02:59 -04:00
Patrick Walton 0468bbcc24 Fix more random silly bugs; a basic monotone polygon partitions correctly now 2017-07-03 19:26:55 -04:00
Patrick Walton ffd167a342 Various bug fixes 2017-07-03 15:32:22 -04:00
Patrick Walton b546ffebcc Fix issues with jemalloc; remove the needless path index from `Subpath` 2017-07-02 16:41:33 -04:00
Patrick Walton d695a3d11f Implement some missing geometry methods, and remove the `Path` type.
With the removal of the `Path` type, partitioning multiple paths becomes the responsibility of the user of the library. The reason is that users of the partitioner will frequently want to parallelize over paths via e.g. rayon or Grand Central Dispatch, and we shouldn't mandate a particular parallelism technique.
2017-07-02 15:48:57 -04:00
Patrick Walton 2fde50113c Initial commit of Pathfinder 2, still incomplete 2017-06-30 17:43:19 -07:00
Patrick Walton 93c928bf5c Move Pathfinder to `pathfinder-classic` in preparation for Pathfinder 2 2017-06-27 14:13:11 -07:00
Patrick Walton b75cd9e5a9 Add an API allowing for custom vector paths 2017-03-03 13:32:51 -08:00
Patrick Walton 7862bec2bb Speed up `lorem-ipsum`, especially in debug builds 2017-02-28 21:47:17 -08:00
Patrick Walton 45ade674be Refactor `lorem-ipsum` 2017-02-28 12:33:42 -08:00
Patrick Walton a9c4c7aa3e Implement most of the basic arithmetic and control structures in the hinting VM 2017-02-27 12:52:14 -08:00
Patrick Walton 6d66cfc30a Begin to implement the interpreter 2017-02-26 12:12:34 -08:00
Patrick Walton 37736b27b9 Fix interpreter a bit; Arial fpgm now parses 2017-02-24 12:19:32 -08:00
Patrick Walton 88d1e3163d Analyze branch targets in TrueType instructions 2017-02-24 09:38:46 -08:00
Patrick Walton 9c07c1a4a6 Parse TrueType instructions 2017-02-23 21:56:33 -08:00
Patrick Walton d29775c345 Add skeleton code for TrueType hinting, not functional yet 2017-02-23 17:41:52 -08:00
Patrick Walton b86133a4ef Initial experimental support for subpixel antialiasing 2017-02-22 16:31:44 -08:00