Terkadang, khusus
untuk objek yang letaknya jauh, anda akan melihat teksturnya berkerlap-kerlip, dengan gerakan-gerakan kecil pada kamera maka
menjadi terlihat aneh. Sebagaimana dibahas sebelumnya, tekstur peta-peta harus disaring, sehingga setiap pixel diberikan
sebuah nilai yang ditambahkan texel-textel yang terdekat ke nilai yang
diinginkan. Tapi apa yang terjadi ketika kita sangat jauh dari objek?
Jawabannya adalah bahwa proyeksi Texel adalah jauh lebih kecil dari ukuran
sebuah pixel, sehingga pencampuran empat nilai tidak cukup. Dalam hal ini,
sedikit gerakan dalam kamera akan menghasilkan sebuah gerakan cepat per-pixel
pada ruang tekstur. Hal ini menyebabkan tekstur ditempatkan pada obyek yang
jauh untuk berkerlip dan menghasilkan efek yang menggangu. Mari kita memvisualisasikan ini dengan sebuah sampel,
seperti paralel yang terletak sangat jauh ke layar. Satu pixel memiliki koordinat tekstur (0,5,
0,5), sedangkan yang lainnya, arah tidak
ditentukan, dipetakan ke (0,65, 0,5). Perbedaan koordinat berasal dari fakta sejauh
ini, koordinat terpisah jauh didalam ruang tekstur. Kemudian, dengan asumsi peta adalah 256 x 256,
pixel pertama dipetakan ke Texel (128,
128) ditambah interpolasi. Yang kedua dipetakan ke Texel (166, 0,5). Jelas,
ada sebuah samudera antara kedua sampel. Setiap gerakan kamera yang
minimal akan membuat dampak yang besar
dalam ruang tekstur dan menjadi terlihat berkerlap-kerlip. Lihat Gambar 18.3 untuk dua sampel.
dalam ruang tekstur dan menjadi terlihat berkerlap-kerlip. Lihat Gambar 18.3 untuk dua sampel.
Gambar 18.3. Gambar
sebelah kiri menunjukkan gambar yang diberikan tekstur penyaringan,
sedangkan gambar sebelah kanan menunjukkan aplikasi yang sama yang dijalankan
dengan penyaringan dinonaktifkan.
Solusi untuk masalah
ini disebut mipmapping, yang merupakan teknik penyaringan yang akan membuat tekstur terlihat baik terlepas dari kejauhan. Mipmapping menghitung
setiap masing-masing tekstur
sebagai urutan memetakan setiap satu
setengah ukuran dari sebelumnya. Jadi, jika Anda mulai dengan peta tekstur
256 x 256, mipmaps Anda akan menjadi
128 x 128, 64 x 64, 32 x 32, 16 x 16, dan sebagainya. Peta-peta yang turun sampel dihitung dengan interpolasi
texel-texel bersama-sama, sehingga
mereka memberikan pengurangan detil
halus untuk sejauh poligon . Kemudian, saat runtime,
tekstur untuk segitaga diproyeksikan di ruang layar, dan bidang mipmap yang sesuai dengan daerah segitiga lebih baik digunakan. Dengan cara ini kita dapat menghilangkan berkerlap-kerlip (pada biaya penggunaan memori tekstur tambahan). Meninjau contoh kita sebelumnya, bayangkan bahwa kami ditugaskan untuk letak mipmap dalam ukuran 8x8 piksel. Kemudian, pixel pertama, dengan koordinat (0,5, 0,5), akan dipetakan ke Texel (4,4). Pixel kedua,
dipetakan dengan (0,65, 0,5) sebagai koordinat, akan pergi ke Texel (5,2, 4), yang berdekatan dengan Texel sebelumnya.
tekstur untuk segitaga diproyeksikan di ruang layar, dan bidang mipmap yang sesuai dengan daerah segitiga lebih baik digunakan. Dengan cara ini kita dapat menghilangkan berkerlap-kerlip (pada biaya penggunaan memori tekstur tambahan). Meninjau contoh kita sebelumnya, bayangkan bahwa kami ditugaskan untuk letak mipmap dalam ukuran 8x8 piksel. Kemudian, pixel pertama, dengan koordinat (0,5, 0,5), akan dipetakan ke Texel (4,4). Pixel kedua,
dipetakan dengan (0,65, 0,5) sebagai koordinat, akan pergi ke Texel (5,2, 4), yang berdekatan dengan Texel sebelumnya.
Mipmaps dapat dihitung secara otomatis di kedua OpenGL dan DirectX. Di bawah OpenGL, mereka
diciptakan
dengan
panggilan:
panggilan:
gluBuild2Dmipmaps
Sintaks
ini
adalah panggilan yang sangat mirip dengan glTexImage2D, panggilan standar untuk mendefinisikan
dan
melewati tekstur ke OpenGL. Kemudian, seleksi mipmap adalah proses otomatis. Di bawah DirectX, mipmaps ditangani melalui GenerateMipSubLevels disebut milik antarmuka IDirect3Dtexture9. Atau, mipmaps dapat
dihasilkan secara otomatis
pada penciptaan tekstur jika kita lulus konstan D3DUSAGE_AUTOGENMIPMAP dalam penggunaan parameter panggilan CreateTexture.
sip infonya......
ReplyDelete