Novinky v Direct3D 11 Tech Preview z listopadu 2008
Tato verze Direct3D 11 obsahuje nové funkce, nástroje a dokumentaci.
Položka | Popis |
---|---|
Tessellation |
Direct3D 11 poskytuje další fáze potrubí, které podporují tesselaci v reálném čase primitiva vyššího řádu. Díky široce programovatelné funkci umožňuje tato vlastnost mnoho různých metod pro vyhodnocení povrchů s vysokým stupněm, včetně dílčích povrchů pomocí technik aproximace, Beziérových ploch, adaptivní teselace a mapování posunu. Tato funkce bude dostupná pouze na hardwaru Direct3D 11 třídy, takže k vyhodnocení této funkce budete muset použít referenční rasterizátor. Ukázku tesselace v akci najdete v ukázce SubD11, která je k dispozici prostřednictvím Prohlížeče ukázek. |
výpočetní program shaderu |
Compute Shader je další fáze nezávislá na potrubí Direct3D 11, která umožňuje použití GPU pro výpočetní úlohy obecného použití. Kromě všech funkcí shaderu poskytovaných jednotným jádrem shaderu podporuje výpočetní shader také roztříštěné čtení a zápisy do prostředků prostřednictvím neuspořádaných zobrazení přístupu, fondu sdílené paměti ve skupině spouštějících se vláken, primitiv synchronizace, atomických operátorů a mnoha dalších pokročilých funkcí datové paralelizace. V této verzi byla povolena varianta výpočetního shaderu Direct3D 11, která může pracovat s hardwarem Direct3D 10 třídy. Proto je možné vyvíjet výpočetní shadery na skutečném hardwaru, ale vyžaduje se aktualizovaný ovladač. Úplná funkčnost výpočetního shaderu Direct3D 11 je určená pro podporu hardwaru třídy Direct3D 11, takže k vyhodnocení plné funkčnosti budete muset použít referenční rasterizátor, dokud nebude takový hardware k dispozici. Pokud chcete vidět výpočetní shader v akci, vyzkoušejte ukázku HDRToneMappingCS11, která je dostupná prostřednictvím prohlížeče ukázek. |
vícevláknové vykreslování |
Klíčovým rozdílem rozhraní API od Direct3D 10 v Direct3D 11 je přidání odložených kontextů, což umožňuje škálovatelné spouštění příkazů Direct3D distribuovaných přes více jader. Odložený kontext zachytí a sestaví akce, jako jsou změny stavu a odeslání kreslení, které se dají spustit na skutečném zařízení později. Díky využití odložených kontextů na více vláknech může aplikace distribuovat režii procesoru potřebnou v modulu runtime Direct3D11 a ovladač do více jader, což umožňuje lepší využití konfigurace počítače koncového uživatele. Tato funkce je k dispozici pro použití na aktuálním hardwaru Direct3D 10 a také na referenční rasterizátoru. Ukázku použití rozhraní API najdete v ukázce MultithreadedRendering11 k dispozici prostřednictvím ukázkového prohlížeče. |
Dynamické propojení shaderu |
Aby bylo možné vyřešit problém kombinatorického výbuchu, který se projevuje při specializaci shaderů pro zlepšení výkonu, Direct3D 11 zavádí omezenou formu runtime propojení shaderu, která umožňuje téměř optimální specializaci shaderů během spuštění aplikace. Toho dosáhnete tak, že přiřadíte specifické implementace funkcí kódu shaderu, když je shader přidělen k pipeline, což umožní ovladači rychle vkládat nativní instrukce shaderu, místo aby se nutilo opětovné kompilování zprostředkujícího jazyka do nativních instrukcí s novou konfigurací. Vývoj shaderů je představen prostřednictvím zavedení tříd a rozhraní v HLSL. Ukázku najdete v ukázce dynamic shader Linkage 11 k dispozici prostřednictvím ukázkového prohlížeče. |
Windows Advanced Rasterizer (WARP) |
WARP je v této sadě SDK dostupný prostřednictvím Direct3D 11 a nakonec také prostřednictvím Direct3D 10.1. WARP je rychlý rasterizátor s vícejádrovým škálováním, který je plně kompatibilní s Direct3D 10.1. Použití této technologie je stejně jednoduché jako nastavení příznaku D3D_DRIVER_TYPE_WARP při vytváření zařízení. |
Direct3D 10 a Direct3D 11 na hardwaru Direct3D 9 (D3D10 úroveň 9) |
Dostupné v této sadě SDK prostřednictvím Direct3D 11 a nakonec také prostřednictvím Direct3D 10.1 může rozhraní API Direct3D cílit na většinu hardwaru Direct3D 9 a také na hardware Direct3D 10, Direct3D 10.1 a Direct3D 11. Toho dosáhnete tím, že poskytnete mechanismus úrovně funkcí, který seskupí hardware do šesti kategorií v závislosti na funkčnosti: 9_1, 9_2, 9_3, 10_0, 10_1 a 11_0. Karta splňuje pouze úroveň funkce, pokud je plně kompatibilní s danou úrovní, a každá úroveň je striktní nadsadou těch, které jsou pod ní. Funkcionalita je minimálně emulována, aby se zajistilo, že nenastanou neočekávané výrazné poklesy výkonu. Funkce, jako jsou geometrické shadery, tedy nejsou k dispozici pro cíle na úrovni Direct3D 9. |
binární soubory modulu runtime |
Všechny binární soubory modulu runtime poskytované v technologii Direct3D 11, které budou k dispozici ve Windows 7 a Windows Vista SP1, se instalují se sadou SDK a jsou označené jako komponenty Beta (tj. D3D11_beta.DLL). Komponenty označené jako beta jsou časově omezené. Chcete-li vytvořit projekty pro vyhodnocení těchto nových komponent, musíte vytvořit odkaz na ekvivalentní knihovny importu s popiskem beta (tj. D3D11_beta.lib). Pokud máte předběžnou vývojářskou verzi Windows 7, jsou hlavičky, knihovny a soubory PDB poskytované v sadě Windows SDK se sestavením vhodné pro vývoj pomocí komponent Direct3D 11 dostupných v systému Windows 7. Omezte použití hlaviček, knihoven a souborů PDB v této sadě SDK pouze na beta komponenty, které jsou zde k dispozici. |
D3DX11 |
D3DX11 v současné době podporuje načítání textur, kompilaci shaderu, načítání dat a funkce pracovních vláken pro prostředky Direct3D 11. V budoucnu bude tato komponenta poskytovat více technologií dostupných v D3DX10. Funkce kompilace shaderu je také poskytována přímo prostřednictvím komponenty Direct3D Compiler, která je popsána dále. |
kompilátor HLSL a Direct3D |
Kompilátor HLSL má několik nových funkcí pro podporu nových technologií dostupných v Direct3D 11. To zahrnuje objektově orientované programování prostřednictvím rozhraní a tříd, přímou syntaxi indexování pro načítání zdrojů a klíčové slovo "přesné" pro zajištění, že všechny operace prováděné s konkrétní proměnnou dodržují přísná pravidla pro operace s plovoucí desetinnou čárkou. Téměř všechny nové jazykové funkce mají platné funkce pro stávající cíle shaderu. Kromě podpory všech shaderů Direct3D 9, Direct3D 10, Direct3D 10.1 a Direct3D 11 podporuje kompilátor HLSL také speciální cíle potřebné k zápisu shaderů pro cíle Direct3D 10 úrovně 9. Kompilátor D3D je nyní přímo přístupný mimo D3DX10 a D3DX11 prostřednictvím D3DCompiler.H a D3DCompiler.lib. U těchto nových souborů není aplikace nutná k propojení s D3DX, aby bylo možné provést kompilaci modulu runtime, a aplikace není nutná k zahrnutí kompilátoru, pokud je potřeba pouze funkce D3DX. |
D3D11 – referenční rasterizátor |
Referenční rasterizer poskytuje špičkovou implementaci rasterizace pro vyhodnocení funkcí Direct3D 11, které ještě nejsou dostupné v hardwaru. Referenční rasterizátor je také poskytován jako způsob, jak ověřit přesnost konkrétní implementace hardwaru na standard rasterizace. Referenční rasterizátor je určen pro správnost, nikoli výkon. Pokud chcete vytvořit referenční zařízení, jednoduše předejte příznak D3D_DRIVER_TYPE_REFERENCE při vytváření zařízení. |
vrstvy sady SDK D3D11 |
Vrstvy sady SDK Direct3D11 poskytují mechanismus pro sledování provozu modulu runtime Direct3D 11 během vývoje. V současné době se používá k poskytování užitečných informací o ladění, které zahrnují nejen chyby při nesprávném použití, ale také upozornění, která doporučují použití modulu runtime osvědčeným postupem a často poskytují podrobné užitečné informace pro ladění. Důrazně doporučujeme zapnout ladicí výstup z vrstev sady SDK D3D11 po celou dobu vývoje a zajistit, aby aplikace negenerovala žádný ladicí výstup během svého běhu, než bude uvolněna nebo použita s PIX pro Windows pro profilování. Povolení vrstvy ladění je stejně jednoduché jako předání příznaku D3D11_CREATE_DEVICE_DEBUG při vytváření zařízení. Vývojáři jsou důrazně povzbuzováni k používání vrstev ve verzích pro ladění. Nedoporučuje se používat vrstvy ve staveních profilů nebo finálních verzí. |
Nové ukázky |
Tato verze obsahuje čtyři nové ukázky.
|