diff --git a/content/_index.md b/content/_index.md index 9b1280e..d0acf45 100644 --- a/content/_index.md +++ b/content/_index.md @@ -31,7 +31,7 @@ These crates are under active development. - [`kurbo`][kurbo] - A library for creating, manipulating and interrogating 2D curve shapes. - At its core, `kurbo` is a library for constructing paths and splines out of straight lines and Bézier curves up to order 3 (known as cubic Béziers). It turns out that a series of cubic Bézier curves can be used to approximate any smooth curve with a very high degree of accuracy, compared to the number of curves required. They are also relatively easy to work with, and form the basis of the approach to curve rendering used in `vello`. The key abstraction is [`kurbo::Shape`](https://docs.rs/kurbo/latest/kurbo/trait.Shape.html), which provides the `path_elements` method. This method returns an interator over Bézier curves that approximate the type implementing the `Shape` trait, which `vello` can then draw. + At its core, `kurbo` is a library for constructing paths and splines out of straight lines and Bézier curves up to order 3 (known as cubic Béziers). It turns out that a series of cubic Bézier curves can be used to approximate any smooth curve with a very high degree of accuracy, compared to the number of curves required. They are also relatively easy to work with, and form the basis of the approach to curve rendering used in `vello`. The key abstraction is [`kurbo::Shape`](https://docs.rs/kurbo/latest/kurbo/trait.Shape.html), which provides the `path_elements` method. This method returns an iterator over Bézier curves that approximate the type implementing the `Shape` trait, which `vello` can then draw. - [`peniko`][peniko] - A library for non-geometric drawing primitives. diff --git a/content/about.md b/content/about.md index 59848ea..90b18fa 100644 --- a/content/about.md +++ b/content/about.md @@ -6,7 +6,7 @@ This is the website for the [Linebender organization on GitHub]. The Linebender It is also a group of volunteers and enthusiasts who hang out on [our Zulip][xi.zulip], and who collaborate on designing and coding the different parts of the stack required for UI. We are a friendly bunch, and always welcome newcomers, whether they have any experience with 2D graphics and user interfaces or not. -All the work of the Linebender is done in the open, and the full history of all conversations is available on Zulip. In fact, we recommend searching the chat history for any topic that you are interested in, as there have been many discussions in the past with novel and valuable ideas. All code is dual-licensed under the MIT and Apache-2.0 licenses (where possible) and we aim to license non-code material under the [CC-BY Creative Commons license][CC-BY]. In fact, the non-code portion of this website is licensed under CC-BY, while all code, including any JavaScript written by the authors, is available under the Apache-2.0 license. A copy of the Apache-2.0 license is available in [this website's repository][website repository]. We reuse some code from the 'minima' Jekyll theme under the MIT license. The aim is to make any of the code on this website reuseable, so if the licensing is causing friction please contact us [on Zulip][xi.zulip] and we'll work together to solve the problem. +All the work of the Linebender is done in the open, and the full history of all conversations is available on Zulip. In fact, we recommend searching the chat history for any topic that you are interested in, as there have been many discussions in the past with novel and valuable ideas. All code is dual-licensed under the MIT and Apache-2.0 licenses (where possible) and we aim to license non-code material under the [CC-BY Creative Commons license][CC-BY]. In fact, the non-code portion of this website is licensed under CC-BY, while all code, including any JavaScript written by the authors, is available under the Apache-2.0 license. A copy of the Apache-2.0 license is available in [this website's repository][website repository]. We reuse some code from the 'minima' Jekyll theme under the MIT license. The aim is to make any of the code on this website reusable, so if the licensing is causing friction please contact us [on Zulip][xi.zulip] and we'll work together to solve the problem. A separate page describes our [contributor guidelines]. diff --git a/content/wiki/gpu/mesh_shaders.md b/content/wiki/gpu/mesh_shaders.md index 0f354f6..1c81002 100644 --- a/content/wiki/gpu/mesh_shaders.md +++ b/content/wiki/gpu/mesh_shaders.md @@ -3,7 +3,7 @@ title = "Mesh shaders" +++ Mesh shaders are a compute-centric approach to producing geometry for rasterization. -They are significantly more powerful than the traditional vertex shader approach, and also simpler than the complex zoo of shader types (hull, domain, tesselation, geometry) that were originally proposed to overcome the limitations of simple vertex shading. +They are significantly more powerful than the traditional vertex shader approach, and also simpler than the complex zoo of shader types (hull, domain, tessellation, geometry) that were originally proposed to overcome the limitations of simple vertex shading. They were originally [introduced][Introduction to Turing Mesh Shaders] by Nvidia in 2018 in the Turing microarchitecture. In Vulkan, the capability was originally an Nvidia-specific extension, but is now the cross-platform [VK_EXT_mesh_shader] extension. @@ -37,7 +37,7 @@ The second stage is called a mesh shader. The first stage is dispatched like a compute shader. -There is an output user-defined "payload" structure (anologous to the interface between vertex and fragment shaders, but can be larger; on DirectX 12 and Metal the limit is 16k), and then each workgroup dispatches a variable number of workgroups of the mesh shader. +There is an output user-defined "payload" structure (analogous to the interface between vertex and fragment shaders, but can be larger; on DirectX 12 and Metal the limit is 16k), and then each workgroup dispatches a variable number of workgroups of the mesh shader. That number can be zero. On Metal, it is limited to 1024 workgroups.