O DirectX 12 foi lançado juntamente com o Windows 10 em 2015. Com seu lançamento, o DirectX 12 da Microsoft inaugurou uma nova era para jogadores e desenvolvedores de jogos. Capaz de reduzir a sobrecarga da CPU enquanto aumenta o desempenho da GPU, o DirectX 12 rapidamente ganhou fama.
No entanto, aumentar seu desempenho é realmente tão simples quanto mudar de DirectX 11 para DirectX 12? Vamos descobrir observando as diferenças entre DirectX 11 e 12.
O que é DirectX da Microsoft?
Conforme explicado em nossa visão geral do Microsoft DirectX, DirectX é uma coleção de APIs usadas para lidar com tarefas relacionadas a multimídia. Isso inclui programação de jogos em plataformas baseadas na Microsoft, como Windows e Xbox. Para fornecer algum contexto, vamos falar brevemente sobre APIs.
Uma interface de programação de aplicativos (API) possibilita que dois ou mais programas de computador se comuniquem, o que discutimos em
nossa visão geral de APIs. Pense nisso como um telefone. Se sua mãe lhe enviar um texto com uma lista de compras, seu telefone receberá esses dados e os exibirá para você. Isso é basicamente uma API.Quais são as diferenças entre DirectX 11 e DirectX 12?
Então, quais são as diferenças entre DirectX 11 e DirectX 12? Simplificando, o DirectX 12 é a versão mais recente do DirectX. Uma das diferenças mais notáveis entre os dois é como eles interagem com seu hardware. A maioria dos jogos desenvolvidos com DirectX 11 utiliza apenas entre dois e quatro núcleos da CPU. Um desses núcleos geralmente é dedicado a dizer à GPU o que fazer.
O jogo então usa os núcleos restantes para lidar com várias configurações intensivas da CPU, como as partículas de um jogo ou a distância de desenho. Por outro lado, o DirectX 12 distribui a carga de trabalho da CPU por vários núcleos e também permite que cada núcleo converse com a GPU ao mesmo tempo.
O DirectX 12 também vem com alguns sinos e assobios sofisticados. Isso inclui computação assíncrona e objetos de estado de pipeline (PSOs). A computação assíncrona aumenta a utilização da GPU, permitindo que várias cargas de trabalho funcionem em paralelo. Isso essencialmente desbloqueia todo o potencial da sua GPU.
Além da renderização gráfica, sua GPU é responsável por lidar com uma ampla gama de outras tarefas, como a execução de algoritmos de aprendizado de máquina. Com o DirectX 11, a GPU só pode executar uma dessas tarefas por vez e em uma determinada ordem. Quando isso ocorre, o desempenho é afetado porque todos os recursos da GPU não estão sendo usados.
Pense nisso como um garçom em um restaurante. Quando um garçom recebe seu pedido pela primeira vez, eles perguntam o que você gostaria de beber primeiro. Depois de receber suas bebidas, eles perguntam o que você gostaria de prato principal. Seu pedido é feito em etapas. O garçom não vai perguntar o que você gostaria de sobremesa antes de comer o prato principal. Embora isso seja eficaz, não é tão eficiente quanto poderia ser.
Na computação, cada uma das tarefas do garçom seria tratada por um recurso de GPU diferente. Até você receber sua bebida, os recursos de GPU necessários para atender seu pedido de prato principal ficarão ociosos. Com a computação assíncrona do DirectX 12, o garçom poderia anotar seu pedido de uma só vez, como em uma rede de fast food. Isso maximiza o uso da GPU e melhora o desempenho do jogo.
DirectX 12 também introduziu PSOs. Com o DirectX 11, quando a geometria de um jogo é enviada à GPU para ser renderizado, uma variedade de configurações de hardware são responsáveis por interpretar e renderizar este dados. Isso é chamado de pipeline gráfico e é o fluxo de entradas e saídas de dados que ocorrem à medida que sua GPU renderiza quadros. No entanto, o pipeline gráfico do DirectX 11 não é perfeito.
Esse pipeline contém uma coleção de estados diferentes, incluindo estado de rasterização, estado de mesclagem e estado de estêncil de profundidade, entre outros componentes. No DirectX 11, existem dependências entre esses diferentes estados. Como resultado, um estado não pode ser concluído até que o estado anterior seja definido. Isso diminui a utilização da GPU e aumenta a sobrecarga da CPU ao custo do desempenho.
Para contornar isso, o DirectX 12 introduziu os PSOs, que são objetos que descrevem o estado de todo o pipeline gráfico. PSOs são como uma garrafa que contém os vários estados e componentes necessários para criar uma imagem. Isso permite que a GPU pré-processe cada estado dependente em vez de ter que recalcular continuamente os estados com base no pipeline gráfico atual.
Isso reduz significativamente a sobrecarga da CPU encontrada no DirectX 11 e melhora o desempenho. Então, como essa diferença realmente se parece? Bem, de acordo com a Microsoft, o DirectX 12 reduz a sobrecarga da CPU em até 50% e melhora o desempenho da GPU em até 20%. Embora essas sejam algumas melhorias substanciais, isso não significa que você verá os mesmos resultados.
Por que mudar do DirextX 11 para o DirectX 12 não é simples
O DirectX 11 foi lançado pela primeira vez para o Windows Vista em 27 de outubro de 2009. Então, com o DirectX 12 seguindo em 2015, há um intervalo de seis anos entre o DirectX 11 e o DirectX 12. Durante esse tempo, milhares de jogos foram desenvolvidos usando o DirectX 11. Infelizmente, fazer a mudança do DirectX 11 para o DirectX 12 não é nada fácil.
O DirectX 11 é o que chamamos de API de alto nível. Simplificando, as APIs de alto nível são mais fáceis para os desenvolvedores trabalharem. O resultado são jogos estáveis, polidos e jogáveis. Por outro lado, o DirectX 12 é uma API de baixo nível e é uma fera diferente em comparação com o DirectX 11. Embora permita que os desenvolvedores ajustem a otimização em um nível granular, também exige amplo conhecimento para usar.
Dito isto, um jogo desenvolvido em DirectX 12 pode acabar com um desempenho pior dependendo do conhecimento do desenvolvedor sobre a API. Existem melhorias que acompanham o DirectX 12, mas tudo se resume a quão bem um desenvolvedor pode implementá-lo. Por esse motivo, muitos desenvolvedores optam por usar APIs de alto nível, como o DirectX 11.
Você deve escolher DirectX 11 ou DirectX 12?
A resposta depende de algumas coisas, como o jogo que você está tentando rodar. Por exemplo, Guild Wars 2 é executado no DirectX 11. Mesmo que seu sistema operacional e hardware usem DirectX 12, você não terá a opção de selecionar DirectX 11 em Guild Wars 2 porque o jogo não oferece suporte a ele. Esta é uma decisão inteiramente do desenvolvedor, ArenaNet.
Acredite ou não, a ArenaNet levou nove anos para mudar do DirectX 9 para o DirectX 11. No entanto, existem alguns jogos que suportam DirectX 11 e DirectX 12. fortnite (leia nossa folha de dicas do Fortnite), por exemplo. Através das configurações do jogo, os usuários podem alternar entre as duas versões. Para resumir, nem todos os jogos suportam DirectX 11 e DirectX 12. Para aqueles que o fazem, alterne entre os dois e determine por si mesmo qual funciona melhor no seu PC.
Se você pode escolher entre DirectX 11 e DirectX 12 também dependerá do seu hardware. Praticamente qualquer GPU moderna suportará DirectX 12, mas o mesmo não pode ser dito para GPUs mais antigas, como a Radeon HD 4870. Lançado em 2008, este GPU suporta apenas até DirectX 10. Isso significa que seria incapaz de rodar a maioria dos jogos modernos, que rodam usando DirectX 11 e DirectX 12.
O DirectX 12 é a escolha certa para você?
Em suma, mudar de DirectX 11 para DirectX 12 não é tão preto no branco quanto parece. Depende de uma variedade de fatores, como hardware, software, sistema operacional e se um jogo oferece suporte a ambos. Tudo isso precisa ser considerado antes de tomar uma decisão, e isso provavelmente também será verdade para as futuras gerações de DirectX.