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 isso é quase onde a similaridade 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 nesse 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 do dispatch é 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 RWByteAddressBufferestã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, tenha em mente os 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 de 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 digitadas (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 ao 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 intertravada. As funções interligadas têm a garantia de operar atomicamente. Ou seja, eles têm a garantia de que ocorram na ordem programada. Esta seção lista as funções atômicas. |