Pemfilteran tekstur dengan mipmaps

Mipmap adalah urutan tekstur, yang masing-masing merupakan representasi resolusi yang semakin rendah dari gambar yang sama. Tinggi dan lebar setiap gambar, atau tingkat, dalam mipmap adalah kekuatan dua lebih kecil dari tingkat sebelumnya. Mipmaps tidak harus persegi.

Gambar mipmap resolusi tinggi digunakan untuk objek yang dekat dengan pengguna. Gambar resolusi bawah digunakan sebagai objek tampak lebih jauh. Mipmapping meningkatkan kualitas tekstur yang dirender dengan mengorbankan penggunaan lebih banyak memori.

Direct3D mewakili mipmap sebagai rantai permukaan yang terpasang. Tekstur resolusi tertinggi berada di kepala rantai dan memiliki tingkat mipmap berikutnya sebagai lampiran. Pada gilirannya, tingkat tersebut memiliki lampiran yang merupakan tingkat berikutnya dalam mipmap, dan seterusnya, hingga tingkat resolusi terendah mipmap.

Ilustrasi berikut menunjukkan contoh tingkat ini. Tekstur bitmap mewakili tanda pada kontainer dalam game orang pertama 3D. Saat dibuat sebagai mipmap, tekstur resolusi tertinggi adalah yang pertama dalam set. Setiap tekstur yang berhasil dalam set mipmap lebih kecil tinggi dan lebar dengan kekuatan 2. Dalam hal ini, mipmap resolusi maksimum adalah 256 piksel dengan 256 piksel. Tekstur berikutnya adalah 128x128. Tekstur terakhir dalam rantai adalah 64x64.

Tanda ini memiliki jarak maksimum dari mana ia terlihat. Jika pengguna mulai jauh dari tanda, game menampilkan tekstur terkecil dalam rantai mipmap, yang dalam hal ini tekstur 64x64.

ilustrasi tekstur tanda bahaya 64x64

Saat pengguna memindahkan sudut pandang lebih dekat ke tanda, tekstur resolusi yang semakin tinggi dalam rantai mipmap digunakan. Resolusi dalam ilustrasi berikut adalah 128x128.

ilustrasi tekstur tanda bahaya 128x128

Tekstur resolusi tertinggi digunakan ketika sudut pandang pengguna berada pada jarak minimum yang diizinkan dari tanda , seperti yang ditunjukkan dalam ilustrasi berikut.

ilustrasi tekstur tanda bahaya 256x256

Ini adalah cara yang lebih efisien untuk mensimulasikan perspektif untuk tekstur. Daripada merender tekstur tunggal pada banyak resolusi, lebih cepat menggunakan beberapa tekstur pada resolusi yang bervariasi.

Direct3D dapat menilai tekstur mana dalam set mipmap yang merupakan resolusi terdekat dengan output yang diinginkan, dan dapat memetakan piksel ke ruang texelnya. Jika resolusi gambar akhir berada di antara resolusi tekstur dalam set mipmap, Direct3D dapat memeriksa texel di mipmap dan memadukan nilai warnanya bersama-sama.

Untuk menggunakan mipmaps, aplikasi Anda harus membangun satu set mipmaps. Aplikasi menerapkan mipmap dengan memilih mipmap yang ditetapkan sebagai tekstur pertama dalam kumpulan tekstur saat ini. Lihat Penpaduan tekstur.

Selanjutnya, aplikasi Anda harus mengatur metode pemfilteran yang digunakan Direct3D untuk mengambil sampel texel. Metode tercepat pemfilteran mipmap adalah meminta Direct3D memilih texel terdekat. Gunakan nilai D3DTEXF_POINT yang dijumlahkan untuk memilih ini. Direct3D dapat menghasilkan hasil pemfilteran yang lebih baik jika aplikasi Anda menggunakan nilai enumerasi D3DTEXF_LINEAR. Ini memilih mipmap terdekat, lalu menghitung rata-rata texel tertimbang di sekitar lokasi dalam tekstur yang dipetakan piksel saat ini.

Tekstur Mipmap digunakan dalam adegan 3D untuk mengurangi waktu yang diperlukan untuk merender adegan. Mereka juga meningkatkan realisme adegan. Namun, mereka sering membutuhkan memori dalam jumlah besar.

Catatan Setiap permukaan dalam rantai mipmap memiliki dimensi yang setengah dari permukaan sebelumnya dalam rantai. Jika mipmap tingkat atas memiliki dimensi 256x128, dimensi mipmap tingkat kedua adalah 128x64, tingkat ketiga adalah 64x32, dan sebagainya, turun ke 1x1. Anda tidak dapat meminta sejumlah tingkat mipmap dalam Tingkat yang akan menyebabkan lebar atau tinggi mipmap apa pun dalam rantai menjadi lebih kecil dari 1. Dalam kasus sederhana permukaan mipmap tingkat atas 4x2, nilai maksimum yang diizinkan untuk Level adalah tiga. Dimensi tingkat atas adalah 4x2, dimensi tingkat kedua adalah 2x1, dan dimensi untuk tingkat ketiga adalah 1x1. Nilai yang lebih besar dari 3 dalam Tingkat menghasilkan nilai pecahan dalam tinggi mipmap tingkat kedua, dan karenanya tidak diizinkan.

 

Direct3D dapat secara otomatis melakukan pemfilteran tekstur mipmap. Aplikasi dapat secara manual melintasi rantai mipmap untuk memuat data bitmap ke setiap permukaan dalam rantai. Ini sering menjadi satu-satunya alasan untuk melintasi rantai. Secara otomatis menghasilkan mipmap pada waktu pembuatan tekstur memanfaatkan pemfilteran perangkat keras karena mipmap berada di memori video.

Pemfilteran tekstur