Direct3D 11-funkciók
A programozási útmutató információkat tartalmaz arról, hogyan használható a Direct3D 11 programozható folyamat valós idejű 3D-s grafikák játékokhoz, valamint tudományos és asztali alkalmazásokhoz való létrehozásához.
- Compute Shader
- Dinamikus árnyékoló csatolása
- többszálú
- Tessellation
- funkciók teljes listája
- korábbi kiadásokban hozzáadott funkciók
- Kapcsolódó témakörök
Compute Shader
A számítási árnyékoló egy programozható árnyékoló, amelyet általános célú, párhuzamos adatfeldolgozásra terveztek. Más szóval a számítási árnyékolók lehetővé teszik a GPU általános célú párhuzamos processzorként való használatát. A számítási árnyékoló hasonló a többi programozható folyamatárnyékolóhoz (például csúcsponthoz, képponthoz, geometriához) úgy, ahogyan a bemenetekhez és kimenetekhez hozzáfér. A számítási árnyékoló technológiát DirectCompute technológiának is nevezik. A számítási árnyékoló integrálva van a Direct3D-be, és egy Direct3D-eszközön keresztül érhető el. Közvetlenül megoszthatja a memóriaerőforrásokat a grafikus árnyékolókkal a Direct3D-eszköz használatával. Azonban nem kapcsolódik közvetlenül más árnyékoló szakaszokhoz.
A számítási árnyékolót olyan tömeges piaci alkalmazásokhoz tervezték, amelyek interaktív sebességgel végeznek számításokat, amikor az API (és a hozzá tartozó szoftververem) és a CPU közötti váltás költsége túl nagy többletterhelést okozna.
A számítási árnyékoló saját állapotkészlettel rendelkezik. A számítási árnyékolók nem feltétlenül rendelkeznek kényszerített 1-1 leképezéssel a bemeneti rekordokhoz (például egy csúcspont-árnyékolóhoz) vagy kimeneti rekordokhoz (ahogy a képpontárnyékoló teszi). A grafikus árnyékoló egyes funkciói támogatottak, mások azonban el lettek távolítva, hogy új számítási árnyékoló-specifikus funkciókat lehessen hozzáadni.
A számítási árnyékoló-specifikus funkciók támogatásához számos új erőforrástípus érhető el, például olvasási/írási pufferek, textúrák és strukturált pufferek.
További információért tekintse meg Compute Shader áttekintési.
Dinamikus árnyékoló csatolása
A renderelő rendszereknek jelentős összetettséggel kell foglalkozniuk az árnyékolók kezelésekor, miközben lehetőséget kell biztosítaniuk a shader-kód optimalizálására. Ez még nagyobb kihívást jelent, mivel az árnyékolóknak számos különböző anyagot kell támogatniuk a renderelt jelenetben különböző hardverkonfigurációkban. Ennek a kihívásnak a megoldása érdekében a shader-fejlesztők gyakran két általános megközelítés egyikét alkalmazzák. Teljesen kiemelt nagy, általános célú árnyékolókat hoztak létre, amelyeket számos jelenetelem használhat, amelyek némi rugalmassági teljesítményt biztosítanak, vagy egyedi árnyékolókat hoztak létre minden szükséges geometriai streamhez, anyagtípushoz vagy fénytípus-kombinációhoz.
Ezek a nagy, általános célú árnyékolók úgy kezelik ezt a kihívást, hogy ugyanazt az árnyékolót különböző előprocesszor-definíciókkal újrafordítják, és az utóbbi módszer találgatásos fejlesztői teljesítményt használ ugyanahhoz az eredményhez. Az árnyékoló-permutáció robbanása gyakran problémát jelent a fejlesztők számára, akiknek most több ezer különböző árnyékoló-permutációt kell kezelniük a játékon és az eszközfolyamaton belül.
A Direct3D 11 és az 5. árnyékolómodell objektumorientált nyelvi szerkezeteket vezet be, és futtatókörnyezeti támogatást nyújt a shader-összekapcsoláshoz, hogy segítse a fejlesztőket az árnyékolók programozásában.
További információt a Dinamikus csatolási című témakörben talál.
Többszálú
Sok grafikus alkalmazás processzorhoz kötött, mivel költséges tevékenységek, például jelenetdiagram bejárása, objektum rendezés és fizikai szimulációk. Mivel a többmagos rendszerek egyre inkább elérhetővé válnak, a Direct3D 11 továbbfejlesztette többszálas támogatását, hogy több processzorszál és a D3D11 grafikus API-k hatékony interakciót tegyenek lehetővé.
A Direct3D 11 a következő funkciókat teszi lehetővé a többszálúság támogatásához:
- Az egyidejű objektumok most már külön szálakban jönnek létre – Az objektumokat szabad szálon létrehozó belépésipont-függvények lehetővé teszik, hogy sok szál egyszerre hozzon létre objektumokat. Az alkalmazások például most már lefordíthatnak egy árnyékolót, vagy betölthetnek egy textúrát az egyik szálra, miközben renderelnek egy másikat.
- A parancslisták több szálon is létrehozhatók – A parancslista a grafikus parancsok rögzített sorozata. A Direct3D 11-ben parancslistákat hozhat létre több CPU-szálon, amelyek lehetővé teszik a jelenetadatbázis párhuzamos bejárását vagy a fizikai feldolgozást több szálon. Ez felszabadítja a fő renderelési szálat a parancspufferek hardverre való küldéséhez.
További információt a Többszálú című témakörben talál.
Mozaik
A Tessellation egy különböző részletességű modell megjelenítésére használható. Ez a megközelítés geometriailag pontosabb modellt hoz létre, amely a jelenethez szükséges részletességi szinttől függ. Használjon tessellationt olyan jelenetben, ahol a részletességi szint alacsonyabb geometriai modellt tesz lehetővé, ami csökkenti a renderelés során felhasznált memória-sávszélesség iránti igényt.
A Direct3D-ben az tessellation a GPU-n van implementálva, hogy simább ívelt felületet számítsunk ki egy durva (kevésbé részletes) bemeneti javításból. Minden (quad vagy háromszög) tapaszlap kisebb háromszög alakú arcokra van felosztva, amelyek jobban megközelítik a kívánt felületet.
További információ a tessellation grafikus folyamatban való implementálásáról: Tessellation overview.
Funkciók teljes listája
Ez a Direct3D 11 funkcióinak teljes listája.
A Direct3D 11-et alacsonyabb szintű hardveres futtathatja, ha szolgáltatásszintet az eszköz létrehozásakor.
Az alábbi árnyékolótípusok használatával tessellációt hajthat végre (lásd Tessellation áttekintési)
- Hull Shader
- Domain Shader
A Direct3D 11 támogatja a többszálas készítést (lásd Többszálas)
- Többszálú erőforrás/árnyékoló/objektum létrehozása
- Többszálas megjelenítési lista létrehozása
A Direct3D 11 az alábbi funkciókkal bővíti az árnyékolókat (lásd Shader Model 5)
Kezelhető erőforrások – textúrák, állandó pufferek és mintavevők
További erőforrástípusok, például olvasási/írási pufferek és textúrák (lásd Új erőforrástípusok).
Alrutinok
Számítási árnyékoló (lásd Compute Shader – Áttekintés) – Egy árnyékoló, amely felgyorsítja a számítások elvégzését azáltal, hogy elosztja a problémateret több szoftverszál vagy szálcsoport között, valamint az adatok shader-regisztrációk közötti megosztásával jelentősen csökkenti az árnyékolóba való bevitelhez szükséges adatokat. A számítási árnyékoló által jelentősen fejleszthető algoritmusok közé tartoznak az utófeldolgozás, az animáció, a fizika és a mesterséges intelligencia.
Geometriai árnyékoló (lásd geometriai árnyékoló funkcióit)
- Instancing – Lehetővé teszi, hogy a geometriai árnyékoló legfeljebb 1024 csúcsot, vagy a példányok és csúcspontok tetszőleges kombinációját adja ki 1024-ig (legfeljebb 32 példány, egyenként 32 csúcs).
Képpontárnyékoló
Lefedettség PS-bemenetként
Bemenetek programozható interpolációja – A képpontárnyékoló képes kiértékelni a képponton belüli attribútumokat, bárhol a multisample rácson
Az attribútumok centroid mintavételezésének a következő szabályoknak kell eleget tennie:
Ha a primitív minta összes mintáját lefedi, az attribútum kiértékelése a képpont közepén történik, függetlenül attól, hogy a minta minta helye a képpont közepén található-e.
Ellenkező esetben az attribútum kiértékelése az első érintett mintán történik, vagyis a legalacsonyabb indexű mintán az összes mintaindex között. Ebben az esetben a mintalefedettség akkor lesz meghatározva, ha a logikai AND műveletet alkalmazza a lefedettségre és a mintamaszk raszterizátor állapotára.
Ha nem fed le mintákat (például segéd képpontokon, amelyeket egy primitív 2x2 képpontos bélyegek kitöltéséhez hajtanak végre), az attribútum kiértékelése az alábbi módok egyikével történik:
- Ha a mintamaszk raszterizátor állapota a képpontban lévő minták részhalmaza, akkor a mintamaszk raszterizátor állapota által lefedett első minta a kiértékelési pont.
- Ellenkező esetben a teljes mintamaszk-állapotban a képpont középpontja a kiértékelési pont.
A Direct3D 11 kibővíti a textúrákat (lásd Textúrák áttekintése) az alábbi funkciókkal
Gyűjtés4
- Többkomponensű textúrák támogatása – adja meg a betöltendő csatornát
- Programozható eltolások támogatása
Streaming
- Anyagminta-rögzítők a WDDM előterhelésének korlátozásához
16K textúrakorlátok
8 bites subtexel és sub-mip pontosság megkövetelése a textúraszűréshez
Új anyagminta-tömörítési formátumok (1 új LDR formátum és 1 új HDR formátum)
A Direct3D 11 támogatja a konzervatív oDepth protokollt – Ez az algoritmus lehetővé teszi, hogy a képpontárnyékoló összehasonlítsa a képpontárnyékoló képpontonkénti mélységértékét a raszterizátorban lévővel. Az eredmény lehetővé teszi a korai mélységi vágási műveleteket, miközben fenntartja az oDepth kimenetét egy képpontárnyékolóból.
A Direct3D 11 támogatja a nagy memóriát
- 4 GB-> erőforrások engedélyezése
- Az erőforrások indexeinek megtartása 32bit, de nagyobb erőforrás
A Direct3D 11 támogatja a streamkimenet fejlesztését
- Címezhető stream kimenete
- Stream kimenetszámának növelése 4-re
- Az összes stream kimeneti pufferének módosítása többelemesre
A Direct3D 11 támogatja a Shader Model 5-öt (lásd Shader Model 5)
- Dupla denormokkal
- Bitek számának beállítása utasítás
- Az első bitkészlet utasításának megkeresése
- Átvitel/túlcsordulás kezelése
- Bitfordulóutasítási utasítások FFT-khez
- Feltételes felcserélés – belső
- Resinfo a puffereken
- Csökkentett pontosságú reciprok
- Shader konverziós utasítások – fp16-ról fp32-re és fordítva
- Strukturált puffer, amely egy új típusú, strukturált elemeket tartalmazó puffer.
A Direct3D 11 támogatja az írásvédett mélységi vagy rajzsablon-nézeteket
- Letiltja az írásokat a csak olvasható részre, lehetővé teszi a textúra bemenetként való használatát és a mélységi vágást
A Direct3D 11 támogatja a közvetett rajzolást – a Direct3D 10 implementálja a DrawAuto-t, amely a tartalmat (a GPU által generált) és rendereli (a GPU-n). A Direct3D 11 általánosítja a DrawAuto-t, hogy egy Compute Shader meghívhassa a DrawInstanced és a DrawIndexedInstanced használatával.
A Direct3D 11 támogatja a különböző funkciókat
- Lebegőpontos nézetportok
- Erőforrásonkénti mipmap-befogás
- Mélységi torzítás – Ez az algoritmus raszterizátorállapot használatával frissíti a mélységi torzítás viselkedését. Az eredmény kiküszöböli azokat a forgatókönyveket, ahol a számított torzítás lehet NaN.
- Erőforráskorlátok – Az erőforrásindexeknek továbbra is <= 32 bitnek kell lenniük, de az erőforrások nagyobbak lehetnek 4 GB-nál.
- Raszterizátor pontossága
- MSAA-követelmények
- Számlálók csökkentett
- 1 bites formátum és szövegszűrő eltávolítva
Korábbi kiadásokban hozzáadott funkciók
A korábbi kiadásokban hozzáadott funkciók listáját a következő témakörökben találja:
Kapcsolódó témakörök