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, 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 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á conectado diretamente a outros estágios do sombreador.

Um sombreador de computação foi projetado para aplicativos de mercado de 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 1-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 de gráficos, 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 a 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 fornecem 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 enfrentar esse desafio, os desenvolvedores de sombreador geralmente recorrem a uma das duas abordagens gerais. Eles criaram sombreadores grandes e de uso geral totalmente em destaque 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 de desenvolvedor de força bruta para obter o mesmo resultado. A explosão de permutação do sombreador tem sido frequentemente um problema para os desenvolvedores que agora devem 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 runtime à vinculação de sombreador para ajudar os desenvolvedores a programar sombreadores.

Consulte Link Dinâmico 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 habilitar a 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 – fazer funções de ponto de entrada que criam objetos sem threaded 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 do processamento de física em vários threads. Isso libera o thread de renderização principal para enviar buffers de comando para o hardware.

Consulte MultiThreading para obter informações adicionais.

Mosaico

O Tessellation 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 a tessellation em uma cena em que o nível de detalhes permite um modelo de geometria inferior, o que reduz a demanda pela largura de banda de memória consumida durante a renderização.

No Direct3D, o tessellation é 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 rostos triangulares menores que se aproximam melhor da superfície desejada.

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

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 a tessellation (consulte a Visão geral do Tessellation) 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 o Sombreador Modelo 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 Recurso).

    • Sub-rotinas

    • Sombreador de computação (consulte Visão geral do Sombreador de Computação) – um sombreador que acelera as computações dividindo o espaço de 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 a 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 geometry (consulte Recursos do Sombreador geometry)

      • Instancamento – permite que o sombreador de geometria gere um máximo de 1.024 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 pixels pode avaliar atributos dentro do pixel, em qualquer lugar na grade de várias imagens

      • A amostragem centroide de atributos deve obedecer às seguintes regras:

        • Se todos os exemplos no primitivo forem cobertos, 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 é avaliado no primeiro exemplo coberto, ou seja, o exemplo 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 nenhum exemplo for coberto (como em pixels auxiliares executados fora dos limites de um primitivo 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 dos exemplos 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 pixel center é 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 a ser carregado
      • Suporte para deslocamentos programáveis
    • Streaming

      • Pinças 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 abate de profundidade precoces, 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 32bits, 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 vários elementos
  • O Direct3D 11 dá suporte ao Sombreador Modelo 5 (consulte o Modelo 5 do Sombreador)

    • Duplos com denorms
    • 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
    • Troca 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 abate de profundidade
  • O Direct3D 11 dá suporte ao desenho indireto – o Direct3D 10 implementa o 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 recursos diversos

    • Visores de ponto flutuante
    • Fixação de mipmap por recurso
    • Viés de profundidade – esse 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 pode ser NaN.
    • Limites de recursos – os índices de recursos ainda são necessários para ser <= 32 bits, mas os recursos podem ser maiores que 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