Quais são as diferenças e quais você deve usar?

DirectX 12 foi lançado junto 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 e ao mesmo tempo aumentar o desempenho da GPU, o DirectX 12 rapidamente ganhou fama.

No entanto, aumentar seu desempenho é realmente tão simples quanto mudar do DirectX 11 para o DirectX 12? Vamos descobrir observando as diferenças entre DirectX 11 e 12.

O que é o DirectX da Microsoft?

Conforme explicado em nossa visão geral do Microsoft DirectX, DirectX é uma coleção de interfaces de programação de aplicativos (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 API possibilita que dois ou mais programas de computador se comuniquem entre si, o que discutiremos em nossa visão geral de APIs. Pense nisso como um telefone. Se sua mãe lhe enviar uma mensagem de 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, DirectX 12 é a versão mais recente do DirectX. Uma das diferenças mais notáveis ​​é como eles interagem com o seu hardware. A maioria dos jogos desenvolvidos com DirectX 11 utiliza apenas dois a quatro núcleos de CPU. Um desses núcleos geralmente informa à GPU o que fazer.

O jogo então usa os núcleos restantes para lidar com várias configurações de uso intensivo da CPU, como partículas de um jogo ou distância de visão. Por outro lado, o DirectX 12 distribui a carga de trabalho da CPU por vários núcleos e permite que cada núcleo se comunique com a GPU simultaneamente.

  Torne seu Mac novo novamente com otimização poderosa – CleanMyMac

DirectX 12 também vem com alguns recursos 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. Basicamente, isso desbloqueia todo o potencial da sua GPU.

Além da renderização gráfica, sua GPU lida com uma ampla gama de outras tarefas, como executar 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. O desempenho é prejudicado quando isso ocorre porque os recursos da GPU não estão sendo usados ​​de forma eficiente.

Pense nisso como um garçom em um restaurante. Quando um garçom anota seu pedido, ele pergunta primeiro o que você quer beber. Assim que você recebe suas bebidas, eles perguntam o que você deseja para o prato principal. Seu pedido é realizado em etapas. O garçom não vai perguntar o que você gostaria de sobremesa antes de comer o prato principal. Embora seja eficaz, não é tão eficiente quanto poderia ser.

Na computação, um recurso de GPU diferente cuidaria de cada uma das tarefas do garçom. Até você receber sua bebida, os recursos de GPU necessários para atender o pedido do prato principal ficarão ociosos. Com a computação assíncrona do DirectX 12, o garçom seria capaz de anotar seu pedido de uma só vez, como em uma rede de fast food. Isso maximiza o uso da GPU e melhora o desempenho dos jogos.

DirectX 12 também introduziu objetos de estado de pipeline (PSOs). Com o DirectX 11, quando a geometria de um jogo é submetida à GPU para renderização, diversas configurações de hardware são responsáveis ​​por interpretar e renderizar esses dados. Isso é chamado de pipeline gráfico e o fluxo de entradas e saídas de dados que ocorrem conforme sua GPU renderiza quadros. No entanto, o pipeline gráfico do DirectX 11 não é perfeito.

Este pipeline contém uma coleção de diferentes estados, 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 em detrimento do desempenho.

  Como corrigir “Não foi possível criar a máquina virtual Java”

Para contornar isso, o DirectX 12 introduziu PSOs, objetos que descrevem o estado de todo o pipeline gráfico. Os 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 recomputar 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? 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 DirectX 11 para o DirectX 12 não é simples

O DirectX 11 foi lançado pela primeira vez para Windows Vista em 27 de outubro de 2009. Portanto, com o DirectX 12 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, mudar do DirectX 11 para o DirectX 12 não é nada fácil.

DirectX 11 é o que chamamos de API de alto nível. Simplificando, APIs de alto nível são mais fáceis para os desenvolvedores trabalharem. O resultado são jogos estáveis, sofisticados e jogáveis. Por outro lado, DirectX 12 é uma API de baixo nível e uma fera diferente do DirectX 11. Embora permita aos desenvolvedores ajustar a otimização em um nível granular, também exige amplo conhecimento para uso.

Dito isto, um jogo desenvolvido em DirectX 12 pode acabar com pior desempenho dependendo do conhecimento do desenvolvedor sobre a API. Algumas melhorias vêm com o DirectX 12, mas na verdade 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 DirectX 11.

DX 11 vs. DX 12: Qual você deve escolher?

A resposta depende de algumas coisas, como o jogo que você está tentando executar. Por exemplo, Guild Wars 2 roda em DirectX 11. Mesmo que seu sistema operacional e hardware possam usar DirectX 12, você não terá a opção de selecionar DirectX 11 em Guild Wars 2 porque o jogo não o suporta. Esta é inteiramente uma decisão do desenvolvedor, ArenaNet.

  Google Fotos perde seu armazenamento gratuito: o que você precisa saber

Crédito da imagem: Martin Kerstein/Guild Wars 2

Acredite ou não, a ArenaNet levou nove anos para mudar do DirectX 9 para o DirectX 11. No entanto, alguns jogos suportam DirectX 11 e DirectX 12, incluindo Fortnite (leia nossa folha de dicas do Fortnite), Battlefield 5, Shadow of o Tomb Raider e muito mais. Os usuários podem alternar entre DirectX 11 e DirectX 12 nas configurações do jogo.

Agora, o fato de alguns jogos suportarem DirectX 11 e 12 provavelmente fez você se perguntar sobre o desempenho do jogo. Escolher DX 11 ou DX 12 oferece melhor desempenho no jogo? O vídeo a seguir ilustra as diferenças entre DirectX 11 e DirectX 12 em uma variedade de jogos, apresentando especificações vitais como média de quadros por segundo, uso de CPU, uso de GPU e muito mais, usando um AMD Ryzen 3600, Nvidia GeForce RTX 3060 Ti e RAM DDR4 de 16 GB.

Os resultados são surpreendentes em muitos aspectos, às vezes com pouca diferença visual entre o DX 11 e o DX 12, apesar dos vários anos de diferença entre seus lançamentos. Você também deve ter notado as diferenças nas cargas de GPU e CPU entre as duas versões DirectX, com as versões DX 12 de cada jogo normalmente exigindo menos recursos do que o antigo DX 11.

Além do suporte no jogo, a escolha 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 de GPUs mais antigas como a Radeon HD 4870. Lançada em 2008, esta GPU suporta apenas até DirectX 10. Isso significa que seria incapaz de executar a maioria dos modernos jogos, que rodam usando DirectX 11 e DirectX 12.

DirectX 12 é a escolha certa para você?

Resumindo, mudar do DirectX 11 para o 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.