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 área de trabalho.

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 a tecnologia DirectCompute. Um sombreador de computação é integrado ao Direct3D e é acessível 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á conectado diretamente a outros estágios do sombreador.

Um sombreador de computação foi projetado para aplicativos de mercado em massa que executam cálculos a taxas interativas, quando o custo da 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 a 1 para registros de entrada (como um sombreador de vértice faz) ou registros de saída (como o sombreador de pixel). Há suporte para alguns recursos do sombreador gráfico, 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.

Confira 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 ao gerenciar 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 dar suporte a uma variedade de materiais diferentes em uma cena renderizada em várias configurações de hardware. Para resolver esse desafio, os desenvolvedores de sombreador geralmente recorrem a uma das duas abordagens gerais. Eles criaram sombreadores grandes e de uso geral 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 do sombreador geralmente tem sido um problema para os desenvolvedores que agora devem gerenciar milhares de permutações de sombreador diferentes em 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 runtime à vinculação de sombreador para ajudar os desenvolvedores a programar sombreadores.

Confira Vinculação dinâmica para obter informações adicionais.

Multithreading

Muitos aplicativos gráficos são associados à CPU devido a atividades dispendiosas, como passagem de grafo 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 multithreading para permitir uma interação eficiente entre vários threads de CPU e as APIs gráficas D3D11.

O Direct3D 11 permite que a seguinte funcionalidade dê suporte ao multithreading:

  • Objetos simultâneos agora são criados em threads separados — a criação de funções de ponto de entrada que criam objetos com thread livre possibilita que muitos threads criem objetos simultaneamente. Por exemplo, um aplicativo agora pode compilar um sombreador ou carregar uma textura em um thread durante a renderização em outro.
  • Listas de comandos podem ser criadas em vários threads — uma lista de comandos é uma sequência registrada de comandos gráficos. Com o Direct3D 11, você pode criar listas de comandos em vários threads de CPU, o que permite a passagem paralela do banco de dados de cena ou o processamento físico em vários threads. Isso libera o thread de renderização main para expedir buffers de comando para o hardware.

Consulte MultiThreading para obter informações adicionais.

Mosaico

O mosaico pode ser usado para renderizar um único modelo com diferentes níveis de detalhes. Essa abordagem gera um modelo mais geométrico preciso que depende do nível de detalhe necessário para uma cena. Use o mosaico em uma cena em que o nível de detalhes permite um modelo de geometria inferior, o que reduz a demanda por largura de banda de memória consumida durante a renderização.

No Direct3D, o mosaico é implementado na GPU para calcular uma superfície curva mais suave de um patch de entrada grosseira (menos detalhado). Cada face de patch (quad ou triângulo) é subdividida em faces triangulares menores que se aproximam melhor da superfície desejada.

Para obter informações sobre como implementar o mosaico no pipeline de gráficos, consulte Visão geral do Mosaico.

Listagem completa de recursos

Esta é uma lista completa dos recursos no Direct3D 11.

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

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

    • {1>Sombreador Hull<1}
    • Sombreador de domínio
  • O Direct3D 11 dá suporte a multithreading (consulte MultiThreading)

    • Criação de recurso/sombreador/objeto multithread
    • Criação de lista de exibição multithread
  • O Direct3D 11 expande sombreadores com os seguintes recursos (consulte Modelo de sombreador 5)

    • Recursos endereçáveis – texturas, buffers constantes e samplers

    • 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 registros de sombreador para reduzir significativamente a quantidade de dados necessários para entrada em um sombreador. Os algoritmos que o sombreador de computação 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 gere 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 centroide de atributos deve obedecer às seguintes regras:

        • Se todas as amostras no primitivo forem cobertas, o atributo será avaliado no centro de pixels, independentemente de o padrão de exemplo ter um local de exemplo no centro de pixels.

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

        • Se nenhuma amostra for coberta (como em pixels auxiliares executados fora dos limites de uma primitiva para preencher selos de 2x2 pixels), o atributo será avaliado de uma das seguintes maneiras:

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

    • Gather4

      • Suporte para texturas de vários componentes – especifique um canal do qual carregar
      • Suporte para deslocamentos programáveis
    • Streaming

      • Fixações de textura para limitar o pré-carregamento do WDDM
    • Limites de textura de 16K

    • Exigir 8 bits de precisão de subtexto e submip na filtragem de textura

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

  • O Direct3D 11 dá suporte ao oDepth conservador – esse 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 de extração de profundidade antecipadas, mantendo a capacidade de gerar oDepth de um sombreador de pixel.

  • O Direct3D 11 dá suporte à memória grande

    • Permitir recursos > de 4 GB
    • Manter índices de recursos de 32 bits, mas recursos maiores
  • O Direct3D 11 dá suporte a melhorias de saída de fluxo

    • Saída do Fluxo Endereçável
    • Aumentar a contagem de saída do Stream para 4
    • Alterar todos os buffers de saída de fluxo para serem de vários elementos
  • O Direct3D 11 dá suporte ao Modelo de Sombreador 5 (consulte Modelo de Sombreador 5)

    • Duplos com desnorms
    • Instrução de conjunto de bits de contagem
    • Localizar a instrução do primeiro conjunto de bits
    • Manipulação de transporte/estouro
    • Instruções de reversão de bits para FFTs
    • Permuta condicional intrínseca
    • Resinfo em 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 que contém elementos estruturados.
  • O Direct3D 11 dá suporte a exibições de profundidade ou estêncil somente leitura

    • Desabilita gravações na parte que é somente leitura, permite usar textura como entrada e para extração de profundidade
  • O Direct3D 11 dá suporte ao desenho indireto – o Direct3D 10 implementa DrawAuto, que usa conteúdo (gerado pela GPU) e o renderiza (na GPU). O Direct3D 11 generaliza DrawAuto para que ele possa ser chamado por um sombreador de computação usando DrawInstanced e DrawIndexedInstanced.

  • O Direct3D 11 dá suporte a diversos recursos

    • Visores de ponto flutuante
    • Fixação de mipmap por recurso
    • Viés de profundidade – esse algoritmo atualiza o comportamento de desvio de profundidade usando o estado do rasterizador. O resultado elimina os cenários em que o viés calculado pode ser NaN.
    • Limites de recursos – os índices de recursos ainda precisam ser <= 32 bits, mas os recursos podem ter mais de 4 GB.
    • Precisão do rasterizador
    • 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:

Novidades no Direct3D 11