Sdílet prostřednictvím


Funkce Direct3D 10.1

Direct3D 10.1 rozšiřuje sadu funkcí Direct3D 10.0 o následující nové funkce:

  • Režimy blendu – nezávislé režimy blendu na cíl vykreslení pomocí nového rozhraní pro stav blendu (viz ID3D10BlendState1 Interface). Operace kombinování duálního zdroje jsou omezeny na vykreslení cílového slotu 0; Nesmíte zapisovat do jiných výstupů ani nemáte žádné cíle vykreslení vázané na sloty jiné než slot 0.

  • Chování při odpočítání – plochy s nulovou plochou jsou automaticky culledované; to má vliv pouze na vykreslování drátového modelu.

  • Pravidla s plovoucí desetinou čárkou – používá stejná pravidla IEEE-754 pro operace s plovoucí desetinou čárkou s výjimkou 32bitových operací s plovoucí desetinou čárkou, aby vznikl výsledek v rozsahu 0,5 jednotky posledního místa (0,5 ULP) nekonečného přesného výsledku. To platí pro sčítání, odčítání a násobení. (přesnost na 0,5 ULP pro násobení, 1,0 ULP pro reciproční).

  • Formáty – přesnost směsi float16 se zvýšila na 0,5 ULP. Pro formáty UNORM16/SNORM16/SNORM8 se také vyžaduje mixování.

  • Multisample Anti-Aliasing – Vícevzorkování bylo vylepšeno tak, aby se zobecnilo průhlednost na základě pokrytí a efektivnější fungování vícevzorkování s vykreslováním s více průchody. Aby toho bylo dosaženo, jsou všechny sémantiky s víceamplemi definovány, jako by shader pixelů vždy běžel jednou na vzorek (vzorkovací frekvence), výpočet samostatné barvy na vzorek. Pokud shader pixelů nepoužívá žádné atributy pro jednotlivé vzorky, vypočítá stejnou hodnotu pro každý zahrnutý vzorek v pixelu. V takovém případě je ekvivalentní hardwaru, který spouští shader jednou na pixel (frekvence pixelů), a replikuje výsledek na všechny zahrnuté vzorky. Samozřejmě, že spuštění s pixelovou frekvencí vždy vytváří stejné výsledky jako spuštění stejného shaderu ve vzorkovací frekvenci, když jsou atributy vzorkovány při frekvenci pixelů. Statistika kanálu PSInvocations zvýší vzorkovací frekvenci, pokud shader neběží s pixelovou frekvencí.

  • Šířka pásma fáze kanálu – Zvýšení množství dat, která je možné předat mezi fázemi shaderu:

    Zdroj Hranice
    Registrace mezi fázemi shaderu 32 (32bitová x 4 komponenta)
    Vstupní registry shaderu vrcholů 32
    Vstupní sloty assembleru input assembleru 32

     

  • Pravidla rasterizace – Pravidla rasterizace se změnila pro řádky, kromě toho byla přidána nová funkce.

    • MultisampleEnable má vliv pouze na rastrování čar (body a trojúhelníky nejsou ovlivněné) a slouží k výběru algoritmu kreslení čáry. To znamená, že některé rasterizace s více razítky z Direct3D 10 se už nepodporují.
    • Nové spouštění shaderu pixelů s vzorkovací frekvencí s primitivní rasterizací
  • Prostředky – Služba CopyResource je povolená ve dvou nových scénářích:

    • Barevné i hloubkové/vzorníkové plochy MSAA se teď dají použít s CopyResource jako zdrojem nebo cílem.
    • Převod formátu při kopírování mezi určitými 32/64/128bitovými předstrukturovanými, zadanými prostředky a komprimovanými reprezentacemi stejných bitových šířek.
  • Vzorkování textury – sample_c a sample_c_lz instrukce jsou definovány tak, aby fungovaly s texture2DArrays i TextureCubeArrays, pomocí členu Umístění (alfa komponenta) zadejte index pole.

  • Zobrazení – TextureCube a nový TextureCubeArray (viz D3D10_TEXCUBE_ARRAY_SRV1) nejsou skutečné prostředky, ale jsou nová zobrazení na prostředku Texture2DArray. Vytvořte zobrazení prostředků z prostředku Texture2DArray s novým příznakem použití (D3D10_RESOURCE_MISC_TEXTURECUBE), použijte nové ID3D10ShaderResourceView1 Rozhraní rozhraní k vytvoření vazby zobrazení textury datové krychle s kanálem.

Nové funkce vyžadují typ zařízení 10.1 (viz ID3D10Device1 Rozhraní), které lze vytvořit voláním D3D10CreateDevice1, nebo můžete vytvořit řetěz zařízení a prohození současně voláním D3D10CreateDeviceAndSwapChain1.

V systému Windows Vista Service Pack 1 existují knihovny DLL Direct3D 10.0 a Direct3D 10.1 vedle sebe v systému. Pokud chcete získat přístup k funkcím verze 10.1, udělejte jednu z těchto věcí:

Přístup k funkcím 10.1 v systému Vista Gold a Vista Service Pack 1

Vývojáři, kteří chtějí podporovat Vista Gold a SP1 budou muset zohlednit nedostatek nových rozšíření 10.1 API na Vista Gold. DxUT i D3DX10 poskytují pohodlné funkce pro vytvoření vhodného zařízení na základě knihoven DLL dostupných v systému a dostupného hardwaru (10.0 nebo 10.1). Zařízení 10.1 dědí ze zařízení 10.0 a dá se načíst pomocí QueryInterface(). Doporučuje se, aby každá aplikace sledovala typ zařízení a udržovala ukazatel na zařízení 10.1 (pokud je k dispozici), aby se zabránilo častým voláním QueryInterface v případě potřeby funkce 10.1. Podobně pokud jsou zobrazení prostředků 10.1 a stavové objekty přidružené vlastní třídou aplikace, doporučuje se, aby aplikace sledovala, jestli je objekt typu 10.0 nebo 10.1, aby se zabránilo redundantním voláním QueryInterface(). D3DX10 obsahuje sadu pomocných funkcí pro zjednodušení tohoto procesu (viz D3DX10CreateDevice a D3DX10CreateDeviceAndSwapChain).

Přístup k funkcím 10.1 ve verzi Vista Service Pack 1 výhradně

Někteří vývojáři se můžou rozhodnout, že budou vyžadovat Aktualizaci Vista Service Pack 1, která bude distribuována koncovým uživatelům a zahrnuje řadu vylepšení mimo Direct3D 10.1. Tito vývojáři můžou používat výhradně hlavičky a knihovny Direct3D 10.1, které využívají závislost na knihovnách DLL Direct3D 10.1, které podporují hardware verze 10.0 i 10.1 (některá volání ale můžou selhat na zařízeních 10.0, kde není nová funkce podporovaná).

Další poznámky:

  • Rozhraní API vystavená v D3DX10.dll přijmou jak zařízení 10.0, tak 10.1 a budou využívat 10.1 funkcí, pokud jsou k dispozici.
  • D3D10SDKLayers.dll podporuje zařízení 10.1 a může vypíše odpovídající ladicí spew pro funkce 10.1.
  • D3D10Ref.dll implementuje softwarové zařízení 10.0 a 10.1.
  • D3DX10 a FXC podporují aktualizovaný model shaderu 10.1 s následujícími cíli: vs_4_1, gs_4_1, ps_4_1 a fx_4_1, které lze svázat se zařízením 10.1. Zařízení 10.1 podporuje shader model 4.0 a 4.1 shaderů.
  • Architektura efektů Direct3D 10.0 podporuje zařízení 10.0 a 10.1, ale jakákoli technika, která zahrnuje shader model 4.1 shadery nebo nové funkce 10.1, musí používat zařízení 10.1.

Průvodce programováním pro Direct3D 10