Visão geral do sombreador de computação

Um sombreador de computação é um estágio de sombreador programável que expande o Microsoft Direct3D 11 além da programação gráfica. A tecnologia de sombreador de computação também é conhecida como a tecnologia DirectCompute.

Como outros sombreadores programáveis (sombreadores de vértice e geometria, por exemplo), um sombreador de computação é projetado e implementado com HLSL , mas é exatamente onde a semelhança termina. Um sombreador de computação fornece a computação alta velocidade de finalidade geral e tira proveito de um grande número de processadores paralelos na unidade de processamento gráfico (GPU). O estágio do sombreador de cálculo fornece compartilhamento de memória e sincronização de thread para permitir métodos mais eficazes de programação paralelos. Você chama o método ID3D11DeviceContext::D ispatch ou ID3D11DeviceContext::D ispatchIndirect para executar comandos em um sombreador de computação. Um sombreador de computação pode ser executado em vários threads em paralelo.

Usando o sombreador de computação no Hardware Direct3D 10.x

Um sombreador de computação no Microsoft Direct3D 10 também é conhecido como DirectCompute 4.x.

Se você usar a API do Direct3D 11 e os drivers atualizados, o hardware direct3D do nível de recurso 10 e 10.1 poderá, opcionalmente, dar suporte a uma forma limitada de DirectCompute que usa os perfis cs_4_0 e cs_4_1. Ao usar o DirectCompute neste hardware, tenha em mente as seguintes limitações:

  • O número máximo de threads é limitado a D3D11_CS_4_X_THREAD_GROUP_MAX_THREADS_PER_GROUP (768) por grupo.
  • A dimensão X e Y de numthreads é limitada a D3D11_CS_4_X_THREAD_GROUP_MAX_X (768) e D3D11_CS_4_X_THREAD_GROUP_MAX_Y (768).
  • A dimensão Z de numthreads é limitada a 1.
  • A dimensão Z da expedição é limitada a D3D11_CS_4_X_DISPATCH_MAX_THREAD_GROUPS_IN_Z_DIMENSION (1).
  • Somente uma exibição de acesso não ordenado pode ser associada ao sombreador (D3D11_CS_4_X_UAV_REGISTER_COUNT é 1).
  • Somente RWStructuredBuffers e RWByteAddressBuffers estão disponíveis como exibições de acesso não ordenado.
  • Um thread só pode acessar sua própria região na memória agrupada para gravação, embora possa ler de qualquer local.
  • SV_GroupIndex ou SV_GroupThreadID devem ser usados ao acessar a memória agrupada para gravação.
  • A memória agrupada é limitada a 16 KB por grupo.
  • Um único thread é limitado a uma região de 256 bytes de memória agrupada para gravação.
  • Nenhuma instrução atômica está disponível.
  • Nenhum valor de precisão dupla está disponível.

Usando o sombreador de computação no Hardware Direct3D 11.x

Um sombreador de computação no Direct3D 11 também é conhecido como DirectCompute 5.0.

Ao usar o DirectCompute com perfis cs_5_0, lembre-se dos seguintes itens:

  • O número máximo de threads é limitado a D3D11_CS_THREAD_GROUP_MAX_THREADS_PER_GROUP (1024) por grupo.
  • A dimensão X e Y de numthreads é limitada a D3D11_CS_THREAD_GROUP_MAX_X (1024) e D3D11_CS_THREAD_GROUP_MAX_Y (1024).
  • A dimensão Z de numthreads é limitada a D3D11_CS_THREAD_GROUP_MAX_Z (64).
  • A dimensão máxima da expedição é limitada a D3D11_CS_DISPATCH_MAX_THREAD_GROUPS_PER_DIMENSION (65535).
  • O número máximo de exibições de acesso não ordenado que podem ser associadas a um sombreador é D3D11_PS_CS_UAV_REGISTER_COUNT (8).
  • Dá suporte a RWStructuredBuffers, RWByteAddressBuffers e exibições de acesso não ordenado tipados (RWTexture1D, RWTexture2D, RWTexture3D e assim por diante).
  • Instruções atômicas estão disponíveis.
  • O suporte de precisão dupla pode estar disponível. Para obter informações sobre como determinar se a precisão dupla está disponível, consulte D3D11_FEATURE_DOUBLES.

Nesta seção

Tópico Descrição
Novos tipos de recursos
Vários novos tipos de recursos foram adicionados no Direct3D 11.
Acessando recursos
Há várias maneiras de acessar recursos.
Funções Atômicas
Para acessar um novo tipo de recurso ou memória compartilhada, use uma função intrínseca interligada. As funções intertravadas têm a garantia de operar atomicamente. Ou seja, eles têm a garantia de ocorrer na ordem programada. Esta seção lista as funções atômicas.

Pipeline de Gráficos

Como criar um sombreador de computação