Commit Graph

32 Commits

Author SHA1 Message Date
Manish Goregaokar 3af3635eea Use correct viewport and clear correctly 2018-04-02 19:10:11 -07:00
Patrick Walton 6e13fb171c Use a lookup table to do area calculations instead of Loop-Blinn-style
distance-to-edge for stencil analytic antialiasing.

This improves the rendering quality of stencil AAA significantly.

Additionally, this adds an approximation of Core Graphics' (macOS')
defringing filter.

Closes #73.
2018-03-19 14:35:36 -07:00
Patrick Walton 82be5d12d1 Update dependencies and fix TypeScript build failures.
Closes #68.
2018-02-19 11:52:00 -08:00
Patrick Walton 429e4a3063 Remove clipping support from the SVG demo.
It's overengineering and was broken anyway. WebRender has much better
clipping support; let's centralize the logic in there.
2017-12-22 16:30:24 -08:00
Patrick Walton cfe72f486e Use a single-pass pixel-snapping MCAA algorithm instead of a multipass
ECAA algorithm for multicolor SVG.

This is much faster than both Skia and the previous XCAA algorithm
while maintaining slightly higher quality than the latter.

There are a couple of known issues:

* Vertical inflection points of hairlines with very steep slopes can
  become very light or even drop out occasionally. I suspect this is due
  to floating point error.

* Rarely, single columns of pixels can disappear from a mesh. Cause TBD.

Besides these bugs, this technique can be cleaned up and probably made
faster, but it's a sizable improvement as is.
2017-12-18 17:37:14 -08:00
Patrick Walton 5da56fea0b Fix 3D demo 2017-12-12 09:46:38 -06:00
Patrick Walton b8785a31db Implement 8xSSAA and 16xSSAA in the SVG demo 2017-12-11 19:02:20 -08:00
Patrick Walton 1102965f6d Use RGB5_A1 on macOS to work around driver stalls with RGBA 2017-12-11 12:18:48 -08:00
Patrick Walton 86df78f939 Flesh out the integration test more 2017-11-17 17:06:59 -08:00
Patrick Walton 9a5728aab6 Implement clipping in XCAA mode 2017-11-08 16:45:30 -08:00
Patrick Walton e5b76726d9 Use the LUT to gamma correct text, and fix stem darkening math 2017-11-07 17:24:19 -08:00
Patrick Walton 1e446f816f Add basic clip path support when rendering with SSAA 2017-11-03 14:29:31 -07:00
Patrick Walton 4cbc2a8800 Add partial support for clip paths in the SVG demo.
At the moment, this only works when antialiasing is off.
2017-11-03 14:14:29 -07:00
Patrick Walton 2604151521 Replace the multicolor (SVG) XCAA with a multipass compositing algorithm 2017-10-30 15:28:35 -07:00
Patrick Walton 0506365cc7 Fix blending in the text demo.
As a nice added cleanup, this commit standardizes on the red channel for
all monochrome textures.
2017-10-26 20:15:51 -07:00
Patrick Walton 9d93cebca6 Stop using multiple render targets.
We don't need them anymore, so let's lower our hardware requirements!
2017-10-20 22:04:53 -07:00
Patrick Walton 03ee672787 Separate the GPU rendering component of views from the view objects
themselves in the demo.

This (mostly) enables rendering outside a view.
2017-10-16 22:26:25 -07:00
Patrick Walton 976b924842 Decouple mesh-specific data from GL-context-wide data in the demo 2017-10-16 16:48:02 -07:00
Patrick Walton cc16158a91 Decouple antialiasing strategies from views in the demo 2017-10-16 13:36:22 -07:00
Patrick Walton 1846ebd861 Use sRGB color textures where available 2017-10-06 19:18:34 -07:00
Patrick Walton 157292175b Use instanced rendering in the 3D demo.
This massively decreases the load time and memory usage in exchange for more draw calls.
2017-10-03 15:24:56 -07:00
Patrick Walton 60ff71be84 Add an experimental implementation of macOS-like font dilation
Following Apple's earlier terminology, this is exposed as "strong"
subpixel AA.
2017-09-29 22:12:24 -07:00
Patrick Walton e8135fbfe0 TSLint the demo 2017-09-28 14:34:48 -07:00
Patrick Walton 70ab2d55f3 Don't count resolution time in the benchmark.
This means that users of Pathfinder will have to accept floating point
textures in order to get the advertised performance, but as they're well
supported on all modern GPUs I don't consider that much of a problem.
2017-09-26 13:35:03 -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 43513da957 Add a simple model of the Mozilla Monument to the 3D scene 2017-09-09 00:04:35 -07:00
Patrick Walton 3ee066bdf0 Implement subpixel ECAA 2017-09-07 14:58:41 -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 632202e5eb Implement a basic mesh debugger 2017-09-01 22:29:05 -07:00
Patrick Walton c47aa5c4d0 Get the SVG demo rendering something 2017-08-29 12:29:16 -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