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ó.
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ó.
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.
Kapcsolódó témakörök