Direct3D 11

Material iz Vikipedii -- svobodnoi entsiklopedii
Tekushchaia versiia stranitsy poka ne proverialas' opytnymi uchastnikami i mozhet znachitel'no otlichat'sia ot versii, proverennoi 2 noiabria 2014 goda; proverki trebuiut 44 pravki.
Pereiti k navigatsii Pereiti k poisku
Eta stat'ia nuzhdaetsia v pererabotke. Pozhaluista, utochnite problemu v stat'e s pomoshch'iu bolee konkretnogo shablona.
Pozhaluista, uluchshite stat'iu v sootvetstvii s pravilami napisaniia statei. (16 iiunia 2024)
DirectX 11
Tip Graficheskii API
Razrabotchik Microsoft
Napisana na C++, HLSL
Operatsionnaia sistema Windows
Data vypuska 22 oktiabria 2009
Sostoianie vypushchena vmeste s Windows 7
Sait docs.microsoft.com/... (angl.)
docs.microsoft.com/... (rus.)
docs.microsoft.com/... (ukr.)

Direct3D 11 (sokr. D3D11) -- komponent interfeisa programmirovaniia prilozhenii DirectX 11, iavliaetsia preemnikom Direct3D 10/10.1. Direct3D 11 obespechivaet funktsii dlia vzaimodeistviia operatsionnoi sistemy i prilozhenii s draiverami videokarty. Eti funktsii ne priviazany k sleduiushchei operatsionnoi sisteme v lineike Windows (Windows 7) i dostupny v Windows Vista. Chastichno D3D11 rabotaet na videokartakh urovnia Direct3D 9-10.

Pervye predvaritel'nye versii poiavilis' v noiabre 2008 goda. Ofitsial'naia final'naia versiia vyshla 22 oktiabria 2009 goda v sostave Windows 7. 28 oktiabria 2009 goda DirectX 11 stal ofitsial'no dostupen dlia Windows Vista i Windows Server 2008 posredstvom skachivaniia cherez Windows Update[1].

Tesseliatsiia

[pravit' | pravit' kod]

V D3D11 dobavliaetsia 3 dopolnitel'nykh stadii konveiera vizualizatsii, tsel'iu vvedeniia kotorykh iavliaetsia effektivnaia tesseliatsiia poverkhnostei.

Konveier D3D11 vkliuchaet tri novykh stadii mezhdu stadiiami vershinnogo i geometricheskogo sheidera. Dve iz nikh iavliaiutsia programmiruemymi (stadii obolochechnogo (hull shader) i domain sheiderov) i odna -- konfiguriruemaia (stadiia tesseliatsii).

Predstavlennyi konveier operiruet setkami, zadannymi poverkhnostnymi patchami. Osnovnymi primitivami D3D11 iavliaiutsia treugol'nye i kvadratnye patchi. Forma kazhdogo patcha opredeliaetsia chislom kontrol'nykh tochek. V vershinnom sheidere eti tochki transformiruiutsia, skiniatsia i (ili) morfiatsia posledovatel'no.

Obolochechnyi sheider vyzyvaetsia dlia kazhdogo patcha. V kachestve vkhodnykh dannykh ispol'zuiutsia kontrol'nye tochki patcha iz vershinnogo sheidera. Obolochechnyi sheider imeet dva osnovnykh primeneniia. Pervoe (optsional'no) -- eto konvertirovanie kontrol'nykh tochek iz odnogo predstavleniia v drugoe. Naprimer, on pozvoliaet realizovat' metod, predstavlennyi v stat'e Approximating Catmull-Clark Subdivision Surfaces with Bicubic Patches. Posle etogo sheidera kontrol'nye tochki peresylaiutsia napriamuiu dal'she, minuia tesseliator. Drugoe primenenie -- vychislenie podkhodiashchego parametra tesseliatsii, kotoryi zatem peredaiotsia na stadiiu tesseliatsii. Takoi podkhod pozvoliaet delat' adaptivnuiu tesseliatsiiu, kotoraia mozhet byt' ispol'zovana v sluchae vidozavisimykh urovnei detalizatsii (LOD). Parametr tesseliatsii opredeliaetsia dlia kazhdoi grani patcha i var'iruiutsia v diapazone ot 2 do 64. Eto oznachaet, chto kazhdaia gran' treugol'nogo (ili kvadratnogo) patcha mozhet byt' razbita na 2 (ili maksimum 64) grani.

Stadiia tesseliatora predstavlena fiksirovannym naborom funktsii (khorosho konfiguriruema), kotorye ispol'zuiut parametr tesseliatsii dlia podrazbieniia patcha na neskol'ko treugol'nikov ili kvadov. Tesseliator ne imeet dostupa k kontrol'nym tochkam -- vse resheniia o razbienii prinimaiutsia na osnove konfiguratsionnykh i tesseliatsionnykh parametrov, peredavaemykh iz obolochechnogo sheidera. Kazhdaia vershina posle stadii tesseliatsii peredaiotsia v domain sheider, prichiom peredaiutsia tol'ko koordinaty parametrizatsii (parametrization coordinates).

Domain shader operiruet parametrization coordinates patcha dlia kazhdoi vershiny razdel'no, khotia imeetsia vozmozhnost' poluchit' dostup k transformirovannym kontrol'nym tochkam dlia vsego patcha. Domain sheider otpravliaet vsiu informatsiiu o vershine (pozitsiiu, teksturnye koordinaty, i t. p.) v geometricheskii sheider (ili na stadiiu klipirovaniia, esli geometricheskii sheider ne zadan). Po suti dela, on otsenivaet predstavlenie poverkhnosti v kazhdoi tochke. Na dannoi stadii mozhet byt' primenion metod kart smeshcheniia (displacement mapping).

Vychislitel'nye sheidery i neuporiadochennaia pamiat'

[pravit' | pravit' kod]

Direct3D 11 vvodit novyi tip sheidera -- vychislitel'nyi sheider (Compute Shader). Vychislitel'nyi sheider vyzyvaetsia kak reguliarnyi massiv potokov. Potoki deliatsia na gruppy. Kazhdaia gruppa imeet 32 Kb pamiati, razdeliaemoi mezhdu potokami gruppy. Takim obrazom potoki v gruppe mogut obmenivat'sia rezul'tatami, uluchshaia svoiu proizvoditel'nost'. Takzhe potoki mogut proizvodit' chteniia i zapisi s proizvol'nym dostupom k graficheskim resursam: teksturam, massivam vershin, render targetam. Eti dostupy k pamiati neuporiadocheny, khotia sinkhronizatsiia razlichnykh instruktsii osushchestvliaetsia, kogda eto deistvitel'no neobkhodimo.

Piksel'nye (fragmentnye) sheidery mogut takzhe chitat' po proizvol'nomu adresu, chto pozvoliaet zapisyvat' struktury dannykh, kotorye mogut byt' zatem ispol'zovany v vychislitel'nom sheidere, ili naoborot. Stoit otmetit', chto piksel'nye sheidery vsegda imeli vozmozhnost' proizvol'nogo dostupa na chtenie cherez teksturnye lukapy.

Vychislitel'nye sheidery mogut takzhe proizvodit' operatsii takie, kak summed-area tables, bystroe Fur'e-preobrazovanie znachitel'no bystree, chem ranee primeniaemye metody na graficheskom protsessore. Na dannyi moment Microsoft issleduet biblioteki, obespechivaiushchie podobnye raschioty. Microsoft schitaet, chto algoritmy, takie kak A-bufer vizualizatsiia i trassirovka luchei mogut takzhe byt' osushchestvleny effektivno, no na dannyi moment net real'nykh pokazatelei, svidetel'stvuiushchikh ob ikh effektivnosti.

Vyzov vychislitel'nogo sheidera zameniaet vse stadii konveiera vizualizatsii. Tem ne menee, mozhno smeshivat' vychislitel'nye sheidery i traditsionnyi render putiom ispol'zovaniia ikh rezul'tatov. Naprimer, obrabotka izobrazheniia posle vizualizatsii vychislitel'nym sheiderom (mozhno zagruzhat' dopolnitel'nye struktury dannykh).

Mnogopotochnaia vizualizatsiia

[pravit' | pravit' kod]

D3D10 pozvoliaet peredavat' komandy vizualizatsii tol'ko iz odnogo potoka (na dannyi moment sushchestvuet spetsial'nyi mnogopotochnyi rezhim, no iz-za nizkoi proizvoditel'nosti Maikrosoft ne rekomenduet ispol'zovat' ego). Kak izvestno, peredacha komand vizualizatsii cherez Direct3D predpolagaet ispol'zovanie dopolnitel'nykh vychislitel'nykh resursov CPU. Uchityvaia tendentsiiu uvelicheniia chisla iader tsentral'nogo protsessora, vvoditsia podderzhka bolee prodvinutoi mnogopotochnosti, chtoby raspredeliat' etu rabotu mezhdu neskol'kimi potokami, tem samym proizvodia eio bolee effektivno.

Direct3D 11 daiot vozmozhnost' sozdavat' displeinye spiski iz neskol'kikh potokov i vypolniat' ikh iz glavnogo potoka vizualizatsii. Krome togo, ustroistvo, kotoroe sozdaiot resursy, bylo vyneseno iz konteksta, kotoryi peredaiot komandy vizualizatsii. Eto pozvoliaet sozdavat' resursy asinkhronno. Otlozhennye konteksty (Deferred Contexts) ispol'zuiutsia dlia sozdaniia displeinykh spiskov i priamoi kontekst (Immediate Context) dlia peredachi komand vizualizatsii na GPU, vkliuchaia obrabotku displeinykh spiskov, sozdannykh v otlozhennykh kontekstakh.

V otlichie ot drugikh vozmozhnostei, v Direct3D 11 mnogopotochnaia vizualizatsiia realizuetsia programmno cherez draiver. Sootvetstvuiushchie draivery D3D10 (vozmozhno, dazhe D3D9) pozvoliaiut vypolniat' mnogopotochnuiu vizualizatsiiu gorazdo effektivnei, chem ranee. Opredelionnyi uroven' mnogopotochnosti budet dostupen dazhe bez novykh draiverov, odnako poka neiasno, kakie ogranicheniia budut v etom sluchae.

Drugie vozmozhnosti

[pravit' | pravit' kod]

Podderzhka dinamicheskoi linkovki sheiderov (po analogii Cg). Eto pozvoliaet razdelit' napisanie i kompiliatsiiu sheiderov sveta i materialov. Pozdnee sviazyvanie proizvoditsia pri vystavlenii sheidera. Etot podkhod iavliaetsia resheniem problemy kombinatornogo vzryva v sluchae razlichnykh istochnikov sveta i materialov (on i nekotorye drugie problemy obsuzhdaiutsia v sektsii 7.9 knigi Real-Time Rendering, 3rd Edition)

Dobavleny dva novykh formata szhatykh tekstur. BC6 podderzhivaet shirokii dinamicheskii diapazon RGB tekstury, ispol'zuia pri etom 1 bait na kazhdyi teksel' (vzamen 6 bait v sluchae 6-bitnykh RGB veshchestvennykh tekstury). BC7 podderzhivaet uzkii dinamicheskii diapazon RGB ili RGBA tekstur. On takzhe ispol'zuet 1 bait na teksel' (kak DXT5/BC3), no predostavliaet znachitel'no luchshee kachestvo po sravneniiu s formatami tekstur D3D10. Oba novykh formata ispol'zuiut neskol'ko tipov blokov -- utilita dlia szhatiia vybiraet sootvetstvuiushchii tip bloka na osnove ego soderzhaniia.

Formaty blokov szhatiia D3D9 i D3D10 osnovany na idee, chto kazhdyi blok 4 x 4 iz tekselei soderzhit vse svoi znacheniia v vide odnoi linii, i bity kazhdogo tekselia kodiruiut pozitsiiu v etoi linii. Naprimer, v DXT1/BC1 stroka v prostranstve RGB predstavliaet dve konechnye tochki RGB, i kazhdyi teksel' ispol'zuet dva bita, chtoby ukazat' kakoi tsvet ispol'zuetsia iz chetyriokh tochek vdol' linii.

Novye formaty D3D11 podderzhivaiut tipy blokov s odnoi, dvumia i dazhe tremia (v sluchae BC7) tsvetovymi liniiami. Sushchestvuet kompromiss mezhdu chislom linii i chislom tochek vdol' takoi linii, poskol'ku kazhdyi blok zanimaet odinakovyi ob'iom pamiati. V printsipe, blok 4 x 4 s dvumia tsvetovymi liniiami trebuet dopolnitel'no 16 bit na kazhdyi blok dlia zadaniia kakaia liniia kazhdogo tekselia byla sviazana s nim (v sluchae triokh tsvetovykh linii potrebuetsia eshchio bol'she bit). Dlia snizheniia trebovanii po pamiati podderzhivaiutsia tol'ko nebol'shoi nabor vozmozhnykh modelei tsvetovykh linii. Dlia kazhdogo bloka utilita upakovki vybiraet luchshii variant iz etogo podmnozhestva.

Direct3D 11 imeet bolee zhiostkuiu spetsifikatsiiu tekstur. Rezul'taty dekompressii dolzhny byt' tochnymi i subteksel'naia/submip fil'tratsiia dolzhna obespechivat' tochnost' ne menee 8 bit.

Direct3D 11 pozvoliaet ispol'zovat' tekstury, imeiushchie maksimal'nyi razmer v diapazone ot 8K-16K tekselei. Otmetim, chto 16K kh 16K DXT1/BC1 tekstura zanimaet 128MB -- ne tak mnogo igr budet ispol'zovat' takie bol'shie tekstury, no eto mozhet byt' podkhodiashche dlia metodik napodobie megatekstury. V obshchem, teper' v D3D11 resurs mozhet imet' razmer do 2 Gb.

Apparatnoe obespechenie mozhet dopolnitel'no podderzhivat' (optsional'no) veshchestvennye chisla s plavaiushchei tochkoi dvoinoi tochnosti.

Na Gamefest 2008 takzhe byl predstavlen slaid s mnozhestvom drugikh novshestv, detali kotorykh ne byli poiasneny:

  • Adresuemyi potokovyi vyvod (Addressable Stream Out)
  • Nepriamaia otrisovka (Draw Indirect)
  • Uluchshennyi Gather4 (Improved Gather4)
  • Instance programming model dlia geometricheskikh sheiderov (Geometry shader instance programming model)
  • Min-LOD texture clamps
  • Conservative oDepth
  • Pull-model attribute eval
  • Read-only depth or stencil views

Vzaimodeistvie s DirectX 11 iz upravliaemogo koda

[pravit' | pravit' kod]

Biblioteki SlimDX i SharpDX[2] podderzhivaiut Direct3D 11.

Igrovye dvizhki s podderzhkoi DirectX 11

[pravit' | pravit' kod]

Sm. takzhe

[pravit' | pravit' kod]

Primechaniia

[pravit' | pravit' kod]
  1. | Andrew Burnes. DirectX 11 Released For Windows Vista (angl.). Voodoo Extreme 3D (28 oktiabria 2009). Data obrashcheniia: 29 oktiabria 2009. Arkhivirovano 17 marta 2012 goda.
  2. | Home | SharpDX . web.archive.org (20 dekabria 2016). Data obrashcheniia: 16 iiunia 2024. Arkhivirovano iz originala 20 dekabria 2016 goda.
  3. | Battlefield Bad Company 2 s podderzhkoi DirectX 11 . GameTech (16 aprelia 2009). Data obrashcheniia: 1 noiabria 2009. Arkhivirovano 17 marta 2012 goda.

Ssylki

[pravit' | pravit' kod]
Istochnik -- https://ru.wikipedia.org/w/index.php?title=Direct3D_11&oldid=148909820