<story><title>CanvasKit – Skia and WebAssembly</title><url>https://skia.org/user/modules/canvaskit</url></story><parent_chain><item><author>bcheung</author><text>What is this for and why would someone want to use it?&lt;p&gt;There&amp;#x27;s basically nothing on the website but the API.  No decent overview or tutorial or even why someone would want to use this project.</text></item></parent_chain><comment><author>leonidasv</author><text>Skia is a graphics engine developed in C++. Think of it as the building block for graphical interfaces, animations and everything else that involves displaying some 2D data on a screen, specially vectorial data.&lt;p&gt;For example, Flutter uses it to draw its UIs and Chrome uses it for almost everything, including rendering text parsed from HTML. Sublime Text, Firefox, Xamarin and many other projects also rely on Skia for the same sort of thing.&lt;p&gt;However, unlike, let&amp;#x27;s say, Qt or GTK+, Skia does not provide already done widgets (i.e., drop-in buttons, windows, text inputs etc.). It&amp;#x27;s like the fundamental building block on top of which you can create your buttons, animations and everything else and then display it on screen.&lt;p&gt;Now, CanvasKit is Skia ported to the browser via WebAssembly. Since Skia is a mature project and very performant (as you can guess from who is using it), it&amp;#x27;s now an alternative to Canvas API and DOM to render things on websites and will also let existing native applications to be ported to the web more easily.</text></comment>
<story><title>CanvasKit – Skia and WebAssembly</title><url>https://skia.org/user/modules/canvaskit</url></story><parent_chain><item><author>bcheung</author><text>What is this for and why would someone want to use it?&lt;p&gt;There&amp;#x27;s basically nothing on the website but the API.  No decent overview or tutorial or even why someone would want to use this project.</text></item></parent_chain><comment><author>Secretmapper</author><text>I had a really hard time understanding it as well, and as someone who is supposed to at least have some understanding in this space (HTML5 gamedev) it made me feel a bit dumb.&lt;p&gt;However, from what I understand, there seems to be two things needed to be noted here:&lt;p&gt;Skia - a standardised library that can &amp;#x27;render&amp;#x27; to different backends - i.e. it can render to OpenGL or SVG or PDFs.&lt;p&gt;CanvasKit (the actual one linked) - basically use Skia on the web (with webgl).&lt;p&gt;A huge boon here would be performance. For example, in WebGL, if you want to draw text, the current method is actually to render it in the canvas first, and reupload the texture to the GPU. From what I understand Skia seems to handle the rendering &amp;#x27;natively&amp;#x27; so this step is not necessary. So basically it would just make it easier to draw &amp;#x27;primitives&amp;#x27; since they are provided by the Skia API without having to do workarounds or writing really low level webgl fragments&amp;#x2F;shaders.&lt;p&gt;This is just from what I gathered, but yeah it is confusing. If anyone knowledgeable reads this, let me know if I got anything wrong!</text></comment>