Hirdetés

A DirectX 12 Ultimate összeházasítja a konzolt a PC-vel

A Microsoft új API-ja egy funkciószint alá vonja a már tesztelhető újdonságokat.

A Microsoft a mai napon bemutatta a DirectX 12 Ultimate-et, amely egy új funkciószintet vezet be a D3D_FEATURE_LEVEL_12_2 által. Ami itt lényeges, hogy az Ultimate jelző konkrétan ezt a szintet jelenti, vagyis amelyik alkalmazást erre tervezik, annak szüksége van a legújabb, akár még érkező hardverekre. Ugyanakkor ez nem jelenti azt, hogy az alkalmazás nem fog elindulni a régebbi GPU-kon, mivel a valóságban nem teljesen új API-ról van szó.

A DirectX 12 Ultimate négy funkcióra épít: DirectX Raytracing 1.1, VRS (Variable Rate Shading), mesh shading és sampler feedback. A VRS-t gyorsan letudnánk, mert itt arról van szó, amiről már az NVIDIA Turing architektúrájáról szóló cikkünkben írtunk, és már a mostani DirectX 12 verzióban is elérhető, a 3DMarkban pedig van rá két teszt. A mesh shadingre szintén nem térnénk ki különösebben. Az alapproblémáról még az AMD Vega architektúrájára fókuszáló cikkünkben számoltunk be, részletezve a primitive shading nevű megoldást, de szintén megemlítettük az előbb linkelt turingos anyagban. Nagyon röviden a lényeg annyi, hogy a jelenlegi geometriai futószalag nagyon idős. Még a 2000-es évek elején lett kidolgozva, és azóta csak új lépcsők kerültek bele. Viszont a mai modern GPU-k már nem úgy működnek, ahogy majdnem 20 éve, sokkal inkább ideális számukra egy compute shader kód. A mesh shading felfogható egy speciális compute shadernek, ami kiváltja a vertex shadert, a hull shadert, a domain shadert és a geometry shadert, vagyis minden egyes lépcsőt a raszterizálás előtt, illetve eltünteti az input assemblert. Ilyen formában a geometria feldolgozása radikálisan módosul, és sokkal inkább igazodik a mai hardverekhez.

A DirectX 12 és a DirectX 12 Ultimate geometriai futószalagjaA DirectX 12 és a DirectX 12 Ultimate geometriai futószalagja A DirectX 12 és a DirectX 12 Ultimate geometriai futószalagja [+]

A mesh shading kapcsán ugyanakkor fontos kiemelni, hogy maga a futószalag teljesen más lesz. Ez azt jelenti, hogy ha erre épít egy játék, akkor minden olyan hardver kiesik, amely nem támogatja a mesh shadinget. Mindez azért gond, mert rengeteg felhasználó rendelkezik régebbi technológiával, talán évekig nem is váltanak majd, vagyis a célozható vásárlóbázis eléggé picike. Sajnos arról a Microsoft nem beszélt, hogy kitalálnak-e valamiféle köztes lépcsőt, ahogy az AMD tette az RDNA-s Radeonok esetében, amelyeknél a már meglévő vertex és geometry shaderekből fordíthatnak surface és primitive shadert. Ezzel ugye a kecske is jóllakna, és a káposzta is megmaradna, hiszen trükkösen kihasználhatók lennének az új hardverek, miközben a meglévő kódokkal támogathatók az öregedő GPU-k is. Ha egy ilyen módszerrel nem állnak elő, akkor a mesh shading gyakorlati bevezetése eléggé messze lehet, mivel meg kell várni, hogy mindenkinek ezzel kompatibilis hardvere legyen. Ilyen formában a gyártóknak érdemes lenne lemásolni az AMD megoldását, így a váltópontig driverből fordítanának a modern GPU-kra hatékonyabb kódot. Persze nem biztos, hogy ez minden hardveren megoldható, de tekintve, hogy az elterjesztés még évekre lehet, az új dizájnokat érdemes lenne erre is koncentrálni.

Korábban még nem beszéltünk egy érdekes funkcióról, ami a sampler feedback, és ez röviden textúra-mintavételi információk rögzítésére ad lehetőséget. A technika különösen hasznos lehet például azoknál a leképezőknél, amelyek az árnyalás objektumtérben valósul meg. Ezt szokták amúgy textúratérben történő árnyalásnak is hívni, de nem a név a fontos, hanem az, hogy ilyen formában az árnyalási és a raszterizálási fázis függetleníthető egymástól. Arra, hogy ez miért lényeges, a Nitrous videojáték-motort használó Ashes of the Singularity ad már a gyakorlatban is kipróbálható választ, ugyanis ez a játék pontosan ilyen leképezőt használ, annak minden előnyével együtt. Amiért a sampler feedback nem annyira felkapott újítás az az, hogy az említett cím is bőven megvan nélküle, holott a kialakított leképező lenne az egyik fő célterület. De a jövőben azért számíthat, hogy az egyes streaming és textúratérben történő árnyalási eljárások tipikus problémái könnyebben hidalhatók át a sampler feedbackkel, elvégre a tartalom minősége folyamatosan javul.

Végül a fő képesség a DirectX Raytracing (DXR), amelynek jön az 1.1-es verziója. Ez számos újítást vezet be, némelyik nem döntő jelentőségű, csak jó ha van, ugyanakkor a két kiemelten fontos van ezek között. Az egyik a DispatchRays függvények meghívása ExecuteIndirect metóduson keresztül, ami az egyik legnagyobb igény volt a fejlesztők részéről. Ennek az az előnye, hogy az ExecuteIndirect segítségével a processzor terhelése nélkül lehet munkát indítani a GPU-n, és ez nyilvánvalóan csökkenti a többletterhelést. A másik fontos újítás már érdekesebb. Az inline raytracing lehetővé teszi a compute fázisok kombinálhatóságát. Effektíve megírható egy olyan futószalag, amely akár egyetlen shaderből is megvalósíthatja magát a sugárkövetést. Erre az 1.0-s verzió esetében nem volt lehetőség, így mindenképpen több shaderből kellett megoldani a feldolgozást, ami rossz hatékonyságú feldolgozást eredményezett a mai GPU-kon. Mivel a futtatandó shaderek feldolgozása egymás után történt, ez sok üresjáratot jelentett, miközben a sugárkövetés során a shaderek alapvetően ugyanazt csinálják. Ha viszont egyetlen vagy nagyon kevés shaderrel meg lehetne oldani a feldolgozást, akkor az rögtön csökkentené az üresjáratokat a hardveren belül, illetve drámaian redukálja az adatforgalmat a memória felé. Mindezek mellett jelentős előrelépés, hogy a kód teljesítménye relatíve nagy pontossággal megjósolhatóvá válik. Utóbbi a DXR 1.0 esetében sok fejtörést okozott, és emiatt sok sugárkövetést implementáló alkalmazásfrissítés csúszott hónapokat.


[+]

A Microsoft szerint a DXR 1.1 inline raytracing megoldása a nem komplex kódoknál, illetve kevés shader mellett előnyösebb teljesítményt kínál, és a mai programok tipikusan így vannak tervezve. De megmarad a korábbi dinamikus verzió is, mivel ha a fejlesztők sok komplex shadert írnak, akkor már az ad jobb eredményt. Persze itt bele kell számolni, hogy a sok komplex shader jelentősen növeli a terhelést a hardver felé, tehát azért finoman kell ezzel bánni.

A DirectX 12 Ultimate egyik érdekes tulajdonsága, hogy nem csak a PC-hez jön, hanem az Xbox Series X konzolhoz is. Ráadásul nem módosított formában, hanem egy az egyben ugyanaz a rendszer mindkét platformon. Ez lehetővé teszi a fejlesztőknek, hogy a konzolra tervezzék a játékukat, amit minden korábbinál egyszerűbben portolhatnak PC-re, mivel a leképezőhöz, illetve a shader kódok döntő részéhez hozzá sem kell majd nyúlni, elvégre ha fut az Xbox Series X-en, akkor futni fog a PC-ken is. Ezzel gyakorlatilag a Microsoft teljesen összeházasította a konzolt a PC-vel, ami abból a szempontból nem meglepő, hogy a cég a játékpiacra egy ideje egységesként tekint.

Mindez drámaian leegyszerűsíti a munkát a fejlesztők előtt, és nyilván a Microsoft célja az, hogy az iparág maradjon a DirectX 12, ezen belül is a Ultimate verzió mellett, azaz ne nagyon kacsintgasson a Vulkan API felé. Márpedig erre a legjobb módszer tényleg az, ha lehetővé teszik a grafikus feldolgozásra vonatkozó kódok módosítás nélküli hordozhatóságát az új Xbox és a PC között.

A DirectX 12 Ultimate a Windows 10 következő frissítésében érkezik, aminek a megjelenését még nem jelentette be a Microsoft. A gyártók később állnak majd elő végleges meghajtóimplementációkkal, ami logikus, hiszen még meg sem jelent a friss API. Annyi azonban kiderült, hogy az NVIDIA támogatni fogja a DirectX 12 Ultimate-et a GeForce RTX sorozatú VGA-kon (a félreértések elkerülése végett a GTX sorozat nem felel meg a követelményeknek), míg az AMD az RDNA2 architektúrát használó dizájnokhoz kínál majd hardveresen gyorsított implementációt. Az Intel még nem jelentett be semmit, de valószínűleg a következő generációs fejlesztésük megfelelhet a célnak. Az egyetlen igazán nehezen implementálható rendszer a DirectX Raytracing, értelemszerűen a hardveres gyorsításra vonatkozó lehetőség miatt, a többi képesség nem igazán jelenthet problémát egy modern hardvernek.

Azóta történt

Előzmények

Hirdetés