▷ Directx 12 vs Vulkan: la lluita pel millor motor gràfic?

Taula de continguts:
- API gràfic de baix nivell i "Driver overhead"
- DirectX de Microsoft
- Vulkan de Khronos
- Punts forts i febles de DirectX 12 vs Vulkan
- Diferències de rendiment en jocs amb doble API
Actualment per al món de l'PC ha dos API gràfiques de primer ordre que manegen amb autoritat el mercat. Per aquest motiu us portem la comparativa DirectX 12 Vs Vulkan.
Ambdues tenen una extensa història darrere i tota una horda de defensors i detractors. Avui veurem les diferències, les claus de cadascuna i intentarem oferir una mica de llum sobre elles.
Índex de continguts
API gràfic de baix nivell i "Driver overhead"
API són les sigles de "aplicació programming interface" i és un conjunt de subrutines que pot usar un desenvolupador que inclou també protocols de comunicació i utilitats que facilita el desenvolupament de programari. Les podem trobar per a gairebé tot i és habitual que cada proveïdor de serveis disposi d'aquest tipus d'ajuts per implantar els seus sistemes de forma senzilla i accessible.
Les API de baix nivell aprofiten millor els recursos de la GPU, alliberant de càrrega de la CPU, però també són capaços d'aprofitar millor els processadors de múltiples nuclis que tenim en l'actualitat.
Tant DirectX 12 com a Vulkan 1.1 són API orientades a el desenvolupament de jocs i aplicacions que requereixin de l'assistència de motors gràfics moderns. Al seu torn són API suportades pels controladors dels mes importants dissenyadors de chipsets gràfics i per tant una forma ràpida i econòmica d'accedir a les seves prestacions sense necessitat de conèixer el disseny de les mateixes a molt baix nivell.
Un API de baix nivell, com aquestes, permet treballar amb el maquinari amb una capa molt lleugera d'interpretació el que permet a l'desenvolupador aprofitar millor el maquinari aconseguint millors resultats a nivell de rendiment i eficiència permetent a més alliberar altres subsistemes de càrrega addicional. En el món de el PC, o dels telèfons mòbils suposa menys dependència de la CPU generalista de el sistema.
Les dues API de què parlarem avui es poden considerar APIs de baix nivell i tots dos desenvolupaments s'ha traduït en una cada vegada menor dependència de la CPU de sistema alhora que s'aconsegueixen millors resultats a nivell de rendiment i accés a funcions gràfiques més avançades. Són dos API vius que estan rebent actualitzacions de forma anual per a mantenir-les en línia amb la qual el públic general i els desenvolupadors esperen.
Els API de baix nivell tenen un efecte directe en un altre concepte computacional que coneixem com a "driver overhead" que és, comptat i debatut, els recursos secundaris que necessitem per executar cert tipus d'operacions en un ordinador. En el cas dels gràfics es refereix als recursos extra que requereix la targeta gràfica per funcionar i en aquest cas és fonamentalment temps de procés de CPU central. Els API de baix nivell que aquí descriurem redueixen aquesta dependència i de fet la dependència tendeix a 0.
DirectX de Microsoft
DirectX sorgeix com una necessitat per estandarditzar diferents subsistemes multimèdia de Windows i és el substitut de Wing per a Windows 3.1. S'adopta en Windows 95 com un paquet afegit i la seva segona versió, DirectX 2.0, passa a ser un component fonamental de Windows 95 OSR2.
Dins de DirectX trobem múltiples API independents com Direct3D, que és realment el que ens ocupa, DirectDraw, DirectMusic, DirectPlay i DirectSound. DirectX va ser una forma de nomenar els avenços comuns en tots aquests sub-API. És un API per a Windows però que també es fa servir per al desenvolupament de jocs en les seves consoles Xbox pel que podem considerar-ho un API multiplataforma però no lliure, com és el cas de Vulkan.
DirectX 12, la seva última versió, porta amb nosaltres des de 2014 i no s'ha estat quiet i fa pocs mesos va rebre millores importants com la subrutina Direct raytracing (DXR) que es va incloure en la versió 1809 october update de Windows 10.
Els API de baix nivell com DirectX 12 tenen un avantatge fonamental que és la reducció del "driver overhead". Ara els programadors estan habilitats a dissenyar com la GPU es comportarà en els seus programes i poden gestionar millor els recursos de la GPU sobretot aprofitant la paral·lelització de procés. Això inclou un millor suport de múltiples GPU en un sistema i fins i tot encara que aquestes no siguin de la mateixa fabricant.
Poden executar diferents tipus d'operacions, normalment "integer" o "coma flotant" aprofitant les capacitats de les gràfiques compatibles i també la divisió d'operacions complexes en més simples processant en paral·lel a aquests busos mes grans. Un bon exemple és com AMD o Nvidia, ara, poden processar operacions de 16-Bit en els seus busos de 32-Bit millorant l'eficiència de les seves gràfiques de manera substancial.
Aquest API ha apropat l'eficiència d'ús d'una GPU de consola, on els programadors coneixen perfectament el maquinari, fins al heterogeni ecosistema que forma un PC amb infinitat de possibilitats diferents de maquinari.
Actualment DirectX 12 està disponible, per sorpresa, per a Windows 7 i Windows 10 i encara que no és directament compatible amb Xbox One, la veritat és que s'usa pràcticament a el 90% de la seva funcionalitat per a PC, les diferències són mínimes i això ha permès a els desenvolupadors ràpides adaptacions dels seus jocs de PC per a Xbox One i viceversa.
Vulkan de Khronos
Vulkan és l'evolució a API de baix nivell d'OpenGL i aquesta suportat per la corporació Khronos. En el món de l'PC tenen un paper secundari sobre DirectX 12 però les seves diferents adaptacions a diferents plataformes, com Android, l'han convertit en un referent en gràfics per a mobilitat. És compatible també amb Linux sent la gran alternativa de joc en sistemes lliures.
La seva gran virtut és la seva gran capacitat de procés en paral·lel sent tremendament eficient en CPU i GPUs modernes aconseguint baixos usos del primer i un gran aprofitament de l'hardware del segon. Aquesta especialment pensat per aprofitar processadors de múltiples nuclis aconseguint una excel·lent distribució de càrrega en aquest tipus de processadors, de fet, és alhora el més eficient per quants més nuclis puguem aportar.
La història de Vulkan data d'un any després de DirectX 12 i Khronos, que és una companyia sense ànim de lucre, el manté amb tanta o més freqüència que Microsoft fa amb el seu propi API. Es fonamenta en l'API Mantle que AMD desenvolupament per la seva arquitectura GCN i que era un altre API de baix nivell per a un reduït "driver overhead". AMD dono seus desenvolupaments a Khronos i aquests són els fonaments d'un dels millors APIs gràfics de l'mercat.
A més d'una paral·lelització superior aquest disseny permet també eliminar la precompilación d'operacions de ombrejat a la GPU, podent tenir més efectes i en pantalla amb major velocitat de càrrega, a més d'un ajust més detallat de com el maquinari processa les operacions o com accedim a l' frame buffer disponible. És segurament l'API per a PC que més s'acosta a l'propi maquinari, fins i tot millor que DirectX 12.
Vulkan introdueix també les millores d'un API de baix nivell en Android i altres plataformes.
La seva última versió, Vulkan 1.1, presentada a finals de 2018 afegeix millores importants com el suport de HLSL, que és l'alternativa de DirectX 12 a la gestió d'operacions de shaders sense necessitat de precompilación, millor compatibilitat amb DirectX 12 (a les seves moltes subrutines a part dels gràfics), suport explícit per a sistemes Multi-GPU amb independència de fabricant i, com no, suport per raytracing.
Punts forts i febles de DirectX 12 vs Vulkan
A més de les prestacions comunes ja descrites, com el millor aprofitament de l'maquinari, més control de la mateixa i millor aprofitament de la paral·lelització tant de GPU com de CPU aquests dos API també afegeixen la possibilitat de realitzar operacions de còmput general amb els xips gràfics amb els que són compatibles. Això habilita motors gràfics compatibles, diverses generacions ja, si pot realitzar operacions matemàtiques complexes que poden ser aprofitades per programes de tot tipus, inclosos aquells sense components gràfics.
En jocs també es poden aprofitar per a operacions secundàries cada vegada més importants com el càlcul de física realista, intel·ligència artificial, efectes de so posicional, etc.
Tots dos API tenen un gran suport pels grans dels gràfics, tant AMD com Nvidia s'afanyen per oferir a aquests API els controladors adequats per aconseguir tant oferir als seus usuaris les ultimes millores com afermar el rendiment i l'estabilitat dels jocs que usen un o un altre API.
El "driver overhead" de tots dos és molt reduït, de fet, com veureu en les nostres proves gairebé no hi ha diferències entre un i altre, el que també és un signe de l'optimització important dels controladors de tots dos fabricants.
Hem limitat els el framerate a 120fps per a una demostració de Driver Overhead. En Dota 2 l'consum de CPU es redueix de forma substancial amb els mateixos FPS.
L'única diferència més evident és que Vulkan té una mica menys de dependència de la CPU, amb menor consum mitjà i que també és molt mes obert a diferents plataformes, inclosa Windows i Linux i la seva homogeneïtzació amb OpenGL ÉS, que és la seva versió de mòbils, està en camí unificant encara més les plataformes sobre les que es mou.
DirectX 12 té al seu favor la gran acceptació per part dels desenvolupadors, que semblen trobar en aquest API l'ecosistema perfecte per reduir els seus costos ja que fins i tot té una gran integració en frameworks tan estesos com.NET Framework on s'integra d'allò més bé gairebé sense pèrdua de rendiment.
Diferències de rendiment en jocs amb doble API
Com el moviment es demostra caminant hem realitzat algunes proves de rendiment en diferents jocs i benchmarks que tenen capacitat per fer servir aquests dos API per a la seva execució.
3DMark Driver Overhead Test. Resultats en milions de peticions, més és millor.
Ashes of the singulity. Resultats en FPS, més és millor.
Strange Brigade. Resultats en FPS, més és millor.
Us resumim les millors guies de maquinari que haurien interessar:
- Millors processadors de mercat Millors plaques base de l'mercat Millors memòria RAM de l'mercat Millors targetes gràfiques de l'mercat Millors SSD de mercat Millors xassís o caixes de PC Millors fonts d'alimentació Millors dissipadors i refrigeracions líquides
Com veieu, els resultats són semblants i veiem diferències entre programes a favor i en contra d'un i d'un altre. Això ens deixa amb la incògnita sobre quina és millor i la resposta és clara, depèn de el programa i de com el seu desenvolupador sàpiga o vulgui aprofitar les seves prestacions. El que ens queda és pensar que en cada joc els desenvolupadors usessin precisament l'API que millor aprofiti les prestacions de la nostra gràfica tot i que aquesta clar que les dues opcions semblen mes que competents. Què us ha semblat el nostre article sobre Directx 12 vs Vulkan? Volem saber la vostra opinió!
El motor gràfic CryEngine v de Crytek inclou suport per Vulkan i directx raytracing

Crytek ha mostrat les capacitats del seu nou motor gràfic CryEngine V amb una demo del seu videojoc Hunt: Shodown que llueix espectacular.
RTX 2060 super vs radeon rx 5700: lluita per la millor gamma mitjana

Si vols saber qui guanyaria entre RTX 2060 SUPER vs Radeon RX 5700, característiques, disseny, rendiment, jocs, temperatura i consum.
Amd epyc vs Xeon: la lluita pel millor processador per a servidor

Us portem l'enfrontament de l'any: Epyc Vs Xeon. Hem posat a prova els processadors per a servidors d'AMD i Intel Ho voleu veure?