Megosztás a következőn keresztül:


Kétvonalas textúraszűrés (Direct3D 9)

A textúrák mindig lineárisan vannak kezelve a bal felső sarokban lévő (0,0, 0,0) és a jobb alsó sarokban lévő (1,0, 1,0) között, ahogyan az alábbi ábrán látható.

4x4-es textúra ábrája egyszínű színblokkokkal

A textúra általában úgy jelenik meg, mintha egyszínű tömbökből állnának, de valójában helyesebb ugyanúgy gondolni a textúrákra, mint a raszteres megjelenítésre: Minden texel a rácscella pontos középpontjában van definiálva, ahogy az alábbi ábrán is látható.

4x4-et ábrázoló ábra a rácscellák közepén definiált texelekkel

Ha megkérdezi a textúra mintavevőjét, hogy milyen szín van a textúra UV-koordinátáinál (0.375, 0.375), tiszta pirosat kap (255, 0, 0). Ez teljesen logikus, mert a piros texel cella pontos középpontja az UV-koordináták (0,375, 0,375) pozícióban van. Mi a teendő, ha megkérdezi a mintavevőt, hogy milyen színű a textúra UV-n (0,25, 0,25)? Ez nem olyan egyszerű, mert az UV (0,25, 0,25) pont a 4 texel pontos sarkában található.

A legegyszerűbb séma az, hogy a mintavevő a legközelebbi texel színét adja vissza; ezt pontszűrésnek nevezzük (lásd Nearest-Point mintavételezés (Direct3D 9)), és általában nem kívánatos a szemcsés vagy blokkos eredmények miatt. Az anyagmintánk UV-n (0,25, 0,25) történő pontmintavétele egy másik apró problémát mutat a legközelebbi pontszűréssel kapcsolatban: négy texel egyenlő távolságban van a mintavételi ponttól, így nincs egyetlen legközelebbi texel sem. A négy texel közül az egyik lesz a visszaadott szín, de a kiválasztás attól függ, hogyan van kerekítve a koordináta, ami szakadási artefaktumokat okozhat (lásd az SDK Nearest-Point mintavételezési cikkére).

Valamivel pontosabb és gyakoribb szűrési séma a mintavételi ponthoz legközelebbi 4 texel súlyozott átlagának kiszámítása; ezt bilineáris szűrésnek nevezik, és a számítási többletköltség általában elhanyagolható, mert ezt a rutint modern grafikus hardverekben implementálják. Az alábbi színeket kapjuk bilineáris szűrés használatával néhány különböző mintaponthoz:

UV: (0.5, 0.5)

Ez a pont a piros, zöld, kék és fehér texelek pontos határán van. A mintavevő által visszaadott szín szürke:

  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)

Ez a pont a piros és a zöld texel határának közepén van. A mintavevő által visszaadott szín sárga-szürke (vegye figyelembe, hogy a kék és fehér texelek hozzájárulásai 0-ra vannak skálázva):

  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)

Ez a piros texel címe, amely a visszaadott szín (a szűrési számítás összes többi texelje 0-ra van súlyozott):

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

Hasonlítsa össze ezeket a számításokat a következő ábrával, amely bemutatja, mi történik, ha a bilineáris szűrés számítása a 4x4-es textúra minden címén történik.

4x4-es textúra ábrázolás bilineáris szűréssel minden textúracímen

Textúraszűrés