Direct3D 12 mesh shader samples

This collection of projects act as an introduction to meshlets, and rendering with DirectX mesh shaders.

Requirements

Getting Started

Projects

1. Wavefront Converter Command Line Tool

This project acts as an example of how to incorporate DirectXMesh meshlet generation functionality into a complete mesh conversion application. The application is structured as a basic command line tool for loading and processing obj files. The processed mesh is exported using a simple binary runtime file format targeted at fast loading and rendering with DirectX apps.

2. Meshlet Viewer

This project demonstrates the basics of how to render a meshletized model using DirectX 12. This application loads the binary model files exported by the Wavefront Converter command line tool.

D3D12 Meshlet Render Preview

3. Meshlet Instancing

In the Mesh Shader Pipeline API there's no concept of instancing such as in the legacy pipeline. This leaves the logic of instancing meshes entirely up to application code. An inefficient implementation can waste precious threads within threadgroups. This sample demonstrates an implementation which aims to optimize instancing of meshletized meshes by packing the final, unfilled meshlets of multiple instances into a single threadgroup.

D3D12 Meshlet Instancing Preview

4. Meshlet Culling

The generic functionality of amplification shaders make them a useful tool for an innumerable number of tasks. This sample demonstrates the basics of amplification shaders by showcasing how to cull meshlests before ever dispatching a mesh shader threadgroup into the pipeline.

D3D12 Meshlet Culling Preview

5. Instancing Culling & Dynamic LOD Selection

This sample presents an advanced shader technique using amplification shaders to do per-instance frustum culling and level-of-detail (LOD) selection entirely on the GPU for an arbitrary number of mesh instances.

D3D12 Dynamic LOD Preview

Further resources

Feedback and Questions

We welcome all feedback, questions and discussions about the mesh shader pipeline on our discord server.