Sumber daya tekstur terkompresi

Peta tekstur adalah gambar digital yang digambar pada bentuk tiga dimensi untuk menambahkan detail visual. Mereka dipetakan ke dalam bentuk-bentuk ini selama rasterisasi, dan prosesnya dapat mengkonsumsi sejumlah besar bus sistem dan memori. Untuk mengurangi jumlah memori yang dikonsumsi oleh tekstur, Direct3D mendukung kompresi permukaan tekstur. Beberapa perangkat Direct3D mendukung permukaan tekstur terkompresi secara native. Pada perangkat tersebut, ketika Anda telah membuat permukaan terkompresi dan memuat data ke dalamnya, permukaan dapat digunakan dalam Direct3D seperti permukaan tekstur lainnya. Direct3D menangani dekompresi ketika tekstur dipetakan ke objek 3D.

Storage efisiensi dan kompresi tekstur

Semua format kompresi tekstur adalah kekuatan dua. Meskipun ini tidak berarti bahwa tekstur harus persegi, itu berarti bahwa x dan y adalah kekuatan dua. Misalnya, jika tekstur awalnya 512 kali 128 byte, mipmapping berikutnya akan menjadi 256 kali 64 dan seterusnya, dengan setiap level menurun dengan kekuatan dua. Pada tingkat yang lebih rendah, di mana tekstur disaring menjadi 16 kali 2 dan 8 kali 1, akan ada bit yang terbuang karena blok kompresi selalu merupakan 4 per 4 blok texel. Bagian blok yang tidak terpakai empuk.

Meskipun ada bit yang terbuang di level terendah, keuntungan keseluruhan masih signifikan. Kasus terburuk adalah, secara teori, 2K dengan 1 tekstur (2⁰ daya). Di sini, hanya satu baris piksel yang dikodekan per blok, sedangkan sisa blok tidak digunakan.

Mencampur format dalam satu tekstur

Penting untuk dicatat bahwa setiap tekstur tunggal harus menentukan bahwa datanya disimpan sebagai 64 atau 128 bit per kelompok 16 texels. Jika blok 64-bit - yaitu, format kompresi blok BC1 - digunakan untuk tekstur, dimungkinkan untuk mencampur format alfa buram dan 1-bit berdasarkan per blok dalam tekstur yang sama. Dengan kata lain, perbandingan besaran bilangan bulat yang tidak ditandatangani dari color_0 dan color_1 dilakukan secara unik untuk setiap blok dari 16 texels.

Setelah blok 128-bit digunakan, saluran alfa harus ditentukan dalam mode eksplisit (format BC2) atau interpolasi (format BC3) untuk seluruh tekstur. Seperti halnya warna, ketika mode interpolasi (format BC3) dipilih, maka delapan alfa interpolasi atau enam mode alfa interpolasi dapat digunakan berdasarkan blok demi blok. Sekali lagi perbandingan besar alpha_0 dan alpha_1 dilakukan secara unik berdasarkan blok demi blok.

Direct3D menyediakan layanan untuk mengompres permukaan yang digunakan untuk tekstur model 3D. Bagian ini memberikan informasi tentang membuat dan memanipulasi data dalam permukaan tekstur terkompresi.

Pada bagian ini

Topik Deskripsi

Tekstur alfa buram dan 1-bit

Format tekstur BC1 adalah untuk tekstur yang buram atau memiliki satu warna transparan.

Tekstur dengan saluran alfa

Ada dua cara untuk menyandikan peta tekstur yang menunjukkan transparansi yang lebih kompleks. Dalam setiap kasus, blok yang menggambarkan transparansi mendahului blok 64-bit yang sudah dijelaskan. Transparansi diwakili sebagai bitmap 4x4 dengan 4 bit per piksel (pengkodean eksplisit), atau dengan bit yang lebih sedikit dan interpolasi linier yang analog dengan apa yang digunakan untuk pengkodean warna.

Kompresi blok

Kompresi blok adalah teknik kompresi tekstur lossy untuk mengurangi ukuran tekstur dan jejak memori, memberikan peningkatan kinerja. Tekstur terkompresi blok bisa lebih kecil dari tekstur dengan 32-bit per warna.

Format tekstur terkompresi

Bagian ini berisi informasi tentang organisasi internal format tekstur terkompresi. Anda tidak memerlukan detail ini untuk menggunakan tekstur terkompresi, karena Anda dapat menggunakan fungsi Direct3D untuk konversi ke dan dari format terkompresi. Namun, informasi ini berguna jika Anda ingin beroperasi pada data permukaan terkompresi secara langsung.

 

Tekstur