DirectX 12 poderá vir a ser um flop?

Quem viu 2016 pensou que o DirectX 12 iria arrancar. Mas em 2017 o que se viu foi um regresso em força dos jogos DirectX 11!

2016 viu o aparecimento de uma boa quantidade de jogos DirectX 12, mas curiosamente quase todos eles tinham algo em comum! Apesar de uma melhoria substancial no uso do CPU, estes jogos apresentavam todos eles ganhos irrisórios ou até perdas face às versões do DirectX 11, muito melhor conhecida e explorada pelos programadores.

Do que foi visto em 2016, Rise of the Tomb Raider corria melhor com o DX11, isto apesar de ser inegável que em algumas cenas o DX 12 se mostrava superior. HITMAN revelou a mesma tendência, com algumas cenas a serem superiores no DX 12, mas com performances globais superiores no DX 11. Já Deus Ex: Mankind Divided’s mostrou severos problemas de performance no DX12 que não possuia no DX 11. E mesmo exclusivos Microsoft que tiravam total partido do DX 12 como Quantum Break corriam no PC bem pior em DX 12 do que em DX 11.

Mesmo jogos criados por equipas experimentadas em APIs de baixo nível, como foi o caso da DICE que até criou o Mantle, decepcionaram. Battlefield 1 no seu modo DX 12 corria pior que a versão DX 11. Isto apesar de a versão Mantle estar muito bem conseguida!

Tivemos ainda outros jogos como Sid Meier’s Civilization VI e Total War: WARHAMMER que suportaram o DX 12, mas sem qualquer ganho que fosse uma vez que não usaram o mesmo para o multi-tasking (a distribuição de tarefas pelos CPUs).



Aliás, mesmo nos exclusivos Microsoft, criadora do API foi a mesma coisa! Forza Horizon 3 quando foi lançado apenas suportava um núcleo nos CPUs PC, apesar do seu suporte DX 12, requerendo uma série de patches para passar a distribuir melhor as tarefas e a suportar melhor os vários núcleos. Forza 7 voltou a repetir a situação, voltando a suportar apenas um núcleo no PC, e Gears of War: Ultimate Edition tambem não teve sequer uma performance dentro do esperado para um Remaster.

Mas então, o que se passa? Porque é que isto acontece? Bem, o DX 12 e o DX 11 não são, ao contrário do que o nome possa dar a entender, exactamente a mesma coisa. O funcionamento do DX 12 obriga a re-escrever muito do código dos motores para que este possa tirar partido do API. Basicamente o que aconteceu em 2016 foi que o suporte foi realmente acrescentado, mas apenas nas partes que são novidade, como a computação assincrona, porque no resto, ninguém se deu verdadeiramente ao trabalho de re-escrever os seus motores.

Nesse sentido o suporte multi-CPU com a distribuição correcta das tarefas pelos vários núcleos quando funciona, não funciona a 100%.

Grande parte da culpa da falta de uso do API prende-se tambem com as diferenças dos GPUs AMD e Nvidia. Os AMD’s beneficiam e muito da computação assincrona e do DX 12, mas a Nvidia não tira o mesmo partido deles. E nesse sentido a Nvidia optimizou as suas drivers DX 11 ao máximo, sendo que, na parte que toca ao CPU, os ganhos do DX12 nas placas Nvidia traduzem-se em ganhos nulos, ou até perdas.

E nesse sentido o DX 12 não se tornou um sucesso!

Mas 2017 não trouxe grandes novidades no uso de APIs de baixo nível. Apenas 6 jogos os suportaram: Forza Motorsport 7, Star Wars Battlefront 2, Sniper Elite 4, Halo Wars 2, Total War: WARHAMMER 2 e Wolfenstein 2: The New Colossus. Isto face a 2016 foi uma quebra, pois aí tínhamos tido exactamente o dobro dos jogos (12) a suportar APIs de baixo nível  (DX 12 e Vulkan). Foi uma quebra de 50%.



Curiosamente, apesar de muitos criadores terem experimentado o DX 12, ele foi em 2017 ignorado. A CodeMasters por exemplo, tinha anunciado em 2016 que o seu motor, o EGO engine tinha acrescentado suporte DX 12, mas quando F1 2017 saiu a usar esse motor… só suporta DirectX 11! E o mesmo se passou por exemplo com a Ubisoft que tem vindo a fazer experiências em vários jogos e até já usou a computação assincrona em AC 4: Black Flag na PS4, quando lançou Watch Dogs 2 e AC: Origins no PC, estes saíram em DX 11!

Note-se que esta situação em nada tem afectado a PS4 que continua a ter a sua programação distinta e optimizada. Já a Xbox, apesar de certamente estar a ter optimizações separadas, ao partilhar código com o PC poderá não estar a levar as optimizações ideais do DX 12.



Dos jogos lançados em 2017, Sniper Elite 4 foi o que mais vantagens mostrou com o DX 12, mas isso em hardware AMD. Halo Wars 2 e Forza 7 não puderam ser comparados com a versão DX 11 pois só suportam DX 12, mas Total War: WARHAMMER 2 e Battlefront 2 portaram-se melhor com o DX 11 do que com o DX 12. Basicamente o que se estava a ver já em 2016!

Agora convém é não esquecer o que já tínhamos dito antes! Que os jogos DX 12 PC não tiram vantagem adequada dos vários núcleos de CPU, e apesar de eles obterem em determinados sistemas mais de 100 fps, a realidade é que o CPU acaba por ser o gargalo devido a tal. Uma situação que não ocorre nas consolas, e que torna as comparações com estas uma ferramenta de Marketing de grande valor para promoção da consola, mais do que realmente uma comparação real.

O certo é que se há algo que promove o uso do DX 12 são as consolas Microsoft, e agora com a X cá fora, os incentivos serão ainda maiores. A questão é se os ganhos, face ao trabalho adicional do uso do DX 12, justificarão… e essa e a grande questão! Programadores mais experimentados não terão problema com ele, mas os outros, pela maior dificuldade, fugirão dele.

Numa declaração, Tiago Rodrigues, programador 3D na Ubisoft Montreal referiu que a maior parte dos programadores não se mostram muito entusiasmados com o DX 12 uma vez que a performance bruta é interessante e a experiência permite-lhes isso mais facilmente com  o DX 11, mesmo que o sistema fique subaproveitado. Rodrigues ainda acrescentou que um jogo DX 12 requer muito esforço para ser realizado no mesmo tempo de desenvolvimento que um jogo DX 11.

Daí que o DX 12, e os APIs de baixo nível em geral, podem vir a revelar-se um flop… pelo menos neste momento é para aí que caminha!

Fonte: DSOgaming



Posts Relacionados

newest oldest
Notify of
Ewertom
Visitante
Ewertom

Não consigo entender esses programadores,pois se as consolas atuais estão com um formato quase idêntico aos PCs,por que não suplantar algo que seu uso em tese foi comprovado melhorias significativas de desempenhos das GPU(placas AMD).
Bom,não sei se seria bom mesmo esta arquitetuta que éra única nas consolas que desse certo nos PCS.
Gostaria de ver para breve o beneficio real do uso desta computação assíncrona,nas atuais e futuras plataformas,onde os ganhos seriam imensos com estas placas Ryzen da AMD.

Fernando
Visitante
Fernando

No início, na época da revelação, havia entre os dernsores da nova API, o receio de que demoraria muito para a adoção, e é exatamente o que tem ocorrido. Um game para tirar total proveito do DX12 ou do próprio Vulkan, precisa quebrar toda compatibilidade com as versões anteriores das APIs. Como diz o Sebbbi, um game que tem modo DX11 e DX12, é na verdade um game DX11 onde o modo DX12 apenas emula coisas.
O Xbox One também parece que não ajuda o PC, recentemente o próprio Sebbbi, que agora deve estar livre de NDAs, escreveu em um post que na verdade não é o directx a API do console, e sim uma versão de nível muito mais baixo que expõe características do hardware AMD não disponiveis no PC.
Presumo, e agora é uma suposição minha, que o Xbox One não auxilia jogos do PC com DirectX 12, e na verdade é o contrário. O que o Xbox One facilita é para o desenvolvedor que criou o game no Directx 12 porte o jogo de forma direta por compatibilidade do sistema operacional. Até hoje, o único game que tem performance excelente no Xbox One e no PC com directx 12, é o Gears of War 4. Então presumo que ou o jogo tinha duas equipes tirando proveito ao máximo de cada plataforma, ou o que é mais fácil de acreditar devido ao tempo reduzido de desenvolvimento desde o anúncio, este game foi feito no PC e portado para o Xbox.
Levando em consideração que o motor de forza que sempre foi muito otimizado para o console, de forma inexplicável não escala corretamente para os nucleos da CPU no PC, mas o Gears of War 4 é um show de programação nas duas plataformas, faz sentido o que suponho.

Ewertom
Visitante
Ewertom

Esta informação do Sebbi é de grande valia Fernando.
Mas será que ele esta correto na afirmação do API,pois quando Mic apresentou o Xbox lembro de uma palheta em slide algo sobre o 12,penso eu que o direct x12 no Xbox vai mais ao metal do que no kit aplicado nos pcs.
A Mic foi experta ao fazer esta jogada.

Ewertom
Visitante
Ewertom

Há esqueci de dizer a ti Fernando algo fora do contexto,mas como sabemos a aproximação do PC com a Mic estava a falar com um amigo de trabalho que também tem um Xbox que seria muito legal a Mic trazer jogos como Spin Tires e o Euro Truck(2 jogaços imperdíveis no PC)ai seria excelente.Abraço.

bruno
Visitante
bruno

O que dizes do Sebbi confirma aquilo que aqui já se suspeitava quando esta história da partilha do API rebentou e quando toda a gente se questionou sobre o futuro das consolas agora que elas perderam a sua vantagem que lhes garantia performance face ao PC.

Basicamente, o PC nunca teve o API baixo nível das consolas, nunca. Nem nunca vai ter. O que provavelmente a MS aplicou, quando falou no all-in-one e na WUP, foi um conjunto de ferramentas que permitia abstrair o software da MS de modo a correr no hardware PC de raíz, com algumas melhorias. E talvez seja essa ligação entre o API do PC e da consola.

Sobre o auxílio da Xbox ao PC, estás a esquecer-te que há tempos falaste do processador de comandos e de como graças ao DX12 isso foi aplicado ao PC. É uma estrada de dois sentidos, mas não pode ser da forma como dizes porque se o porte ocorresse como o pintas, a versão Xbox estaria ao nível do PUBG. Logo, não é um simples porte e nem é nesse sentido. Se assim fosse os jogos estariam com gráficos mais puxados. Tu tens as bases criadas no PC, mas o grosso do trabalho – modelos, efeitos, mundo, é tudo criado e dimensionado na consola e no que esse hardware consegue fazer.

Depois é que tens o porte da versão PC, com algum trabalho adicional onde possível.

Ewertom
Visitante
Ewertom

Mas será que os Pcs nunca terá um API igual a dos consoles Bruno.
Pois como nós sabemos que quem reclamou de API foi a AMD ao qual suas placas gráficas a muito tempo suporta API de baixo nível,por este motivo foi criado o Mantle,pois sabendo da diferença com placas Nvidia a AMD tinha que se mexer com um software que acompanhasse suas placas sem sofrer com aplicações da Nvidia onde em testes com DX11 o resultado era sempre para baixo.