Udostępnij za pośrednictwem


Zasoby skompresowanej tekstury (Direct3D 9)

Mapy tekstur są cyframi obrazów rysowanych na kształtach trójwymiarowych w celu dodania szczegółów wizualizacji. Są one mapowane na te kształty podczas rasteryzacji, a proces może zużywać duże ilości zarówno magistrali systemowej, jak i pamięci. Aby zmniejszyć ilość pamięci zużywanej przez tekstury, funkcja Direct3D obsługuje kompresję powierzchni tekstury. Niektóre urządzenia Direct3D obsługują natywnie skompresowane powierzchnie tekstur. Na takich urządzeniach, gdy utworzono skompresowaną powierzchnię i załadowano do niej dane, powierzchnię można używać w trybie Direct3D, podobnie jak w przypadku każdej innej powierzchni tekstury. Funkcja Direct3D obsługuje dekompresję, gdy tekstura jest mapowana na obiekt 3D.

Wydajność magazynowania i kompresja tekstur

Wszystkie formaty kompresji tekstury są mocami dwóch. Chociaż nie oznacza to, że tekstura jest koniecznie kwadratowa, oznacza to, że zarówno x, jak i y są mocami dwóch. Jeśli na przykład tekstura jest pierwotnie 512 o 128 bajtów, następny mipmapping będzie 256 przez 64 i tak dalej, z każdym poziomem malejącym o moc dwóch. Na niższych poziomach, gdzie tekstura jest filtrowana do 16 przez 2 i 8 o 1, nie będzie zmarnowanych bitów, ponieważ blok kompresji jest zawsze 4 o 4 blok texels. Nieużywane części bloku są dopełnione. Chociaż na najniższym poziomie brakuje bitów, ogólny wzrost jest nadal znaczący. Najgorszy przypadek jest, teoretycznie, 2K na 1 teksturę (2 ze zasilaniem). W tym miejscu tylko jeden wiersz pikseli jest zakodowany na blok, podczas gdy reszta bloku jest nieużywany.

Mieszanie formatów w jednej teksturze

Należy pamiętać, że każda pojedyncza tekstura musi określić, że jego dane są przechowywane jako 64 lub 128 bitów na grupę 16 texels. Jeśli bloki 64-bitowe - czyli format DXT1 - są używane do tekstury, można mieszać nieprzezroczyste i 1-bitowe formaty alfa na podstawie na blok w ramach tej samej tekstury. Innymi słowy, porównanie wielkości niepodpisanej liczby całkowitej color_0 i color_1 jest wykonywane unikatowo dla każdego bloku 16 texels.

Po użyciu bloków 128-bitowych kanał alfa musi być określony w jawnym (formacie DXT2 i DXT3) lub w trybie interpolowanym (format DXT4 i DXT5) dla całej tekstury. Podobnie jak w przypadku wybrania trybu interpolowanego (formatu DXT4 i DXT5), można użyć ośmiu interpolowanych alfa lub sześciu trybów alfa interpolowanych według bloku. Ponownie porównanie wielkości alpha_0 i alpha_1 odbywa się unikatowo na podstawie bloków.

Direct3D udostępnia usługi kompresowania powierzchni używanych do tworzenia tekstu modeli 3D. Ta sekcja zawiera informacje na temat tworzenia i manipulowania danymi na skompresowanej powierzchni tekstury.

Informacje znajdują się w następujących tematach.

tekstury Direct3D