Aracılığıyla paylaş


Bilinear Kaplama Filtreleme (Direct3D 9)

Dokular, aşağıdaki çizimde gösterildiği gibi her zaman sol üst köşedeki (0.0, 0.0) ile sağ alt köşedeki (1.0, 1.0) arasında doğrusal olarak adreslenir.

4'e 4 düz renk bloklarından oluşan doku illüstrasyonu

Dokular genellikle düz renk bloklarından oluşuyormuş gibi gösterilir, ancak dokuları raster ekranıyla aynı şekilde düşünmek aslında daha doğru olur: Her texel, aşağıdaki çizimde gösterildiği gibi bir kılavuz hücresinin tam merkezinde tanımlanır.

kılavuz hücrelerinin merkezinde tanımlanmış texel'ler içeren 4x4 doku çizimi

Doku örnekleyiciye UV koordinatlarında bu doku rengini sorarsanız (0,375, 0,375) düz kırmızı (255, 0, 0) alırsınız. Kırmızı texel hücresinin tam merkezi UV'de (0,375, 0,375) olduğundan bu çok mantıklıdır. Uv (0.25, 0.25)'de doku rengini örnekleyiciye sorarsanız ne olur? Bu o kadar kolay değil, çünkü UV'deki nokta (0,25, 0,25) 4 texel'in tam köşesinde yer alır.

En basit şema, örnekleyicinin en yakın texelin rengini döndürmesini sağlamaktır; buna Nokta filtreleme (bkz. Nearest-Point Örnekleme (Direct3D 9)) denir ve genellikle taneli veya bloklu sonuçlar nedeniyle istenmez. UV'de dokumuzu noktadan örnekleme (0,25, 0,25), en yakın nokta filtresi ile ilgili başka bir ince sorunu gösterir: örnekleme noktasından dört texel eşit uzaklıktadır, bu nedenle en yakın tek bir texel yoktur. Döndürülen renk olarak bu dört texel'den biri seçilir, ancak seçim, koordinatın nasıl yuvarlandığına bağlıdır ve bu da yırtılma hatalarına neden olabilir (SDK'deki Nearest-Point Örnekleme makalesine bakın).

Biraz daha doğru ve daha yaygın bir filtreleme şeması, örnekleme noktasına en yakın 4 ifadenin ağırlıklı ortalamasını hesaplamaktır; Buna Bilinear filtreleme adı verilir ve bu yordam modern grafik donanımlarında uygulandığından fazladan hesaplama maliyeti genellikle göz ardı edilir. Bilinear filtrelemeyi kullanarak birkaç farklı örnek noktada elde ettiğimiz renkler şunlardır:

UV: (0.5, 0.5)

Bu nokta kırmızı, yeşil, mavi ve beyaz texel'ler arasındaki tam kenarlıktadır. Örnekleyicinin döndürdüğü renk gridir:

  0.25 * (255, 0, 0)
  0.25 * (0, 255, 0) 
  0.25 * (0, 0, 255) 
## + 0.25 * (255, 255, 255) 
------------------------
= (128, 128, 128)
UV: (0.5, 0.375)

Bu nokta, kırmızı ve yeşil texel'ler arasındaki sınırın orta noktasındadır. Örnekleyicinin geri döndürdüğü renk sarı-gridir (mavi ve beyaz texellerin katkılarının 0'a skalalandığını unutmayın):

  0.5 * (255, 0, 0)
  0.5 * (0, 255, 0) 
  0.0 * (0, 0, 255) 
## + 0.0 * (255, 255, 255) 
------------------------
= (128, 128, 0)
UV: (0.375, 0.375)

Bu, döndürülen renk olan kırmızı texel'in adresidir (filtreleme hesaplamasında diğer tüm ifadeler 0'a ağırlıklıdır):

  1.0 * (255, 0, 0)
  0.0 * (0, 255, 0) 
  0.0 * (0, 0, 255) 
## + 0.0 * (255, 255, 255) 
------------------------
= (255, 0, 0)

Bu hesaplamaları, 4x4 dokusundaki her doku adresinde bilinear filtreleme hesaplaması yapıldığında ne olacağını gösteren aşağıdaki çizimle karşılaştırın.

her doku adresinde gerçekleştirilen bilinear filtreleme ile 4x4 doku çizimi

Doku Filtreleme