Anonim

Vamos enfrentá-lo: o DirectX 11 e o OpenGL estão envelhecendo. O DirectX 11 foi introduzido com o Windows 7 em 2009 e o OpenGL 4.0 foi seguido um ano depois. Nos anos de software, essas tecnologias agora são antigas, e a atual safra de hardware em execução não estava na prancheta quando essas APIs gráficas foram lançadas. Dada essa desconexão óbvia, o que a indústria está fazendo para acompanhar os tempos? Bem, vamos dar uma olhada no futuro próximo e ver, mas, para começar, primeiro vamos explicar o que é uma API e qual função ela serve para jogos.

O que é uma API?

Uma API ou interface de programação de aplicativos é um conjunto de protocolos e ferramentas usadas para criar software. As APIs de gráficos são realmente apenas uma API especializada criada para facilitar a geração de gráficos 3D. As APIs gráficas facilitam a construção de imagens 3D, mas também permitem que você diga à API para fazer alguma coisa (por exemplo, desenhe um retângulo) e, por sua vez, permita que a API se comunique com o hardware sobre como executar esta tarefa. Esta é a principal razão pela qual tantas GPUs diferentes com hardware especializado podem rodar nos mesmos jogos. Sem a existência de uma API, o mesmo jogo teria que ser escrito de maneiras diferentes para se comunicar com cada conjunto específico de hardware. Isso limitaria severamente a fabricação de hardware e aumentaria muito o custo de construção de jogos, um custo que acabaria sendo repassado ao consumidor final.

Para tornar a explicação acima um pouco mais fácil de entender, usarei uma analogia: pense em uma API como um gerente de canteiro de obras. Seu trabalho é pegar a ideia do arquiteto e dividi-la, agendar quais equipes precisam estar onde e quando e garantir que todos estejam na mesma página do que precisa ser feito.

Figura 1: Representação gráfica de como uma API funciona

APIs de gráficos atualmente usados

Agora que entendemos o trabalho de uma API gráfica, vamos dar uma olhada mais de perto na programação atual. O principal player no mercado hoje é o DirectX da Microsoft, lançado em 1995. Ele foi atualizado várias vezes desde seu lançamento e está incluído no sistema operacional Windows da Microsoft. O DirectX é a API de gráficos únicos que praticamente todos os jogos lançados para PC suportam. De fato, é tão comum que realmente é o padrão para jogos de PC atualmente. O DirectX é exclusivo dos produtos Windows e Microsoft, o que infelizmente o torna um sistema muito fechado. O próximo na fila é o OpenGL, a única grande API gráfica de código aberto. O OpenGL foi lançado em 1992 e é multiplataforma, o que significa que funciona com vários sistemas operacionais, incluindo Windows, Linux e Mac OS. Por fim, temos a mais nova API gráfica, Mantle. O Mantle foi desenvolvido em 2013 por meio de uma parceria entre a AMD e a Dice. O Mantle está disponível no Windows e apenas para as GPUs da AMD.

Figura 2: Comparando o DirectX 12 versus o DirectX 11
Fonte de imagem; Crédito de imagens: Intel

DirectX 12

O DirectX 12 deve ser lançado com o Windows 10 neste outono e muitas novas melhorias estão sendo divulgadas. Uma das grandes melhorias é o suporte multi-threading muito melhor. Mais trabalho está espalhado por vários núcleos na CPU, permitindo uma utilização muito melhor e mais eficiente da CPU. Muitas vezes, o DirectX 11 terá apenas um núcleo da CPU completamente maximizado, enquanto outros núcleos estão parados quase inativos. O DirectX 12 promete espalhar essa carga de trabalho pelos núcleos da CPU de maneira mais uniforme, dando aos jogos muito mais energia da CPU para trabalhar. A próxima grande melhoria prometida pelo DirectX 12 é a capacidade de lidar com muitas outras chamadas de empate. Uma chamada de empate acontece sempre que o mecanismo do jogo deseja desenhar algo na tela. O requisito de muitas chamadas de empate geralmente é muito desgastante para a CPU. O DirectX 12 deve ser capaz de lidar com até 600.000 chamadas de empate. Para colocar isso em perspectiva, o DirectX 9 pode lidar apenas com 6.000 chamadas de empate ou 1/100 do que o DirectX 12 será capaz.

Há anos, é possível executar várias GPUs no modo SLI / Crossfire. No entanto, uma das grandes limitações foi que o VRAM incorporado nos cartões não se acumulou para formar um pool grande e contínuo. Por exemplo, se você tiver duas GPUs cada uma com 2 GB de VRAM, ainda terá efetivamente apenas 2 GB de VRAM porque cada cartão deverá ter as mesmas informações armazenadas. O DirectX 12 espera resolver esse problema usando AFR ou renderização de quadro alternativo. Em vez de cada GPU renderizar parte de cada quadro, as GPU agora renderizam um quadro inteiro cada. Isso permitirá que a VRAM em cada placa seja usada de forma independente, e esperamos que placas com quantidades menores de VRAM sejam viáveis ​​para jogos por um bom tempo. Supõe-se que existem muitos outros novos recursos incluídos no DirectX 12 para impulsionar os gráficos dos jogos mais do que nunca. No entanto, a Microsoft ainda está sendo bastante discreta sobre o que são esses novos recursos. Esperamos saber mais sobre eles assim que o lançamento da API se aproximar.

Figura 3: A sobrecarga da API do DirectX 12 é reduzida ao usar CPUs de vários núcleos.
Fonte de imagem; Crédito de imagem: nVidia GeForce

Vulkan

Não há tanto conhecimento sobre o Vulkan quanto o DirectX 12, como foi anunciado na GDC 2015. O que sabemos é que os criadores do OpenGL, Khronos Group, abandonaram o nome glNext em favor do Vulkan. Vulkan parece derivar de Mantle, que mencionei anteriormente no artigo. Além disso, parece que a AMD está trazendo as melhores partes do Mantle para a mesa da Vulkan em parceria com o Khronos Group. Supõe-se que o Vulkan tenha muitas das mesmas vantagens do DirectX 12, mas não está vinculado a uma única plataforma como o Windows. Em vez disso, estará disponível em muitas plataformas diferentes, incluindo Linux e até dispositivos móveis. Os drivers Vulkan para Windows e Linux serão completamente de código aberto, ao contrário do DirectX. O Vulkan melhorará a multiencadeamento e, portanto, fará um uso muito melhor da energia da CPU disponível hoje, espalhando a carga de trabalho por vários núcleos da CPU. Como mencionado anteriormente, a redução da carga na CPU permitirá que as GPUs não sejam afuniladas tão facilmente quanto agora. Isso deve fornecer um aumento substancial na taxa de quadros durante os jogos. A Source 2, anunciada recentemente pela Valve, será o primeiro novo mecanismo de jogo a oferecer suporte total ao Vulkan, embora eu tenha certeza de que muitos mais serão anunciados em um futuro próximo. O Dota 2, um jogo conhecido por consumir muita CPU, foi exibido na Source 2 com a nova API Vulkan, usando os gráficos integrados da Intel na CPU. Isso é algo que certamente não seria desejável no DirectX 11, mas com o Vulkan o jogo parecia manter uma taxa de quadros razoável por toda parte. Dan Baker, desenvolvedor de jogos da Oxide, chegou ao ponto de dizer que "até que os fabricantes de GPUs se reúnam e façam GPUs dez vezes mais rápido do que temos agora, não podemos maximizar o CPU". Essa é uma boa notícia para pessoas que executam CPUs mais lentas ou que possuem muita potência de GPU atualmente, porque isso significa que é possível obter um desempenho muito melhor no mesmo conjunto de hardware.

Figura 4: Diagrama mostrando os benefícios do Vulkan (gargalo reduzido na GPU).
Fonte de imagem; Crédito de imagem: Khronos

O que isso significa para o futuro dos jogos?

Bem, por um bom tempo, a energia da GPU está aumentando a uma taxa muito mais rápida que a da CPU. Há cinco anos, a Intel chegou a afirmar que algumas GPUs eram 14 vezes mais rápidas que suas próprias CPUs. Esses testes foram feitos usando uma nVidia GTX 280 vs uma CPU Intel i7 960 Intel - agora considerada hardware relativamente desatualizado. A diferença entre um nVidia GTX Titan X (ou mesmo um nVidia GTX 980) e a atual potência da CPU principal - a CPU Intel i7-4790k - deve ser muito maior. O ponto que estou tentando ressaltar é que estamos começando a ver mais e mais jogos atingirem o limite devido ao CPU. Pergunte a qualquer pessoa com um monitor de alta taxa de atualização o quão difícil é manter 100 + fps com a CPU atual em alguns jogos. Francamente falando, só ficaria mais difícil sem essas novas APIs e sua capacidade de utilizar a energia da CPU com mais eficiência. A introdução dessas novas APIs pode significar um grande aumento no desempenho para a maioria das pessoas. Além disso, também permitiria que os desenvolvedores construíssem muito mais jogos com uso intenso de CPU do que temos agora. Por exemplo, imagine um jogo como o Assasins Creed com milhares de NPCs na tela ao mesmo tempo, todos interagindo entre si e com o seu personagem enquanto você está em uma cidade. Ou jogos como o Star Citizen, onde você precisa de uma CPU muito forte para obter qualquer tipo de taxa de quadros estável e aceitável, poderá em um futuro próximo exigir uma CPU média, na melhor das hipóteses, e uma GPU forte para manter 60fps sólidos e agradáveis.

Finalmente, este é um momento muito emocionante para ser um jogador. Quando essas novas APIs gráficas são lançadas, podemos ver o maior salto na tecnologia de jogos em muito tempo. Vamos apenas esperar que essas APIs atendam ao hype que elas já criaram para si mesmas.

Novas APIs gráficas e o futuro dos jogos para PC