Hirdetés

Kiderült Windows 10 Fall Creators Update pár titkolt újítása

A Microsoft a marketinget a shader modell 6-ra építette fel, de van ennél több változás is.

A Windows 10 Fall Creators Update már elrajtolt, és a Microsoft jó szokásához híven nem traktálta a piacot az összes változás ecsetelésével. Ettől függetlenül érdemes átfutni a titkolt, grafikára vonatkozó újítások egy részét, mivel találhatók benne meglepetések.

Első körben megjegyezhető, hogy frissült a WDDM, méghozzá a 2.3-as verzióra. Ez tulajdonképpen a korábbi 2.2-es verzió továbbfejlesztése a Mixed Reality platform szempontjából, illetve az új WDDM biztosítja a teljes támogatást az új shader modellhez. Utóbbi tekinthető a Fall Creators Update legnagyobb újításának.

A shader modell 6.0-t még a megjelenés előtt eléggé körbejártuk, így ezzel egy korábbi hírünk foglalkozik. A lényeg, hogy a fő extra a végül Wave Math névre keresztelt újítás lett, de ezzel nem zárul le a történet, ugyanis a Microsoft elég stabilnak ítélte a shader modell 6.1-et is, így ezt is bevetették a Fall Creators Update-ben, a DXIL 1.1-es verziója mellett.

A shader modell 6.1 legnagyobb újítása a barycentric függvények bevezetése. A funkciójukat tekintve a függvények tulajdonképpen arra szolgálnak, hogy a fejlesztők extra adatokat szerezzenek az interpolációs fázisból. Utóbbi jelen formában fix a hardvereken belül, vagyis egy program az interpolálásba nem tud beleszólni. A szabványon belül meg van határozva, hogy a hardvernek mit kell csinálnia, és ezt valamilyen formában elérik a gyártók. Itt vannak felfogásbeli különbségek a megvalósítások között, többek között az Intel és az NVIDIA a speciális ALU-kba épít áramköröket, amelyekkel elvégzik az interpolálást, kvázi fixfunkciós formában, míg az AMD úgynevezett manuális interpolációt használ már jó ideje, vagyis az általános ALU-kat használják erre a célra, mindenféle fixfunkciós rásegítés nélkül.

A barycentric tulajdonképpen lehetővé teszi a fejlesztőknek, hogy valamilyen formában kiolvassák a barycentric koordinátákat, amelyeket aztán bármire fel lehet használni. Az Xbox One és PlayStation 4 családba tartozó konzolokon ez a képesség már a kezdetek óta kihasználható, és a függvénycsoportot jellemzően speciális analitikai élsimításokra szokás bevetni, így specifikusan lehet reagálni bizonyos mintavételezési problémákra. Valószínűleg PC-n is hasonlóra fogják majd használni, lévén a kutatás és fejlesztés a legtöbb stúdiónál egységesen zajlik, tehát a konzolos irányokat viszik PC-re is.

A Microsoft első körben lineáris interpoláció mellett teszi kiolvashatóvá a barycentric koordinátákat, tehát a perspektivikus interpolálás még nincs benne a shader modell 6.1-ben, ugyanakkor ez nem nagy hátrány, mert a legtöbb fejlesztő eleve a lineáris interpolációt igényli.

A barycentric függvények támogatása teljesen opcionális. Bár elméletben minden mai hardveren megoldható lenne, igazából csak az AMD GCN architektúrára épülő Radeonjai vannak konkrétan erre tervezve, így a Microsoft valószínűleg nem akarta kellemetlen helyzetbe hozni az Intelt és az NVIDIA-t. Utóbbi két cég kiértékelheti, hogy írnak-e támogatást az újításra, vagy inkább várnak addig, amíg ebből a szempontból a mostaninál jobb hardvereket tudnak letenni az asztalra.

A shader modell 6.1 másik extrája a SV_ViewID, ami tulajdonképpen a VR-piac szempontjából fontos. Ezzel a megoldással a sztereó 3D-s kép például úgy is elkészíthető, hogy az egyik szemnek szánt nézőpontból a teljes geometria egy rajzolási paranccsal átküldhető egy másik nézőpontba, így nem kell újra kiszámolni azt. Persze ez csak egy konkrét probléma megoldása, valójában általánosságban arról van szó, hogy a geometria lényegében átküldhetővé válik több nézőpontra is.

Nem shader modellhez kapcsolódó újítás az ID3D12GraphicsCommandList és ID3D12GraphicsCommandList1 kiterjesztése az ID3D12GraphicsCommandList2 interfésszel. Ez tudja mindazt, amit az előző interfészek, de extraként még felkínálja azt a lehetőséget, amivel azonnali értékeket lehet írni direkten egy meghatározott pufferbe.

A barycentric függvények és a ID3D12GraphicsCommandList2 interfész támogatásának meglétét a D3D12_FEATURE_DATA_D3D12_OPTIONS3 elnevezésű struktúrával lehet ellenőrizni. Ahogy fentebb említettük előbbire vonatkozóan a gyártók döntése nehezen behatárolható. Az AMD nyilván támogatni fogja, mert a hardvereiket így tervezték, míg az Intel és az NVIDIA esetében ez kérdéses. Utóbbi újítás viszont általánosan támogathatónak tűnik mindhárom cég számára.

A D3D12_FEATURE_DATA_D3D12_OPTIONS3 még ellenőrzi a D3D12_VIEW_INSTANCING_TIER szintjét is. Utóbbiba van belefoglalva az SV_ViewID támogatása, méghozzá a TIER_3-as szintre. A TIER_1 és a TIER_2 lényegében a rajzolási parancsok duplikálásával dolgozik, de utóbbi szint figyelembe veszi a GPU-k architektúráját, így valamivel hatékonyabban képes megoldani a feladatot. Arról sajnos nincs adat, hogy az egyes hardverek melyik szintet támogatják. A legmodernebbeknek azonban az SV_ViewID kezelése nem jelenthet problémát.

Újítás még a Id3d12device3 interfész, ami leginkább a diagnosztikát segíti majd, és ehhez kapcsolódik a D3D12_FEATURE_DATA_EXISTING_HEAPS struktúra is.

A 1709-es verziójú Windows 10-et még a meghajtók nem támogatják teljes mértékben, legalábbis az újítások tekintetében, így egy-két hónapba beletelhet, amíg a fenti extrák kihasználhatóvá válnak a publikus eszközillesztőkön keresztül.

Azóta történt

Előzmények

Hirdetés