Tutorials

▷ Directx 12 vs vulkan: de strijd om de beste grafische engine?

Inhoudsopgave:

Anonim

Momenteel zijn er voor de pc-wereld twee eersteklas grafische API's die de markt met autoriteit beheren. Om deze reden brengen we u de DirectX 12 Vs Vulkan- vergelijking.

Beiden hebben een lange geschiedenis achter de rug en een hele horde verdedigers en tegenstanders. Vandaag zullen we de verschillen zien, de sleutels van elk en we zullen proberen er wat licht op te bieden.

Inhoudsindex

Grafische API op laag niveau en "Driver overhead"

API staat voor "Application Programming Interface" en is een set subroutines die door een ontwikkelaar kan worden gebruikt en die ook communicatieprotocollen en hulpprogramma's bevat die softwareontwikkeling vergemakkelijken. We kunnen ze voor bijna alles vinden en het is gebruikelijk dat elke serviceprovider dit soort hulp heeft om hun systemen op een eenvoudige en toegankelijke manier te implementeren.

Low-level API's profiteren beter van de bronnen van de GPU, ontlasten de CPU, maar kunnen ook beter profiteren van de multi-core processors die we vandaag hebben.

Zowel DirectX 12 als Vulkan 1.1 zijn API's die zijn gericht op de ontwikkeling van games en applicaties die de hulp van moderne grafische engines vereisen. Tegelijkertijd zijn het API's die worden ondersteund door de stuurprogramma's van de belangrijkste ontwerpers van grafische chipsets en daardoor een snelle en economische manier om toegang te krijgen tot hun functies zonder hun ontwerp op een zeer laag niveau te hoeven kennen.

Een low-level API, zoals deze, maakt het mogelijk om met de hardware te werken met een zeer lichte interpretatielaag, waardoor de ontwikkelaar beter van de hardware kan profiteren, betere resultaten kan behalen op het gebied van prestaties en efficiëntie, en ook andere subsystemen kan bevrijden van extra belasting. In de wereld van de pc of mobiele telefoons is het minder afhankelijk van de algemene CPU van het systeem.

De twee API's waar we het vandaag over zullen hebben, kunnen worden beschouwd als API's op laag niveau en beide ontwikkelingen hebben geleid tot een steeds kleinere afhankelijkheid van de CPU van het systeem, terwijl betere resultaten werden behaald op prestatieniveau en toegang tot meer grafische functies. geavanceerd. Het zijn twee live API's die jaarlijks updates ontvangen om ze in lijn te houden met wat het grote publiek en de ontwikkelaars verwachten.

Low-level API's hebben een direct effect op een ander rekenconcept dat we kennen als 'driver overhead', kortom de secundaire bronnen die we nodig hebben om bepaalde soorten bewerkingen op een computer uit te voeren. In het geval van afbeeldingen verwijst het naar de extra bronnen die de grafische kaart nodig heeft om zijn werk te doen en in dit geval zijn het fundamenteel centrale CPU-procestijden. De low-level API's die we hier zullen beschrijven, verminderen deze afhankelijkheid en in feite neigt de afhankelijkheid naar 0.

Microsoft DirectX

DirectX ontstaat als een noodzaak om verschillende Windows multimedia-subsystemen te standaardiseren en is de vervanging voor WinG voor Windows 3.1. Het wordt in Windows 95 gebruikt als een add-on-pakket en de tweede versie, DirectX 2.0, wordt een fundamenteel onderdeel van Windows 95 OSR2.

Binnen DirectX vinden we meerdere onafhankelijke API's zoals Direct3D, wat echt de betreffende is, DirectDraw, DirectMusic, DirectPlay en DirectSound. DirectX was een manier om algemene verbeteringen in al deze sub-API's te benoemen. Het is een API voor Windows, maar het wordt ook gebruikt voor de ontwikkeling van games op zijn Xbox-consoles, dus we kunnen het beschouwen als een Multiplatform API maar niet gratis, zoals het geval is bij Vulkan.

DirectX 12, de nieuwste versie, is bij ons sinds 2014 en heeft niet stilgestaan ​​en een paar maanden geleden ontving het belangrijke verbeteringen zoals de Direct RayTracing (DXR) subroutine die was opgenomen in de 1809 oktober update-versie van Windows 10.

Low-level API's zoals DirectX 12 hebben een fundamenteel voordeel, namelijk de vermindering van de overhead van de driver. Programmeurs zijn nu bevoegd om te ontwerpen hoe de GPU zich in hun programma's zal gedragen en kunnen GPU-bronnen beter beheren, vooral door te profiteren van procesparallellisatie. Dit omvat betere ondersteuning voor meerdere GPU's in één systeem en zelfs als ze niet van dezelfde fabrikant zijn.

Ze kunnen verschillende soorten bewerkingen uitvoeren, meestal "integer" of "floating point", gebruik makend van de mogelijkheden van de compatibele graphics en ook complexe bewerkingen opsplitsen in eenvoudigere door ze parallel te verwerken op die grotere bussen. Een goed voorbeeld is hoe AMD of Nvidia nu 16-bits bewerkingen op hun 32-bits bussen kunnen verwerken, waardoor de efficiëntie van hun grafische afbeeldingen aanzienlijk wordt verbeterd.

Deze API heeft de efficiëntie van het gebruik van een console GPU dichterbij gebracht, waarbij de ontwikkelaars de beschikbare hardware perfect kennen, tot het heterogene ecosysteem dat een pc vormt met oneindig veel verschillende hardwaremogelijkheden.

Momenteel is DirectX 12 verrassend genoeg beschikbaar voor Windows 7 en Windows 10 en hoewel het niet direct compatibel is met Xbox One, is de waarheid dat praktisch 90% van de functionaliteit ervan wordt gebruikt voor pc, de verschillen zijn minimaal en dat heeft het mogelijk gemaakt ontwikkelaars snelle aanpassingen van hun pc-games voor Xbox One en vice versa.

Vulkan van Khronos

Vulkan is de evolutie naar OpenGL's low-level API en wordt ondersteund door de Khronos Corporation. In de pc-wereld hebben ze een ondergeschikte rol ten opzichte van DirectX 12, maar de verschillende aanpassingen aan verschillende platforms, zoals Android, hebben het tot een maatstaf gemaakt op het gebied van graphics voor mobiliteit. Het is ook compatibel met Linux als het geweldige alternatief voor games in gratis systemen.

De grote verdienste is de grote parallelle verwerkingscapaciteit, die uiterst efficiënt is in moderne CPU's en GPU's, waardoor de eerste laag wordt gebruikt en de hardware van de laatste goed wordt gebruikt. Het is speciaal ontworpen om te profiteren van multi-core processors die een uitstekende belastingverdeling behalen in dit type processors, sterker nog, het is zoveel efficiënter voor de meer kernen die we kunnen leveren.

De geschiedenis van Vulkan gaat terug tot een jaar na DirectX 12 en Khronos, een bedrijf zonder winstoogmerk, onderhoudt het net zo vaak of vaker dan Microsoft doet met zijn eigen API. Het is gebaseerd op de API Mantle die AMD heeft ontwikkeld voor zijn GCN- architectuur en dat was weer een low-level API voor een verminderde "overhead driver". AMD heeft haar ontwikkelingen aan Khronos geschonken en dit zijn de fundamenten van een van de beste grafische API's op de markt.

Naast superieure parallellisatie maakt dit ontwerp het ook mogelijk om de precompilatie van schaduwbewerkingen op de GPU te elimineren, meer effecten en op het scherm met een hogere laadsnelheid te hebben, naast een meer gedetailleerde aanpassing van hoe de hardware de bewerkingen verwerkt of hoe we toegang krijgen tot de framebuffer beschikbaar. Het is zeker de API voor pc die het dichtst bij de hardware zelf staat, zelfs beter dan DirectX 12.

Vulkan introduceert ook low-level API-verbeteringen op Android en andere platforms.

De nieuwste versie, Vulkan 1.1, die eind 2018 werd geïntroduceerd, voegt belangrijke verbeteringen toe, zoals HLSL-ondersteuning, het alternatief van DirectX 12 voor het beheer van shader-operaties zonder voorcompilatie, betere compatibiliteit met DirectX 12 (voor de vele subroutines) afgezien van de graphics), expliciete ondersteuning voor Multi-GPU-systemen ongeacht de fabrikant en, natuurlijk, ondersteuning voor RayTracing.

Sterke en zwakke punten van DirectX 12 versus Vulkan

Naast de reeds beschreven gemeenschappelijke functies, zoals beter gebruik van hardware, meer controle erover en beter gebruik van parallellisatie van zowel GPU als CPU, voegen deze twee API's ook de mogelijkheid toe om algemene rekenbewerkingen uit te voeren met grafische chips met die compatibel zijn. Hierdoor kunnen compatibele grafische engines, al meerdere generaties, complexe wiskundige bewerkingen uitvoeren die kunnen worden benut door allerlei programma's, inclusief programma's zonder grafische componenten.

In games kunnen ze ook worden gebruikt voor steeds belangrijkere secundaire bewerkingen, zoals de berekening van realistische fysica, kunstmatige intelligentie, positionele geluidseffecten, enz.

Beide API's worden geweldig ondersteund door de grote grafische voorstellingen, zowel AMD als Nvidia streven ernaar om deze API's de juiste stuurprogramma's aan te bieden om beide hun gebruikers de nieuwste verbeteringen te bieden en de prestaties en stabiliteit van games die er een gebruiken te versterken. of een andere API.

De "driver overhead" van beide is erg laag, zoals je zult zien in onze tests zijn er nauwelijks verschillen tussen beide, wat ook een teken is van de belangrijke optimalisatie van de drivers van beide fabrikanten.

We hebben de framerate beperkt tot 120 FPS voor een demo van Driver Overhead. In Dota 2 wordt het CPU-verbruik aanzienlijk verminderd met dezelfde FPS.

Het enige meer voor de hand liggende verschil is dat Vulkan iets minder afhankelijk is van de CPU, met een lager gemiddeld verbruik en dat het ook veel meer openstaat voor verschillende platforms, waaronder Windows en Linux, en de homogenisatie met OpenGL ES, wat de mobiele versie is, het is onderweg om de platforms waarop het beweegt verder te verenigen.

DirectX 12 is in het voordeel van de grote acceptatie door de ontwikkelaars, die in deze API het perfecte ecosysteem lijken te vinden om hun kosten te verlagen, omdat het zelfs een geweldige integratie heeft in frameworks die zo wijdverbreid zijn als het.NET Framework waar het duizend wonderen integreert met weinig prestatieverlies.

Prestatieverschillen in games met dubbele API

Omdat de beweging wordt aangetoond door te lopen, hebben we enkele prestatietests uitgevoerd in verschillende games en benchmarks die de mogelijkheid hebben om deze twee API's te gebruiken voor uitvoering.

3DMark Driver Overhead Test. Resulteert in miljoenen verzoeken, meer is beter.

As van de singulariteit. Resultaten in FPS, meer is beter.

Vreemde Brigade. Resultaten in FPS, meer is beter.

We vatten de beste hardwaregidsen samen die u zouden moeten interesseren:

  • Beste processors op de markt Beste moederborden op de markt Beste RAM-geheugen op de markt Beste grafische kaarten op de markt Beste SSD's op de markt Betere chassis- of pc-behuizingen Betere voedingen Betere heatsinks en vloeistofkoelers

Zoals je kunt zien, zijn de resultaten gelijk en zien we verschillen tussen programma's voor en tegen elkaar. Dit laat ons achter met de vraag welke beter is en het antwoord is duidelijk, het hangt af van het programma en hoe de ontwikkelaar weet of wil profiteren van de voordelen ervan. Wat overblijft is te denken dat de ontwikkelaars in elk spel precies de API zullen gebruiken die het beste profiteert van de voordelen van onze graphics, hoewel het duidelijk is dat beide opties meer dan competent lijken. Wat vond je van ons artikel over Directx 12 vs Vulkan ? We willen jouw mening weten!

Tutorials

Bewerkers keuze

Back to top button