> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Visão geral do pipeline de Mesh Shader

> Como o pipeline de Mesh Shader substitui o input assembler por estágios programáveis de Amplification e Mesh para uma geometria escalável no XBOX Series X|S.

As GPUs RTX Turing e AMD RDNA 2.0 introduzem um novo pipeline de processamento de geometria. Esse pipeline consiste em dois novos estágios de shader programáveis, o Amplification Shader e o Mesh Shader, e não usa o hardware de input assembler e de tessellator. Ambos os estágios são semelhantes a compute shaders, expondo grupos de threads e usando IDs de thread gerados como as únicas entradas fornecidas, mas também oferecem funcionalidades pertinentes ao envio de processamento de geometria.

Esse novo paradigma tem o efeito de transferir as buscas de índices/vértices para shaders programáveis, permitindo que elas escalem com a contagem de núcleos e a largura de banda de memória da GPU. Isso contorna um gargalo crescente do input assembler e facilita o lançamento de trabalho na GPU a uma taxa melhor e consistente. Também fornece uma interface para culling antecipado de geometria em várias granularidades, até o nível por primitivo, de forma encadeada (pipelined) com memória on-chip.

**Figura 1.  Os estágios do pipeline de Mesh Shader. Os estágios em verde são programáveis. Os estágios em azul são de função fixa.**

<img src="https://mintcdn.com/microsoft-4404708b/6hkHc7s12mHcTMCE/images/gdk/features/graphics/ms_mesh_shader_pipeline.png?fit=max&auto=format&n=6hkHc7s12mHcTMCE&q=85&s=1bdf8c428560eef0a048ae32c01c9759" alt="Diagrama de estágios do pipeline de Mesh Shader" width="800" height="100" data-path="images/gdk/features/graphics/ms_mesh_shader_pipeline.png" />

## Mesh Shaders

Os Mesh Shaders (MS) são essencialmente compute shaders com intrínsecos específicos do estágio para exportar vértices, índices e dados de primitivos para o primitive assembler. Todos os dados devem ser buscados explicitamente de constant buffer views (CBVs) e shader resource views (SRVs) no código do shader.

Isso significa que os desenvolvedores precisarão reajustar sua visão das chamadas de desenho para ficar mais alinhada ao fluxo de trabalho dos compute shaders. O autor do shader determina o tamanho do grupo de threads e como cada thread é usado para concluir a carga de trabalho. Ele terá acesso a intrínsecos de wave de shader e à memória groupshared para compartilhar dados e criar com eficiência uma lista de primitivos para rasterização.

**Figura 2.  Visualização do trabalho de GPU despachado por uma chamada DispatchMesh(4, 1, 1) com um pipeline somente de Mesh Shader vinculado. Assim como os compute shaders, DispatchMesh requer contagens de grupos de threads nas dimensões x, y e z. Isso despacha o número especificado de grupos de threads de Mesh Shader para execução.**

<img src="https://mintcdn.com/microsoft-4404708b/6hkHc7s12mHcTMCE/images/gdk/features/graphics/ms_pipeline.png?fit=max&auto=format&n=6hkHc7s12mHcTMCE&q=85&s=da9bfe92b2e4eb38fb3c7c45a4e84568" alt="Visualização do trabalho despachado por um comando DispatchMesh com um pipeline somente de Mesh Shader vinculado." width="578" height="350" data-path="images/gdk/features/graphics/ms_pipeline.png" />

## Amplification Shaders

O Amplification Shader (AS) é um estágio opcional que precede o estágio de Mesh Shader. Esse estágio também é semelhante a um compute shader, com a capacidade de despachar dinamicamente um cluster de grupos de threads de Mesh Shader. Cada grupo de threads calcula seu próprio número de grupos de threads de Mesh Shader a serem despachados. Cada grupo de threads também consiste em até 16 KB de dados de payload personalizados e compartilhados a serem passados para os grupos de threads de Mesh Shader gerados por ele. Esses dados podem ser exportados diretamente da memória groupshared.

A funcionalidade dos Amplification Shaders permite que os programas de shader reduzam ou ampliem dinamicamente sua carga de trabalho com base em critérios personalizados. Isso abre a possibilidade de culling eficiente com granularidade menor ou de tesselação personalizada.

**Figura 3.  Visualização do despacho de um objeto de estado de pipeline (PS) AS-MS. Alguns grupos de threads AS optarão por despachar grupos de threads MS. Outros podem não despachar nenhum.**

<img src="https://mintcdn.com/microsoft-4404708b/6hkHc7s12mHcTMCE/images/gdk/features/graphics/ms_as_pipeline.png?fit=max&auto=format&n=6hkHc7s12mHcTMCE&q=85&s=8a1227f965a71d9e511a040e3651d7f8" alt="Visualização do trabalho despachado por um comando DispatchMesh com um pipeline AS-MS vinculado." width="953" height="350" data-path="images/gdk/features/graphics/ms_as_pipeline.png" />

## Nesta seção

## Confira também

[Visões gerais dos recursos gráficos do XBOX Series X|S](/pt-BR/build/core-features/graphics/graphics-newfeatures-toc)
[Visão geral de gráficos](/pt-BR/build/core-features/graphics/overviews/graphics)
[Gráficos](/pt-BR/build/core-features/graphics/gc-graphics-toc)


## Related topics

- [Diretório de tópicos NDA: links ativos do Microsoft Learn](/pt-BR/nda/nda-topic-directory.md)
- [Visão geral do Unity](/pt-BR/paths/unity/overview.md)
- [Visão geral do Unreal Engine](/pt-BR/paths/unreal/overview.md)
- [Visão geral do XBOX Series X|S](/pt-BR/paths/series-xs/overview.md)
- [Visão geral de portabilidade](/pt-BR/paths/porting/overview.md)
