Partilhar via


Recursos do Direct3D 11

O guia de programação contém informações sobre como usar o pipeline programável do Direct3D 11 para criar gráficos 3D em tempo real para jogos e para aplicativos científicos e de desktop.

Sombreador de computação

Um sombreador de computação é um sombreador programável projetado para processamento paralelo de dados de uso geral. Em outras palavras, os sombreadores de computação permitem que uma GPU seja usada como um processador paralelo de uso geral. O sombreador de computação é semelhante aos outros sombreadores de pipeline programáveis (como vértice, pixel, geometria) na maneira como acessa entradas e saídas. A tecnologia de sombreador de computação também é conhecida como tecnologia DirectCompute. Um sombreador de computação é integrado ao Direct3D e pode ser acessado por meio de um dispositivo Direct3D. Ele pode compartilhar diretamente recursos de memória com sombreadores gráficos usando o dispositivo Direct3D. No entanto, ele não está diretamente conectado a outros estágios de sombreador.

Um sombreador de computação é projetado para aplicativos de mercado de massa que executam cálculos a taxas interativas, quando o custo de transição entre a API (e sua pilha de software associada) e uma CPU consumiria muita sobrecarga.

Um sombreador de computação tem seu próprio conjunto de estados. Um sombreador de computação não tem necessariamente um mapeamento forçado de 1-1 para registros de entrada (como um sombreador de vértice) ou registros de saída (como o sombreador de pixel). Alguns recursos do sombreador gráfico são suportados, mas outros foram removidos para que novos recursos específicos do sombreador de computação possam ser adicionados.

Para dar suporte aos recursos específicos do sombreador de computação, vários novos tipos de recursos agora estão disponíveis, como buffers de leitura/gravação, texturas e buffers estruturados.

Consulte Visão geral do sombreador de computação para obter informações adicionais.

Vinculação de sombreador dinâmico

Os sistemas de renderização devem lidar com uma complexidade significativa quando gerenciam sombreadores, ao mesmo tempo em que oferecem a oportunidade de otimizar o código do sombreador. Isso se torna um desafio ainda maior porque os sombreadores devem suportar uma variedade de materiais diferentes em uma cena renderizada em várias configurações de hardware. Para enfrentar esse desafio, os desenvolvedores de sombreadores muitas vezes recorreram a uma das duas abordagens gerais. Eles criaram sombreadores grandes e de uso geral com todos os recursos que podem ser usados por uma ampla variedade de itens de cena, que trocam algum desempenho por flexibilidade, ou criaram sombreadores individuais para cada fluxo de geometria, tipo de material ou combinação de tipo de luz necessária.

Esses sombreadores grandes e de uso geral lidam com esse desafio recompilando o mesmo sombreador com diferentes definições de pré-processador, e o último método usa o poder do desenvolvedor de força bruta para obter o mesmo resultado. A explosão de permutação de sombreador tem sido frequentemente um problema para os desenvolvedores que agora precisam gerenciar milhares de permutações de sombreador diferentes dentro de seu pipeline de jogos e ativos.

O Direct3D 11 e o modelo de sombreador 5 introduzem construções de linguagem orientada a objeto e fornecem suporte de tempo de execução de vinculação de sombreador para ajudar os desenvolvedores a programar sombreadores.

Consulte de vinculação dinâmica para obter informações adicionais.

Multithreading

Muitos aplicativos gráficos são vinculados à CPU devido a atividades dispendiosas, como travessia de gráficos de cena, classificação de objetos e simulações físicas. Como os sistemas multicore estão se tornando cada vez mais disponíveis, o Direct3D 11 melhorou seu suporte a multithreading para permitir uma interação eficiente entre vários threads de CPU e as APIs gráficas D3D11.

O Direct3D 11 permite a seguinte funcionalidade para suportar multithreading:

  • Objetos simultâneos agora são criados em threads separados — Tornar funções de ponto de entrada que criam objetos free-threaded torna possível que muitos threads criem objetos simultaneamente. Por exemplo, um aplicativo agora pode compilar um sombreador ou carregar uma textura em um thread enquanto renderiza em outro.
  • As listas de comandos podem ser criadas em vários threads — Uma lista de comandos é uma sequência gravada de comandos gráficos. Com o Direct3D 11, você pode criar listas de comandos em vários threads da CPU, o que permite a travessia paralela do banco de dados de cena ou o processamento físico em vários threads. Isso libera o thread de renderização principal para despachar buffers de comando para o hardware.

Consulte MultiThreading para obter informações adicionais.

Tesselação

A tesselação pode ser usada para renderizar um único modelo com diferentes níveis de detalhes. Essa abordagem gera um modelo geometricamente mais preciso que depende do nível de detalhe necessário para uma cena. Use tesselação em uma cena onde o nível de detalhe permite um modelo de geometria mais baixa, o que reduz a demanda de largura de banda de memória consumida durante a renderização.

No Direct3D, a tesselação é implementada na GPU para calcular uma superfície curva mais suave a partir de um patch de entrada grosseiro (menos detalhado). Cada face de remendo (quad ou triangular) é subdividida em faces triangulares menores que se aproximam melhor da superfície desejada.

Para obter informações sobre como implementar a tessellation no pipeline gráfico, consulte Visão geral da tessellation.

Lista completa de recursos

Esta é uma lista completa dos recursos do Direct3D 11.

  • Você pode executar o Direct3D 11 em de hardware de nível inferior especificando um de nível de recurso ao criar um dispositivo.

  • Você pode executar tessellation (consulte Visão geral da tessellation) usando os seguintes tipos de sombreador:

    • Sombreador de casco
    • Shader de Domínio
  • O Direct3D 11 suporta multithreading (consulte MultiThreading)

    • Criação de recursos/sombreador/objeto multithread
    • Criação de listas de exibição multithreaded
  • O Direct3D 11 expande sombreadores com os seguintes recursos (consulte Shader Model 5)

    • Recursos endereçáveis - texturas, buffers constantes e amostradores

    • Tipos de recursos adicionais, como buffers de leitura/gravação e texturas (consulte Novos tipos de recursos).

    • Sub-rotinas

    • Sombreador de computação (consulte Visão geral do sombreador de computação) - Um sombreador que acelera os cálculos dividindo o espaço do problema entre vários threads de software ou grupos de threads e compartilhando dados entre registradores de sombreador para reduzir significativamente a quantidade de dados necessários para entrar em um sombreador. Os algoritmos que o sombreador computacional pode melhorar significativamente incluem pós-processamento, animação, física e inteligência artificial.

    • Sombreador de geometria (consulte Recursos do sombreador de geometria)

      • Instanciação - Permite que o sombreador de geometria produza um máximo de 1024 vértices, ou qualquer combinação de instâncias e vértices até 1024 (máximo de 32 instâncias de 32 vértices cada).
    • Sombreador de pixel

      • Cobertura como entrada PS

      • Interpolação programável de entradas - O sombreador de pixel pode avaliar atributos dentro do pixel, em qualquer lugar na grade de várias amostras

      • A amostragem centróide de atributos deve obedecer às seguintes regras:

        • Se todas as amostras na primitiva forem cobertas, o atributo será avaliado no centro do pixel, independentemente de o padrão de amostra ter um local de amostra no centro do pixel.

        • Caso contrário, o atributo é avaliado na primeira amostra coberta, ou seja, a amostra com o menor índice entre todos os índices amostrais. Nessa situação, a cobertura da amostra é determinada após a aplicação da operação lógica AND à cobertura e ao estado do rasterizador da máscara de amostra.

        • Se nenhuma amostra for coberta (como em pixels auxiliares que são executados fora dos limites de uma primitiva para preencher carimbos de pixel 2x2), o atributo é avaliado de uma das seguintes maneiras:

          • Se o estado do rasterizador da máscara de amostra for um subconjunto das amostras no pixel, a primeira amostra coberta pelo estado do rasterizador da máscara de amostra será o ponto de avaliação.
          • Caso contrário, na condição de máscara de amostra completa, o centro do pixel é o ponto de avaliação.
  • O Direct3D 11 expande texturas (consulte Visão geral de texturas) com os seguintes recursos

    • Reúna4

      • Suporte para texturas de vários componentes - especifique um canal a partir do qual carregar
      • Suporte para compensações programáveis
    • Transmissão

      • Braçadeiras de textura para limitar a pré-carga do WDDM
    • Limites de textura de 16K

    • Requer precisão de 8 bits de subtexel e sub-mip na filtragem de textura

    • Novos formatos de compressão de textura (1 novo formato LDR e 1 novo formato HDR)

  • Direct3D 11 suporta oDepth conservador - Este algoritmo permite que um sombreador de pixel compare o valor de profundidade por pixel do sombreador de pixel com o do rasterizador. O resultado permite operações iniciais de abate de profundidade, mantendo a capacidade de saída oDepth a partir de um sombreador de pixel.

  • O Direct3D 11 suporta memória grande

    • Permitir recursos > 4GB
    • Manter índices de recursos de 32 bits, mas recursos maiores
  • O Direct3D 11 suporta melhorias na saída de fluxo

    • Saída de fluxo endereçável
    • Aumente a contagem de saída de fluxo para 4
    • Alterar todos os buffers de saída de fluxo para serem multielementos
  • O Direct3D 11 suporta Shader Model 5 (consulte Shader Model 5)

    • Duplas com desnormas
    • Instrução do conjunto de bits de contagem
    • Encontrar a instrução do primeiro conjunto de bits
    • Manuseamento de carga/transbordamento
    • Instruções de reversão de bits para FFTs
    • Swap condicional intrínseco
    • Resinfo sobre buffers
    • Recíproco de precisão reduzida
    • Instruções de conversão de sombreador - fp16 para fp32 e vice-versa
    • Buffer estruturado, que é um novo tipo de buffer contendo elementos estruturados.
  • O Direct3D 11 suporta vistas de profundidade ou estêncil só de leitura

    • Desativa as gravações na parte que é somente leitura, permite o uso de textura como entrada e para abate de profundidade
  • O Direct3D 11 suporta draw indirect - o Direct3D 10 implementa o DrawAuto, que pega o conteúdo (gerado pela GPU) e o renderiza (na GPU). O Direct3D 11 generaliza DrawAuto para que ele possa ser chamado por um Compute Shader usando DrawInstanced e DrawIndexedInstanced.

  • O Direct3D 11 suporta recursos diversos

    • Visores de ponto flutuante
    • Fixação mipmap por recurso
    • Viés de profundidade - Este algoritmo atualiza o comportamento do viés de profundidade, usando o estado do rasterizador. O resultado elimina os cenários em que o viés calculado poderia ser NaN.
    • Limites de recursos - Os índices de recursos ainda precisam ser <= 32 bits, mas os recursos podem ser maiores que 4 GB.
    • Rasterizer Precisão
    • Requisitos do MSAA
    • Contadores reduzidos
    • Formato de 1 bit e filtro de texto removidos

Recursos adicionados em versões anteriores

Para obter a lista dos recursos adicionados em versões anteriores, consulte os seguintes tópicos:

O que há de novo no Direct3D 11