Il texture filtering di cui stiamo parlando si occupa di filtrare diversi livelli di mipmap. I mipmap sono le variazioni che intercorrono tra una texture e la stessa texture nelle diverse misure. Immaginiamo di essere in piedi su una superficie composta da mattoni e guardiamo verso l'orizzonte. Per assicurarci un buon livello di realismo, i mattoni più vicini devono essere molto dettagliati, ed allontanandosi dal punto di vista, i mattoni diventeranno sempre più piccoli e meno dettagliati. Questa differenza tra i vari livelli di mipmap è determinata dalla cosiddetta Texture LOD (Level of detail)
Stessa texture in differenti misure.
Entrambi le parti dello schermo rappresentano un’immagine filtrati bilinearmente. Nel lato sinistro, abbimo reso i vari livelli di bipmap visibili.
Entrambi le parti dello schermo rappresentano un'immagine filtrata bilinearmente. Nel lato sinistro, abbiamo reso i vari livelli di bipmap visibili.
Ci vuole però molto di più oltre al mipmapping per riprodurre un risultato decente. Senza nessun tipo di filtro, l'immagine sarebbe molto pixellata, dato che a mano a mano che la scena si allontana dall'osservatore, sempre meno pixel saranno disponibili per visualizzare correttamente le texture.
Questa scena di un gioco rende l'idea.
La prossima sezione dell'articolo mostra come il mipmapping previene la pixellazione della scena. Per dimostrarlo abbiamo utilizzato il "texture filtering test" di 3D Mark 2003 (versione Pro).
La parte sinistra è renderizzata senza mipmapping, e nell’immagine è presente molto rumore, il che rende l’animazione molto sgradevole. Potete provare anche voi con qualsiasi gioco basato sul motore grafico Q3. Impostate r_textureMode a “GL_LINEAR” per disabilitare il mipmapping con filtro lineare.