Jawaban:
Aturannya adalah bahwa untuk menghitung ukuran mipmap berikutnya, Anda membaginya dengan dua dan membulatkan ke bilangan bulat terdekat (kecuali jika dibulatkan menjadi 0, dalam hal ini, itu adalah 1). Misalnya, gambar 57x43 akan memiliki mipmaps seperti:
level 0: 57x43
level 1: 28x21
level 2: 14x10
level 3: 7x5
level 4: 3x2
level 5: 1x1
Pemetaan UV, pemilihan LOD, dan penyaringan bekerja dengan cara yang sama seperti untuk kekuatan dua ukuran tekstur.
Menghasilkan mips berkualitas baik untuk tekstur non-power-of-two agak sulit, karena Anda tidak bisa hanya rata-rata kotak 2x2 piksel untuk menurunkan sampel dalam semua kasus. Namun, filter kotak 2x2 tidak terlalu bagus untuk memulai, jadi gunakan filter downsampling yang lebih baik seperti Mitchell-Netravali direkomendasikan terlepas dari ukuran tekstur.
Salah satu cara untuk memikirkannya adalah bahwa kartu grafis sering menerapkan tekstur non-power-of-2 hanya dengan menambahkannya sampai mereka memiliki kekuatan 2 di setiap arah. Ini membuat sebagian besar hal "hanya berfungsi": ubin dan pemfilteran perangkat keras, misalnya. Satu-satunya hal yang perlu diubah adalah konversi dari koordinat tekstur ke koordinat gambar.
Jika diimplementasikan seperti itu, sudah jelas cara melakukan pemetaan: tidak ada yang berubah. Bahkan jika Anda memiliki GPU yang mendukung tekstur non-power-of-2 tanpa padding, level mipmap akan berakhir dengan "padding". misal tekstur 3x3 akan memiliki tekstur 2x2 seperti lod 1.