Mesh Shader Support
The following is intended for informational purposes only, and may not be incorporated into any contract. No purchasing decisions should be made based on the following materials. Unity is not committing to deliver any functionality, features or code. The development, timing and release of all products, functionality and features are at the sole discretion of Unity, and are subject to change.
If you have accepted to use functional cookies and logged in using your Unity ID at the top right of the page, then sharing feedback is as simple as clicking a card below, selecting a topic’s importance, adding your point of view, and submitting. If you prefer not to accept functional cookies or log in, you will be prompted to enter an email address and validate it, so we know how to reach out when the topic evolves. For more information read the Feedback and privacy terms.
Summary
Mesh Shaders enable efficient processing of highly complex geometry (such as finely detailed models) as well as procedural effects such as particles and point cloud visualizations, while providing additional control and flexibility compared to the existing vertex, tessellation (hull+domain) and geometry shaders.
- The 'Mesh Shader' stage allows performing generic calculations on a user-defined input, operating on a per workgroup (meshlet) basis, and outputs vertex primitives for rasterization and pixel shading.
- The optional 'Task Shader' stage (to be executed before the Mesh stage) allows to compute the amount of meshlets to render, as well as the Mesh stage's input data. This is useful for cases such as meshlet culling on the GPU.
Intended Outcome / Usecase
Task and Mesh Shaders can be authored to provide additional user control over geometry processing (compared to Tessellation and Geometry Shaders), while being able to achieve higher performance compared to Compute and Vertex Shader workflows (due to higher level of parallelism and reduced synchronization)