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
Patrick Walton
5e9b8c9423
Implement basic support for WOFF 1.0
2017-02-22 14:19:27 -08:00
Patrick Walton
9490fa2d3b
Split the `otf` module up into `containers` and `tables`.
...
Putting all container format parsing in `otf/mod.rs` won't scale as we add more, such as WOFF.
2017-02-22 10:22:14 -08:00
Patrick Walton
9fda8f6534
Move the subpixel positioning logic in `lorem-ipsum` to the Typesetter abstraction
2017-02-21 21:50:00 -08:00
Patrick Walton
68f5694b6b
Factor out more code from `lorem-ipsum` into a new `GlyphStore` abstraction
2017-02-21 15:51:39 -08:00
Patrick Walton
abacb5a4c9
Move some code from `lorem-ipsum` into a new `Typesetter` object so others can use it
2017-02-21 13:06:48 -08:00
Patrick Walton
49408b95cb
Add support for subpixel offsets.
...
Closes #11 .
2017-02-20 16:01:15 -08:00
Patrick Walton
e2014cff13
Add some missing CFF opcodes and refactor a bit
2017-02-16 20:39:25 -08:00
Patrick Walton
6ac37c5085
Support cubic Béziers for fonts with CFF outlines
2017-02-16 19:37:21 -08:00
Patrick Walton
a508322f34
Merge pull request #10 from stshine/gitignore
...
Add .gitignore
2017-02-16 16:23:55 -08:00