Commit Graph

32 Commits

Author SHA1 Message Date
Patrick Walton 11913a20f1 Merge MCAA monochrome and multicolor shaders.
Not only is this a lot simpler, it's faster too!
2018-01-03 15:22:28 -08:00
Patrick Walton 9515451e7a Remove render tasks entirely. 2017-12-28 11:44:46 -05: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 ec467ba92c Fix `getMeshIndexRange()` logic for the first interior mesh.
This caused the first path to disappear in the SVG demo.

Closes #57.
2017-12-20 14:10:51 -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 b8785a31db Implement 8xSSAA and 16xSSAA in the SVG demo 2017-12-11 19:02:20 -08:00
Patrick Walton 80c0d07f1a Revert refactoring of Renderer into BaseRenderer.
It's not needed.
2017-12-05 19:08:31 -08:00
Patrick Walton 30893fb9ad Partially implement benchmarking for SVG. 2017-12-05 19:05:23 -08:00
Patrick Walton 15d8c98ff9 Fix a bug preventing the benchmark from running, and improve its UI 2017-12-04 22:02:16 -08:00
Patrick Walton 1de0378f1e Get rotation working in the text demo.
There are some known artefacts when zoomed in heavily in XCAA mode.
2017-11-30 16:08:15 -08:00
Patrick Walton 86660572bd Upgrade ST-transforms to affine transforms where possible, and add
incomplete rotation support to the text demo
2017-11-29 17:06:52 -08:00
Patrick Walton 6942bb51ca Add support for full 3D transforms, including rotation, to SVG in XCAA mode. 2017-11-28 16:15:06 -08:00
Patrick Walton 86df78f939 Flesh out the integration test more 2017-11-17 17:06:59 -08:00
Patrick Walton bc99fdf02b Enable early Z in the XCAA multicolor direct interior pass 2017-11-11 14:45:28 -08:00
Patrick Walton 2975038891 Reenable early Z.
It regressed again!
2017-11-11 14:04:57 -08:00
Patrick Walton 8e7eb6ca60 Support stem darkening in SSAA mode.
The normals are incorrect right now in some cases, but it looks OK-ish.
2017-11-09 16:20:15 -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 82fd214a76 Load the gamma LUT in the demo 2017-11-07 14:13:13 -08: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 511e5956d8 Don't clear away the scenery after drawing it!
Fixes the 3D view.
2017-11-02 16:17:35 -07:00
Patrick Walton 579528ebdc Remove one direct rendering pass from the multicolor XCAA path 2017-10-31 12:41:38 -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 f8c950d39a Stop calling `getParameter` and `getBufferParameter`.
They're incredibly slow in Chrome.
2017-10-25 19:38:41 -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 048c261f6c Add a working experimental implementation of XCAA for SVG.
This has known performance problems and artefacts due to working at
sample level only, but it's a decent first cut.
2017-10-20 19:41:18 -07:00
Patrick Walton a523d71e3c Stop leaking buffer textures 2017-10-18 19:47:44 -07:00
Patrick Walton 03b4ec2cc6 Stop leaking VAOs 2017-10-18 19:16:56 -07:00
Patrick Walton 70201bb29c Draw distant glyphs as prerendered images in the 3D demo.
This has known performance problems, but it's a good first cut.
2017-10-18 16:19:19 -07:00
Patrick Walton 562851fd6e Lint against long lines 2017-10-17 11:58:03 -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