Penyaringan anisotropik "mempertahankan ketajaman tekstur yang biasanya hilang oleh upaya tekstur peta MIP untuk menghindari alias". Artikel Wikipedia memberikan petunjuk tentang bagaimana hal itu dapat diterapkan ("menyelidiki tekstur (...) untuk setiap orientasi anisotropi"), tetapi tidak membaca dengan jelas bagi saya.
Tampaknya ada berbagai implementasi, seperti yang disarankan oleh tes diilustrasikan dalam catatan presentasi Perkiraan Model Untuk Rendering Berbasis Fisik :
Apa perhitungan konkret yang dilakukan oleh GPU (modern) untuk memilih level MIP yang benar saat menggunakan penyaringan anisotropik?
GL_EXT_texture_filter_anisotropic
sangat detail. Mungkin ini bisa membantu Anda lebih memahami prosesnya.Jawaban:
Perangkat keras penyaringan tekstur mengambil beberapa sampel dari berbagai tingkat mipmap (jumlah maksimum sampel ditunjukkan oleh tingkat penyaringan anisotropik, meskipun jumlah persis sampel yang diambil dalam operasi penyaringan tertentu akan tergantung pada proporsi antara turunan pada fragmen. ) Jika Anda memproyeksikan kerucut melihat permukaan pada sudut miring ke ruang tekstur, itu akan menghasilkan sekitar proyeksi berbentuk oval, yang lebih memanjang untuk sudut yang lebih miring. Sampel tambahan diambil di sepanjang sumbu oval ini (dari tingkat mip yang benar, untuk memanfaatkan pra-penyaringan yang mereka tawarkan) dan digabungkan untuk memberikan sampel tekstur yang lebih tajam.
Teknik lain yang dikenal sebagai rip-mapping (disebutkan dalam artikel Wikipedia tentang Pemetaan), yang tidakumum ditemukan di GPU kontemporer, menggunakan tekstur prefiltering. Berbeda dengan mips, teksturnya tidak diperkecil secara seragam tetapi menggunakan berbagai rasio lebar-lebar (hingga rasio tergantung pada tingkat pemfilteran anisotropik yang Anda pilih). Varian - atau mungkin dua varian jika menggunakan pemfilteran trilinear - tekstur kemudian dipilih berdasarkan sudut permukaan untuk meminimalkan distorsi. Nilai piksel diambil menggunakan teknik pemfilteran default (bilinear atau trilinear). Rip-map tidak digunakan di perangkat keras apa pun yang saya tahu karena ukurannya yang terlarang: sementara mipmaps menggunakan penyimpanan 33% tambahan, ripmaps menggunakan 300%. Ini dapat diverifikasi dengan mencatat bahwa persyaratan penggunaan tekstur tidak bertambah ketika menggunakan AF, melainkan hanya bandwidth yang meningkat.
Untuk bacaan lebih lanjut, Anda mungkin ingin melihat spesifikasi untuk ekstensi OpenGL EXT_texture_filter_anisotropic . Ini merinci rumus yang digunakan untuk menghitung sampel dan cara menggabungkannya saat menggunakan penyaringan anisotropik.
sumber
Persyaratan API dapat ditemukan di salah satu spesifikasi atau ekstensi. Ini satu: https://www.opengl.org/registry/specs/EXT/texture_filter_anisotropic.txt
Semua vendor GPU kemungkinan menyimpang dari spesifikasi karena kualitas AF dulu menjadi bagian dari banyak tolok ukur. Dan implementasi saat ini akan terus berkembang seiring beban kerja baru yang menekankan perkiraan yang ada. Sayangnya, untuk mengetahui apa yang dilakukan keduanya, Anda harus menjadi bagian dari salah satu perusahaan. Tetapi Anda dapat mengukur spektrum kemungkinan dari makalah-makalah berikut, yang tercantum dalam urutan kualitas dan biaya implementasi yang meningkat:
Mengutip dari spec:
sumber