O que é Direct3D 12?

O DirectX 12 apresenta a próxima versão do Direct3D— a API de gráficos 3D no centro do DirectX. O Direct3D 12 é mais rápido e eficiente do que qualquer versão anterior. O Direct3D 12 permite cenas mais avançadas, mais objetos, efeitos mais complexos e utilização completa do hardware de GPU moderno.

Como o Direct3D 12 pode ser muito mais rápido e eficiente?

O Direct3D 12 é exclusivo, pois fornece um nível mais baixo de abstração de hardware do que as versões anteriores, o que permite melhorar significativamente o dimensionamento de CPU multi-núcleo do seu título (ou outro aplicativo). Por um lado, com o Direct3D 12, seu título é responsável pelo próprio gerenciamento de memória. Além disso, usando o Direct3D 12, seus títulos e aplicativos se beneficiam da redução da sobrecarga de GPU por meio de recursos como filas de comandos e listas, tabelas de descritor e objetos de estado conciso do pipeline.

O Direct3D 12 e o Direct3D 11.3 introduzem um conjunto de novos recursos para o pipeline de renderização.

  • Rasterização conservadora para habilitar a detecção de ocorrência confiável.
  • Recursos em bloco de volume para permitir que recursos tridimensionais transmitidos sejam tratados como se estivessem todos na memória de vídeo.
  • Exibições ordenadas por rasterizador para habilitar a renderização de transparência confiável.
  • Definir a referência de estêncil dentro de um sombreador para habilitar sombreamento especial e outros efeitos.
  • Mapeamento de textura aprimorado e cargas de UAV (exibição de acesso não ordenado) digitadas.

Quão profundamente devo investir no Direct3D 12?

O Direct3D 12 oferece quatro main benefícios para desenvolvedores de gráficos (em comparação com o Direct3D 11).

  • Sobrecarga de CPU muito reduzida.
  • Redução significativa do consumo de energia.
  • Melhoria de até (aproximadamente) 20% na eficiência da GPU.
  • Desenvolvimento multiplataforma para um dispositivo Windows 10 (PC, tablet, console, celular).

O Direct3D 12 foi projetado para que programadores de gráficos avançados usem. Ele exige uma experiência gráfica significativa e um alto nível de ajuste fino. O Direct3D 12 foi projetado para fazer uso total de vários threads, sincronização cuidadosa de CPU/GPU e transição e reutilização de recursos de uma finalidade para outra. Essas são técnicas que exigem uma quantidade considerável de habilidade de programação no nível da memória.

Outra vantagem que o Direct3D 12 tem é seu pequeno volume de API. Há cerca de 200 funções; e cerca de um terço desses fazem todo o trabalho pesado. Isso significa que você, como desenvolvedor de gráficos, deve ser capaz de se educar sobre e master o conjunto completo de API sem precisar memorizar muitos nomes de API.

O Direct3D 11 continua sendo uma opção viável junto com o Direct3D 12. Muitos dos novos recursos de renderização do Direct3D 12 estão disponíveis no Direct3D 11.3. O Direct3D 11.3 é uma API de mecanismo gráfico de baixo nível; e Direct3D 12 se aprofundam ainda mais.

Há pelo menos duas maneiras pelas quais sua equipe de desenvolvimento pode abordar um título do Direct3D 12.

Usar o Direct3D 12 exclusivamente

Para um projeto que aproveita todos os benefícios do Direct3D 12, você deve desenvolver um motor Direct3D 12 altamente personalizado desde o início.

Se você, como desenvolvedor de gráficos, entender o uso e o reutilização de recursos em seus títulos e puder aproveitar isso minimizando o carregamento e a cópia, poderá desenvolver e personalizar um mecanismo altamente eficiente para esses títulos. As melhorias de desempenho podem ser muito consideráveis, liberando o tempo da CPU para aumentar o número de chamadas de desenho e, portanto, adicionando mais brilho aos seus gráficos.

O investimento em programação é significativo e você deve considerar a depuração e a instrumentação do projeto desde o início. Threading, sincronização e outros bugs de tempo podem ser desafiadores.

Usar o Direct3D 12 em conjunto com o Direct3D 11

Uma abordagem de curto prazo seria abordar gargalos conhecidos no título do Direct3D 11. Você pode abordá-los usando as técnicas de interoperabilidade e/ou D3D11On12 do Direct3D 12 , que permitem que as duas versões da API trabalhem juntas. Essa abordagem minimiza as alterações necessárias para um mecanismo gráfico Direct3D 11 existente. No entanto, os ganhos de desempenho serão limitados ao alívio do gargalo que o código direct3D 12 aborda.

Vídeos do Microsoft DirectX 12 (e educação gráfica)

Educação aprimorada para desenvolvedores de gráficos. Esses vídeos abordam tópicos como modos de apresentação, portabilidade para DirectX 12, rasterização conservadora, ferramentas gráficas, Angle, Win2D e eventos como GDC, Build e muito mais. O conteúdo técnico do DirectX 12 é precedido pelo DirectX 12. Venha aqui para aprender dicas e truques diretamente da equipe de recursos do Direct3D 12. Queremos ajudá-lo a usar nossas versões e ferramentas mais recentes para tornar seu jogo o melhor possível!

Conclusão

O Direct3D 12 é sobre o desempenho dramático do mecanismo gráfico. A facilidade de desenvolvimento, os constructos de alto nível e o suporte ao compilador foram redimensionados para habilitar isso. O suporte ao driver e a facilidade de depuração permanecem em pé de igualdade com o Direct3D 11.

O Direct3D 12 é um novo território. Território que está esperando o perito curioso vir e explorar.