Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Prostředek textury je datová struktura pro ukládání texelů, což je nejmenší jednotka textury, kterou lze číst nebo do které lze zapisovat. Pokud shader přečte texturu, může být filtrována pomocí texturových vzorkovačů.
Texturový prostředek je strukturovaná kolekce dat navržená pro ukládání texelů. texel představuje nejmenší jednotku textury, kterou lze číst nebo zapisovat prostřednictvím potrubí. Na rozdíl od bufferů lze textury filtrovat pomocí vzorkovníků textur, když jsou čteny shaderovými jednotkami. Typ textury ovlivňuje způsob filtrování textury. Každý texel obsahuje 1 až 4 komponenty uspořádané do jednoho z formátů DXGI definovaných DXGI_FORMAT výčtem.
Textury se vytvářejí jako strukturovaný prostředek se známou velikostí. Každá textura však může být při vytvoření prostředku typu nebo beze typu, pokud je typ plně specifikován pomocí zobrazení, když je textura připojena k potrubí.
typy textur
Direct3D podporuje několik formátů s pohyblivou řádovou čárkou. Všechny výpočty s plovoucí řádovou čárkou se řídí definovanou podmnožinou pravidel IEEE 754 pro jednoduchou přesnost (32 bitů).
Existuje několik typů textur: 1D, 2D, 3D, z nichž každý lze vytvořit pomocí mipmap nebo bez nich. Direct3D také podporuje texturová pole a vícevzorkové textury.
1D textury
1D textura v nejjednodušší formě obsahuje texturová data, která lze řešit s jedinou souřadnicí textury; lze ji vizualizovat jako pole texelů, jak je znázorněno na následujícím obrázku.
Následující obrázek znázorňuje 1D texturu:
Každý texel obsahuje řadu barevných složek v závislosti na formátu uložených dat. Přidáním větší složitosti můžete vytvořit 1D texturu s úrovněmi mipmap, jak je znázorněno na následujícím obrázku.
Úroveň mipmap je textura, která je menší o mocninu dvou než úroveň nad ní. Nejvyšší úroveň obsahuje nejvíce podrobností, každá další úroveň je menší. Pro 1D mipmapu obsahuje nejmenší úroveň jeden texel. Kromě toho se úrovně MIP vždy snižují na 1:1.
Při generování mipmap pro texturu liché velikosti je další nižší úroveň vždy sudá (s výjimkou případů, kdy nejnižší úroveň je 1). Například diagram znázorňuje texturu 5x1, jejíž další nejnižší úroveň je textura 2x1, jejíž další (a poslední) úroveň mip je textura velikosti 1x1. Úrovně jsou identifikovány indexem označovaným jako LOD (úroveň podrobností), který se používá pro přístup k menší texturě při vykreslování geometrie, která není tak blízko fotoaparátu.
1D texturové pole
Direct3D také podporuje pole textur. Pole 1D textur vypadá koncepčně jako na následujícím obrázku.
Toto pole textury obsahuje tři textury. Každá ze tří textur má šířku textury 5 (což je počet prvků v první vrstvě). Každá textura obsahuje také 3 vrstvy mipmap.
Všechna pole textury v Direct3D jsou homogenní pole textur; to znamená, že každá textura v poli textury musí mít stejný formát a velikost dat (včetně šířky textury a počtu úrovní mipmap). Můžete vytvořit pole textur různých velikostí, pokud se všechny textury v každém poli shodují ve velikosti.
2D textury a 2D pole textur
Prostředek Texture2D obsahuje 2D mřížku texelů. Každý texel je adresovatelný vektorem u, v. Vzhledem k tomu, že se jedná o texturový prostředek, může obsahovat úrovně mipmap a podzdroje. Plně naplněný 2D texturový zdroj vypadá jako na následující ilustraci.
Tento zdroj textury obsahuje jednu texturu o velikosti 3x5 se třemi úrovněmi mipmap.
Zdroj pole 2D textur je homogenním polem 2D textur; to znamená, že každá textura má stejný formát a rozměry dat (včetně mipmapových úrovní). Má podobné rozložení jako pole textur 1D s tím rozdílem, že textury teď obsahují 2D data, jak je znázorněno na následujícím obrázku.
Toto pole textury obsahuje tři textury; každá textura je 3x5 se dvěma úrovněmi mipmap.
použití 2D pole textur jako texturové krychle
Texturová krychle je 2D pole textur, které obsahuje 6 textur, jedna pro každou stranu krychle. Plně naplněná texturová krychle vypadá jako na následujícím obrázku.
Pole textur 2D, které obsahuje 6 textur, může být načteno z shaderů prostřednictvím vnitřních funkcí krychlové mapy, jakmile jsou připojena k pipeline pomocí zobrazení krychlové textury. Texturové krychle jsou adresovány ze shaderu pomocí 3D vektoru, který směřuje ze středu texturové krychle.
3D textury
3D texturový prostředek (označovaný také jako objemová textura) obsahuje 3D objem texelů. Protože se jedná o prostředek textury, může obsahovat úrovně mipmap. Plně naplněná 3D textura vypadá jako na následujícím obrázku.
Když je plátek mipmap 3D textury přiřazen jako výstup pro vykreslování (se zobrazením cílového vykreslování), 3D textura se chová stejně jako pole 2D textur s n plátky. Konkrétní řez vykreslení je vybrán z fáze geometrického shaderu.
Neexistuje žádný koncept pole 3D textur; podsložka 3D textury je tedy jedna úroveň mipmapy.
Souřadnicové systémy pro Direct3D jsou definovány pro pixely a texely.
pixelový souřadnicový systém
Souřadnicový systém pixelů v Direct3D definuje původ cíle vykreslení v levém horním rohu, jak je znázorněno v následujícím diagramu. Středy pixelů jsou posunuty o (0,5f,0,5f) ze souřadnic celých čísel.
souřadnicový systém Texel
Souřadnicový systém texelu má svůj původ v levém horním rohu textury, jak je znázorněno na následujícím diagramu. Díky tomu je zarovnání textur na obrazovce triviální, protože souřadnicový systém pixelů je zarovnaný se souřadnicovým systémem texelů.
Souřadnice textury jsou reprezentovány normalizovaným nebo škálovaným číslem; každá souřadnice textury je namapována na konkrétní texel následujícím způsobem:
Pro normalizovanou souřadnici:
- Vzorkování bodů: Texel # = floor(U * Šířka)
- Lineární vzorkování: Levý texel # = podlaha(U * šířka), Pravý texel # = Levý texel # + 1
Pro souřadnici s měřítkem:
- Vzorkování bodů: Texel # = floor(U)
- Lineární vzorkování: Left Texel # = floor(U - 0,5), Right Texel # = Left Texel # + 1
Kde je šířka, je šířka textury (v texels).
Obtékání adresy textury probíhá po výpočtu umístění texelu.