Sdílet prostřednictvím


Obtékání textury

Obtékání textury mění základní způsob, jakým Direct3D rasterizuje texturované mnohoúhelníky pomocí souřadnic textury zadaných pro každý vrchol. Při rastrování mnohoúhelníku systém interpoluje mezi souřadnicemi textury v každém z vrcholů mnohoúhelníku, aby určil texely, které by se měly použít pro každý pixel mnohoúhelníku. Systém za normálních okolností považuje texturu za 2D rovinu a interpoluje nové texely tím, že vezme nejkratší trasu z bodu A v rámci textury do bodu B. Pokud bod A představuje pozici u, v (0,8, 0,1) a bod B je na (0,1,0,1), čára interpolace vypadá jako následující diagram.

diagram čáry interpolace mezi dvěma body

Všimněte si, že nejkratší vzdálenost mezi A a B v tomto obrázku běží zhruba uprostřed textury. Povolením obíhání souřadnic textury v u-směru nebo v-směru se změní způsob, jakým Direct3D vnímá nejkratší trasu mezi souřadnicemi textury v u-směru a v v-směru. Obtékání textury způsobí, že rastrovač vezme nejkratší trasu mezi sadami souřadnic textury za předpokladu, že se shodují hodnoty 0,0 a 1,0. Poslední část je ta složitá: Můžete si představit, že když povolíte obtékání textury v jednom směru, systém bude s texturou zacházet, jako by byla obtočena kolem válce. Představte si například následující diagram.

diagram textury a dvou bodů zabalených kolem válce

Předchozí obrázek znázorňuje, jak obtékání v u - směru ovlivňuje, jak systém interpoluje souřadnice textury. Pomocí stejných bodů jako v příkladu pro normální nebo nerovinné textury můžete vidět, že nejkratší trasa mezi body A a B již nevede středem textury; teď vede přes hranici, kde se společně objevují 0.0 a 1.0. Obtékání ve směru v- je podobné, s tím rozdílem, že obtéká texturu kolem válce, který leží na boku. Zabalení ve směrech u i v je složitější. V této situaci si můžete představit texturu jako torus nebo prstenec.

Nejběžnější praktickou aplikací pro zabalení textury je provést mapování prostředí. Objekt s texturou z mapy prostředí se obvykle zobrazuje jako silně odrážející a ukazuje zrcadlený obraz okolí objektu. Pro účely této diskuze si představte místnost se čtyřmi stěnami, každý z nich malovaný písmenem R, G, B, Y a odpovídajícími barvami: červená, zelená, modrá a žlutá. Mapa prostředí pro takovou jednoduchou místnost může vypadat jako na následujícím obrázku.

ilustrace svislých pruhů červené, zelené, modré a žluté

Představte si, že strop místnosti je podepřen dokonale reflexním, čtyřstranným sloupem. Mapování textury mapy prostředí na pilíř je jednoduché; aby pilíř vypadal, jako by odrážel písmena a barvy, není tak snadné. Následující diagram znázorňuje drátový rám pilíře s příslušnými souřadnicemi textury uvedenými v blízkosti vrcholů. Šev, kde se obal kříží přes hrany textury, je označen tečkovanou čárou.

diagram obdélníku s protínající tečkovanou čárou

Když je obtékání povoleno ve směru u, texturovaný pilíř zobrazuje barvy a symboly z mapy prostředí správně a na švu v přední části textury rasterizátor správně zvolí nejkratší trasu mezi souřadnicemi textury za předpokladu, že souřadnice u 0,0 a 1,0 sdílejí stejné umístění. Texturovaný pilíř vypadá jako na následujícím obrázku.

ilustraci pilíře, který se skládá z červených, zelených, modrých a žlutých kvadrantů

Pokud není povolené opakování textury, rastrovač neprovádí interpolaci ve směru potřebném k vygenerování věrohodného, odraženého obrazu. Místo toho oblast na přední straně pilíře obsahuje vodorovně komprimovanou verzi texelů mezi souřadnicemi u 0,175 a 0,875, protože procházejí středem textury. Efekt zalamování je zničen.

Nezaměňujte obtékání textury s podobnými pojmenovanými režimy adresování textury. Obtékání textury se provádí před adresováním textury. Ujistěte se, že data obtékání textury neobsahují žádné souřadnice textury mimo rozsah [0,0, 1,0], protože výsledkem budou nedefinované výsledky. Další informace o adresování textury naleznete v tématu režimy adresování textury.

obtékání mapy posunutí

Mapy posunu jsou interpolovány tesselovacím enginem. Vzhledem k tomu, že režim obtékání nelze zadat pro modul tessellation, nelze obtékání textury provést pomocí map posunutí. Aplikace může použít sadu vrcholů, které vynutí interpolaci zabalit libovolným směrem. Aplikace může také určit interpolaci, která se má provést jako jednoduchá lineární interpolace.

Textury