Beating Canvas 2D in Its Own
Territory
WebGL + Tesspathy
Guangyao Liu
twitter:@brilliun, github:@brilliun
GREE, Inc.
What We Do
JS Animation
Engine
<canvas>
2D
Vector
Contents
e.g. SWF
Contents
Provider
User’s
Browser
JS Game/Animation
<canvas>
Canvas 2D WebGL
We used to
use this only
Canvas 2D WebGL
● 2D
● Vector data
● 3D (mainly)
● Mesh data
● Hardware
acceleration
Canvas 2D WebGL
● 2D
● Vector data
● Hardware
acceleration
● 3D (mainly)
● Mesh data
● Hardware
acceleration
Browser Vendor
HTML5 Game/Animation
<canvas>
Canvas 2D WebGL
Content
2D Vector 2/3D Mesh
Canvas 2D WebGL
● 2D
● Vector data
● Hardware
acceleration
● 3D (mainly)
● Mesh data
● Hardware
acceleration
Still Not
Enough
Canvas 2D WebGL
● 2D
● Vector data
● 3D (mainly)
● Mesh data
Hardware acceleration
HTML5 Game/Animation
<canvas>
WebGL
Content
2D Vector 2/3D Mesh
Only one problem
WebGL Just Can’t Handle
Vector Graphics
Tesspathy
A JS library converting vector graphics for GL-
like APIs
● Convert on the fly
● Resolution-independent Curves
● Almost no assumption of input data
github.com/gree/tesspathy
No need to pre-process
your vector data
Remember the Demo?
Now let’s try it with
WebGL + Tesspathy
<canvas>
Canvas 2D WebGL
Tessellation
Hardware
Acceleration
Newly added
this year
skia/src/gpu/*.cpp
<canvas>
Canvas 2D Tesspathy
Tessellation
Hardware
Acceleration
skia/src/gpu/*.cpp
WebGL
Hardware
Acceleration
your/self/code.js
Thank You
Tesspathy
github.com/gree/tesspathy

Beating canvas 2 d in its own territory webgl+tesspathy