3DMark feature tests are special tests designed to highlight specific techniques, functions or capabilities.
The 3DMark Mesh Shader feature test shows how games can use mesh shaders to improve performance.
|Feature test||3DMark Mesh Shader feature test|
|Target hardware||GPUs that support DirectX 12 Ultimate|
|Graphics API||DirectX 12 Ultimate|
|Rendering resolution||2560 × 1440|
The test also offers an interactive mode that helps you visualize the benefits of using mesh shaders.
What is a Mesh Shader?
Mesh Shaders are a new feature in DirectX 12 Ultimate. Mesh shaders introduce a new approach to geometry processing that simplifies the graphics pipeline while also giving developers more flexibility and control.
In 3D graphics, a mesh is the set of vertices, edges and faces that define the shape of an object. In current graphics pipelines, all the geometry data in a mesh must be processed sequentially before any further steps can be taken.
This is wasteful as there will always be some geometry on the back of an object, facing away from the viewer, that is not visible to the camera. Parts of the mesh may also be hidden behind other objects. The process of discarding geometry that is not visible to the camera is called culling.
Culling can be performed by software at the draw-call level—culling an entire object mesh—or by hardware on a per-primitive basis—but only after all the vertices of a primitive have been shaded. There are no in-between options within the graphics pipeline itself. Fine-grained culling requires additional compute passes, which can cause significant performance overhead.
Mesh shaders replace the old approach with a new model that brings the power, flexibility and control of a compute programming model to the geometry pipeline.
Mesh shaders can process chunks of the mesh, called meshlets, in parallel with a much greater degree of flexibility and control.
Amplification shaders, another new part of the mesh shader pipeline, are especially useful for culling, as they can efficiently determine which meshlets are visible before shading.
For example, imagine an object that is partially hidden behind a wall. An amplification shader can cull all the meshlets that are hidden far more efficiently than the traditional methods.
For more details, please read the Microsoft DirectX Developer Blog and the DirectX Functional Spec.