Contents

DirectX 11 vs. DirectX 12: Quais são as diferenças e qual deve ser utilizado?

O DirectX 12 foi lançado juntamente com o Windows 10 em Com o seu lançamento, o DirectX 12 da Microsoft deu início a uma nova era para os jogadores e programadores de jogos. Capaz de reduzir a sobrecarga da CPU e aumentar o desempenho da GPU, o DirectX 12 rapidamente se tornou famoso.

De facto, pode perguntar-se se a melhoria do desempenho pode ser tão simples como migrar do DirectX 11 para o seu sucessor, o DirectX 12. Para compreender melhor esta transição, seria prudente examinar as discrepâncias que existem entre estas duas iterações do DirectX.

O que é o DirectX da Microsoft?

/pt/images/untitled-design-1.jpg

Em resumo, o Microsoft DirectX constitui um conjunto de ferramentas de desenvolvimento de software que facilitam a execução de várias operações multimédia nas aplicações, em particular nos programas de jogos implementados nos sistemas Windows e Xbox. A título de ilustração, pode ser útil aprofundar momentaneamente o conceito de interfaces de programação de aplicações (API), que são essencialmente uma série de protocolos que permitem uma comunicação fluida entre diferentes componentes de um sistema operativo, simplificando assim as interacções programáticas.

Uma Interface de Programação de Aplicações (API) facilita a comunicação entre várias aplicações de software através da troca de dados num formato estruturado. Na sua essência, uma API actua como um mediador, permitindo que diferentes sistemas interajam sem problemas. Este conceito é explorado mais detalhadamente na nossa análise exaustiva das API, onde aprofundamos as suas várias funcionalidades e utilização em diversos sectores. Para simplificar, imagine utilizar um telefone para enviar e receber mensagens; da mesma forma, uma API permite a transferência de informações de um programa para outro, permitindo aos utilizadores aceder e processar dados de forma eficiente.

Quais são as diferenças entre o DirectX 11 e o DirectX 12?

O DirectX 11 e o DirectX 12 representam iterações diferentes na evolução da API gráfica da Microsoft para o desenvolvimento de jogos. A principal distinção reside na sua interação com a arquitetura de hardware de um computador. Embora fosse típico que os jogos desenvolvidos com o DirectX 11 utilizassem apenas dois a quatro núcleos da CPU, com um núcleo a servir de ponto de comunicação entre a CPU e a GPU, o DirectX 12 introduz capacidades melhoradas de multithreading que permitem uma atribuição de recursos mais eficiente entre vários núcleos. Isto resulta num melhor desempenho e numa renderização mais suave das aplicações que utilizam esta interface gráfica actualizada.

Para otimizar o desempenho das aplicações de jogos, é importante que o software atribua recursos de forma eficaz. Isto significa utilizar todas as unidades de processamento disponíveis no seu potencial máximo, mantendo uma comunicação eficiente entre elas. A este respeito, alguns sistemas operativos implementaram mecanismos que permitem a distribuição de tarefas computacionais entre diferentes componentes de hardware, como processadores e placas gráficas. Ao aproveitar as capacidades de vários núcleos, estas estratégias melhoram o desempenho geral do sistema e facilitam a interação perfeita entre a unidade central de processamento (CPU) e a unidade de processamento gráfico (GPU).

De facto, uma das características notáveis do DirectX 12 é a incorporação de funcionalidades avançadas, como a computação assíncrona e os objectos de estado de pipeline (PSO), que aumentam significativamente a eficiência das unidades de processamento gráfico (GPU), permitindo a execução simultânea de várias tarefas. Consequentemente, esta tecnologia permite uma exploração óptima das capacidades de uma GPU, concretizando assim o seu potencial máximo de desempenho.

Para além de renderizar conteúdo gráfico, as unidades de processamento gráfico (GPUs) são capazes de lidar com um conjunto diversificado de tarefas, incluindo a execução de algoritmos de aprendizagem automática. No entanto, com o DirectX 11, a GPU está limitada à execução de apenas uma destas tarefas num determinado momento e numa sequência pré-determinada. Esta limitação resulta numa utilização não optimizada dos recursos da GPU, o que tem um impacto negativo no desempenho geral.

Considere a metáfora de um empregado de mesa num restaurante. Aguardando o pedido de alguém, o empregado começa por perguntar qual a bebida preferida do cliente. Depois de receber as bebidas, o empregado começa a perguntar qual é o prato principal. Este processo passo-a-passo, apesar da sua eficácia, carece de uma eficiência óptima devido à sua natureza sequencial.

No domínio da informática, é possível que diferentes unidades de processamento gráfico (GPU) gerem os pedidos individuais efectuados pelos clientes do restaurante. Enquanto aguardam a sua refeição, estes recursos GPU dedicados ao processo de encomenda permanecem desocupados até ao momento em que são necessários para processar o pedido de entrada do cliente. Ao tirar partido das capacidades da arquitetura de computação assíncrona do DirectX 12, os empregados de mesa podem recolher eficazmente todos os pedidos em simultâneo, à semelhança do serviço expedito prestado por estabelecimentos de fast-food populares. Esta abordagem optimiza a utilização dos recursos da GPU e melhora o desempenho geral dos jogos.

O DirectX 12 introduz Objectos de Estado de Pipeline (PSOs) que permitem aos programadores um maior controlo sobre as suas capacidades de processamento gráfico. Em versões anteriores, como o DirectX 11, o hardware era o único responsável pela interpretação e apresentação de dados gráficos através do pipeline gráfico, que consistia numa série de entradas e saídas que resultavam na apresentação de fotogramas. Embora o pipeline gráfico fornecesse uma base para uma renderização eficiente, não deixava de ter as suas imperfeições.

A configuração atual compreende uma série de estados diversos, como o estado de rasterização, o estado de mesclagem e o estado de estêncil de profundidade, além de vários outros. No DirectX 11, existem interdependências entre estes vários estados, fazendo com que dependam sequencialmente da conclusão uns dos outros. Consequentemente, a GPU permanece subutilizada enquanto a CPU sofre um aumento de sobrecarga, afectando negativamente o desempenho geral.

O DirectX 12 resolveu esse problema introduzindo os Objetos de Superfície Primária (PSOs), que representam o estado geral do pipeline gráfico. Conceituados como um recipiente, os PSOs englobam todos os componentes necessários para renderizar uma imagem. Ao utilizar PSOs, a GPU pode realizar o processamento preventivo de estados interdependentes em vez de calculá-los repetidamente com base no pipeline gráfico ativo.

De facto, o DirectX 12 apresenta uma diminuição notável do esforço da CPU quando comparado com o seu antecessor, o DirectX 11, resultando numa melhoria da eficiência global do sistema. De facto, a Microsoft informou que a nova API pode reduzir a utilização da CPU até metade e aumentar a produtividade da GPU em cerca de um quinto. No entanto, é importante notar que estas optimizações podem variar dependendo de vários factores, como a configuração do hardware e as especificidades da aplicação.

Por que mudar do DirectX 11 para o DirectX 12 não é simples

A introdução do DirectX 11 para o Windows Vista ocorreu em 27 de outubro. Posteriormente, o lançamento do DirectX 12 ocorreu em 2015, resultando num intervalo de seis anos entre o DirectX 11 e o DirectX 12. Ao longo destes anos, foram criados inúmeros jogos de vídeo utilizando o DirectX 11 como base. No entanto, a transição do DirectX 11 para o DirectX 12 apresenta desafios consideráveis.

O DirectX 11 é uma interface de programação avançada que simplifica o desenvolvimento ao fornecer funcionalidades de nível superior. Isto resulta em jogos de vídeo mais eficientes e visualmente mais apelativos. Em contraste, o DirectX 12 funciona a um nível inferior de abstração, exigindo conhecimentos especializados para uma utilização eficaz. No entanto, esta abordagem permite um maior controlo sobre as optimizações de desempenho numa base detalhada.

De facto, a eficácia de um jogo criado com DirectX 12 pode depender da proficiência do seu programador em relação à API. Embora o DirectX 12 proporcione determinadas melhorias, o resultado final dependerá da capacidade do programador para o utilizar eficazmente. Consequentemente, muitos programadores optam por APIs de nível superior, como o DirectX 11, devido à sua facilidade de utilização e acessibilidade.

DX 11 vs. DX 12: Qual deve escolher?

A viabilidade da utilização do DirectX 12 no Guild Wars 2 depende de vários factores, incluindo o jogo específico que está a ser jogado. Neste caso, o Guild Wars 2 foi concebido para funcionar exclusivamente com o DirectX 11, apesar do potencial de compatibilidade com o DirectX 12 com base no sistema operativo e nas capacidades de hardware do utilizador. No entanto, a escolha de limitar o jogo ao DirectX 11 cabe apenas aos criadores da ArenaNet.

/pt/images/untitled-design-3.jpg Crédito da imagem: Martin Kerstein/ Guild Wars 2

De facto, vale a pena notar que a ArenaNet precisou de um período considerável de nove anos para fazer a transição do DirectX 9 para o DirectX No entanto, alguns jogos de vídeo estão equipados com a capacidade de funcionar simultaneamente com o DirectX 11 e o DirectX 12, como o Fortnite, que os utilizadores podem consultar no nosso guia completo sobre o Fortnite para obterem mais informações. Além disso, títulos populares como Battlefield 5, Shadow of the Tomb Raider e outros também oferecem esta compatibilidade, permitindo aos jogadores alternar facilmente entre DirectX 11 e DirectX 12 nas definições do jogo.

É provável que o facto de certos jogos serem compatíveis com DirectX 11 e 12 tenha levado à sua pergunta sobre o seu impacto no desempenho do jogo. Especificamente, poderá estar curioso para saber se a opção pelo DX 11 ou DX 12 resulta num melhor desempenho nesses jogos. Para responder a esta questão, preparámos um vídeo que compara os efeitos de cada versão do DirectX em vários títulos, apresentando dados como FPS médio, utilização da CPU e utilização da GPU, utilizando um AMD Ryzen 3600, Nvidia GeForce RTX 3060 Ti e 16 GB de RAM DDR4.

Os resultados provocam uma sensação de espanto, uma vez que existe frequentemente uma disparidade visual mínima entre o DX 11 e o DX 12, apesar de terem sido lançados com vários anos de diferença. Além disso, é digno de nota que a utilização da GPU e da CPU tende a ser menor para as iterações DX 12 de cada título quando comparadas com as respectivas contrapartes DX 11.

De facto, a seleção de uma unidade de processamento gráfico (GPU) compatível com o DirectX 11 ou o DirectX 12 é crucial para tomar essa decisão. Embora muitas GPUs contemporâneas sejam capazes de suportar DirectX 12, certas GPUs antigas, como a Radeon HD lançada em 2008, podem não possuir os recursos necessários para lidar com títulos mais recentes que dependem muito dessas APIs. Como tal, a utilização de uma GPU desactualizada pode limitar a capacidade de desfrutar de experiências de jogo recentes, dada a sua compatibilidade restrita com o DirectX 11 e o DirectX 12.

O DirectX 12 é a escolha certa para si?

A determinação da transição do DirectX 11 para o DirectX 12 não é uma questão simples, uma vez que depende de diversas variáveis, incluindo a configuração do hardware, a compatibilidade do software, o sistema operativo e o facto de o jogo em particular suportar ou não ambas as versões. Por conseguinte, deve ser feita uma análise cuidadosa antes de se chegar a qualquer conclusão, que se espera que continue a ser aplicável às iterações subsequentes do DirectX.