Mip eşleme, 2 gücü olmayan dokularla nasıl çalışır?


12

Son GPU'ların 2'nin gücü olmayan dokuları desteklediğini ve tüm özelliklerin çalıştığını duydum. Ancak, mip eşlemenin böyle bir senaryoda nasıl çalışacağını anlamıyorum. Birisi açıklayabilir mi?

Yanıtlar:


13

Kural, bir sonraki mipmap boyutunu hesaplamak için ikiye bölüp en yakın tamsayıya yuvarlamanızdır (0'a yuvarlanmadığı sürece, bunun yerine 1'dir). Örneğin, 57x43 boyutlarında bir görüntünün mipmap'leri olabilir:

level 0: 57x43
level 1: 28x21
level 2: 14x10
level 3: 7x5
level 4: 3x2
level 5: 1x1

UV haritalama, LOD seçimi ve filtreleme, iki doku boyutunun gücü ile aynı şekilde çalışır.

İki durumda olmayan bir doku için kaliteli mips üretmek biraz daha zordur, çünkü her durumda 2x2 kutu pikseli küçültmek için ortalama olamazsınız. Bununla birlikte, 2x2'lik bir kutu filtresi başlamak için harika değildi, bu nedenle doku boyutundan bağımsız olarak Mitchell-Netravali gibi daha iyi bir alt örnekleme filtresi kullanılması önerilir.


1
Bu cevap ile John Calsbeek'in yanıtı arasında bir anlaşmazlık var mı? Uygulama her iki tanımla da eşleşiyor mu? Değilse, biri veya diğeri için bir referansa sahip olmak yararlı olacaktır (veya her ikisi de kullanımda iki farklı teknikse her ikisi de).
trichoplax

4

Bunu düşünmenin bir yolu, grafik kartlarının genellikle 2'nin gücü olmayan dokuları, her yöne 2'lik bir güç olana kadar doldurma yoluyla uygulamasıdır. Bu, çoğu şeyi "sadece çalışır" hale getirir: örneğin döşeme ve donanım filtreleme. Değişmesi gereken tek şey doku koordinatlarından görüntü koordinatlarına dönüşümdür.

Bu şekilde uygulanırsa, mipmap oluşturma nasıl yapılır: hiçbir şey değişmez. Dolgu olmadan 2'nin gücü olmayan dokuları destekleyen bir GPU'nuz olsa bile, mipmap seviyeleri "dolgu" ile sonuçlanır. örneğin 3x3 bir doku, lod 1 olarak 2x2 bir dokuya sahip olacaktır.


Bu cevap ile Nathan Reed'in yanıtı arasında anlaşmazlık var mı? Uygulama her iki tanımla da eşleşiyor mu? Değilse, biri veya diğeri için bir referansa sahip olmak yararlı olacaktır (veya her ikisi de kullanımda iki farklı teknikse her ikisi de).
trichoplax

1
@trichoplax Bence Nathan'ın "iki güç olmayan bir doku için kaliteli mips üretmenin biraz daha zor" olduğu iddiası, cevaplarımızın en azından biraz aynı fikirde olmamasını sağlıyor. Tek başına bu muhtemelen daha fazla ayrıntıya değer.
John Calsbeek

1
Bence buradaki sorun, metinlerin mantıksal konumlarını bellekteki "fiziksel" düzeniyle karıştırmamızdır. 1) Pikseller ayrık öğelerdir, yani her zaman bir tamsayı boyutuna ihtiyacınız vardır ve bu nedenle tek bir boyutu aşağı ölçeklendirmek ya yuvarlamak ya da aşağı yuvarlamak zorunda olduğumuz anlamına gelir. Nx1 veya 1xN dokuya ulaştığımızda yuvarlamamız gerektiğinden, her zaman yuvarlamak mantıklıdır. 2) Fiziksel adreslerde düzenlendiğinde, dokuyu bazı "uygun" "adım" boyutuna kadar doldurmak nadir değildir. Bu 2 nedenden dolayı yapılabilir: a) HW'yi daha ucuz hale getirebilir & b) P.of.2, Morton siparişi kolaysa.
Simon F
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.