Tekstur dengan saluran alfa
Ada dua cara untuk mengodekan peta tekstur yang menunjukkan transparansi yang lebih kompleks. Dalam setiap kasus, blok yang menjelaskan transparansi mendahului blok 64-bit yang sudah dijelaskan. Transparansi direpresentasikan sebagai bitmap 4x4 dengan 4 bit per piksel (pengodean eksplisit), atau dengan lebih sedikit bit dan interpolasi linier yang dianalogikan dengan apa yang digunakan untuk pengodean warna.
Blok transparansi dan blok warna disusun seperti yang diperlihatkan dalam tabel berikut.
alamat Word | Blok 64-bit |
---|---|
3:0 | Blok transparansi |
7:4 | Blok 64-bit yang dijelaskan sebelumnya |
Pengodean tekstur eksplisit
Untuk pengodean tekstur eksplisit (format BC2), komponen alfa texel yang menjelaskan transparansi dikodekan dalam bitmap 4x4 dengan 4 bit per texel. Empat bit ini dapat dicapai melalui berbagai cara seperti dithering atau dengan menggunakan empat bit paling signifikan dari data alfa. Namun mereka diproduksi, mereka digunakan sama seperti mereka, tanpa bentuk interpolasi.
Diagram berikut menunjukkan blok transparansi 64-bit.
Catatan Metode kompresi Direct3D menggunakan empat bit yang paling signifikan.
Tabel berikut menggambarkan bagaimana informasi alfa ditata dalam memori, untuk setiap kata 16-bit.
Tata letak untuk kata 0:
Bit | Alpha |
---|---|
3:0 (LSB*) | [0] [0] |
7:4 | [0] [1] |
11:8 | [0] [2] |
15:12 (MSB*) | [0] [3] |
*bit paling tidak signifikan, bit paling signifikan (MSB)
Tata letak untuk kata 1:
Bit | Alpha |
---|---|
3:0 (LSB) | [1] [0] |
7:4 | [1] [1] |
11:8 | [1] [2] |
15:12 (MSB) | [1] [3] |
Tata letak untuk kata 2:
Bit | Alpha |
---|---|
3:0 (LSB) | [2] [0] |
7:4 | [2] [1] |
11:8 | [2] [2] |
15:12 (MSB) | [2] [3] |
Tata letak untuk kata 3:
Bit | Alpha |
---|---|
3:0 (LSB) | [3] [0] |
7:4 | [3] [1] |
11:8 | [3] [2] |
15:12 (MSB) | [3] [3] |
Perbandingan warna yang digunakan dalam BC1 untuk menentukan apakah texel transparan tidak digunakan dalam format ini. Diasumsikan bahwa tanpa perbandingan warna data warna selalu diperlakukan seolah-olah dalam mode 4 warna.
Interpolasi alfa linear tiga-bit
Pengodean transparansi untuk format BC3 didasarkan pada konsep yang mirip dengan pengodean linier yang digunakan untuk warna. Dua nilai alfa 8-bit dan bitmap 4x4 dengan tiga bit per piksel disimpan dalam delapan byte pertama blok. Nilai alfa perwakilan digunakan untuk menginterpolasi nilai alfa menengah. Informasi tambahan tersedia dengan cara dua nilai alfa disimpan. Jika alpha_0 lebih besar dari alpha_1, enam nilai alfa perantara dibuat oleh interpolasi. Jika tidak, empat nilai alfa menengah diinterpolasi antara alfa ekstrem yang ditentukan. Dua nilai alfa implisit tambahan adalah 0 (sepenuhnya transparan) dan 255 (buram penuh).
Contoh kode berikut mengilustrasikan algoritma ini.
// 8-alpha or 6-alpha block?
if (alpha_0 > alpha_1) {
// 8-alpha block: derive the other six alphas.
// Bit code 000 = alpha_0, 001 = alpha_1, others are interpolated.
alpha_2 = (6 * alpha_0 + 1 * alpha_1 + 3) / 7; // bit code 010
alpha_3 = (5 * alpha_0 + 2 * alpha_1 + 3) / 7; // bit code 011
alpha_4 = (4 * alpha_0 + 3 * alpha_1 + 3) / 7; // bit code 100
alpha_5 = (3 * alpha_0 + 4 * alpha_1 + 3) / 7; // bit code 101
alpha_6 = (2 * alpha_0 + 5 * alpha_1 + 3) / 7; // bit code 110
alpha_7 = (1 * alpha_0 + 6 * alpha_1 + 3) / 7; // bit code 111
}
else {
// 6-alpha block.
// Bit code 000 = alpha_0, 001 = alpha_1, others are interpolated.
alpha_2 = (4 * alpha_0 + 1 * alpha_1 + 2) / 5; // Bit code 010
alpha_3 = (3 * alpha_0 + 2 * alpha_1 + 2) / 5; // Bit code 011
alpha_4 = (2 * alpha_0 + 3 * alpha_1 + 2) / 5; // Bit code 100
alpha_5 = (1 * alpha_0 + 4 * alpha_1 + 2) / 5; // Bit code 101
alpha_6 = 0; // Bit code 110
alpha_7 = 255; // Bit code 111
}
Tata letak memori blok alfa adalah sebagai berikut:
Byte | Alpha |
---|---|
0 | Alpha_0 |
1 | Alpha_1 |
2 | [0] [2] (2 MSB), [0][1], [0][0] |
3 | [1] [1] (1 MSB), [1][0], [0][3], [0][2] (1 LSB) |
4 | [1] [3], [1][2], [1][1] (2 LSB) |
5 | [2] [2] (2 MSB), [2][1], [2][0] |
6 | [3] [1] (1 MSB), [3][0], [2][3], [2][2] (1 LSB) |
7 | [3] [3], [3][2], [3][1] (2 LSB) |
Perbandingan warna yang digunakan dalam BC1 untuk menentukan apakah texel transparan tidak digunakan dengan format ini. Diasumsikan bahwa tanpa perbandingan warna data warna selalu diperlakukan seolah-olah dalam mode 4 warna.
Topik terkait
Sumber daya tekstur terkompresi
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk