Multisample anti-aliasing

Multisample anti-aliasing (MSAA) és un tipus d'Antialiàsing, una tècnica utilitzada en Computació gràfica per millorar la qualitat d'imatge.

Definició modifica

El terme generalment es refereix a un cas especial de supersampling. Les implementacions inicials de l'anti-àlies d'escena completa (FSAA) funcionaven conceptualment, simplement representant una escena amb una resolució més alta i, després, mostrant-la a una sortida de resolució més baixa. La majoria de les GPU són capaços d'aquesta forma d'anti-aliasing, però impedeix enormement recursos com textura, amplada de banda i fillrate.

En la literatura de gràfics en general, "multisample" es refereix a qualsevol cas especial de supersampling on alguns components de la imatge final que no estan totalment superposats. Les llistes de sota es refereixen específicament a la definició ARB_multisample.

Descripció modifica

En l'anti-aliasing supersample, es mostren múltiples ubicacions dins de cada píxel, i cadascuna d'aquestes mostres es representa completament i es combina amb les altres per produir el píxel que es mostra en definitiva. Això és computacionalment car, perquè tot el procés de renderització s'ha de repetir per a cada ubicació d'exemple. També és ineficient, ja que l'aliasing normalment sol notar-se a "" algunes parts de la imatge, com ara les vores, mentre que el supersample es realitza per a cada píxel.

En anti-aliasing multisample, si alguna de les ubicacions de múltiples mostres en un píxel està coberta pel triangle que es representa, s'ha de realitzar una compacta d'ombrejat per a aquest triangle. Tanmateix, aquest càlcul només s'ha de realitzar "" una vegada "" per a tot el píxel, independentment de quantes posicions de mostra estiguin cobertes; el resultat del càlcul d'ombrejat s'aplica simplement a tots de les ubicacions rellevants de múltiples mostres.

En el cas que només un triangle cobreixi cada ubicació de múltiples mostres dins del píxel, només es realitza una computació d'ombrejat, i aquests píxels són poc més cars (i el resultat no és diferent) que en la imatge no aliat. Això és cert en el centre dels triangles, on l'alteració no és un problema. (La detecció de vores pot reduir-ho més encara limitant explícitament el càlcul de MSAA a píxels, les mostres dels quals impliquen triangles múltiples o triangles a múltiples profunditats.) En el cas extrem en què cada una de les ubicacions de múltiples mostres està coberta per un triangle diferent, una computació d'ombrejat diferent es realitzarà per a cada ubicació i els resultats es combinen per donar el píxel final, i el resultat i la despesa computacional són els mateixos que en la imatge equivalent en superposició.

El càlcul d'ombrejat no és l'única operació que s'ha de realitzar en un píxel determinat; les implementacions multisamplificadores poden mostrar diverses operacions, com la visibilitat en diferents nivells de mostreig.

Avantatges modifica

  • El pixel shader sol solament ha de ser avaluat una vegada per píxel.
  • Les vores dels polígons (la font més òbvia de aliasing en gràfics en 3D) són anti-àlies.

Desavantatges modifica

Proves alfa modifica

La prova alfa és una tècnica comuna als videojocs més antics que s'utilitzen per mostrar objectes translúcids, rebutjant els píxels que no s'escriuen al framebuffer.[1] Si el valor alfa d'un fragment translúcid no es troba dins d'un rang especificat, es descartarà després de les proves alfa. Com que això es realitza en píxels per píxels, la imatge no rep els beneficis del mostreig múltiple (totes les multigràfiques d'un píxel es descarten basades en la prova alfa) per a aquests píxels. La imatge resultant pot contenir àlies al llarg de les vores d'objectes o vores transparents dins de les textures, encara que la qualitat d'imatge no serà pitjor del que seria sense anti-aliasing.[2] Els objectes translúcids que es modelin utilitzant textures alfa-test també seran aliases a causa de proves alfa. Aquest efecte es pot minimitzar fent que els objectes tinguin textures transparents diverses vegades, encara que això comportaria una reducció d'alt rendiment per escenes que contenen molts objectes transparents.[3]

Aliasing modifica

Atès que el multi-mostreig calcula textures només una vegada per píxel, l'aliasing i altres artefactes encara seran visibles dins dels polígons representats, on la sortida de fragment shader conté components d'alta freqüència.

Rendiment modifica

Tot i que és menys intensiu que el SSAA (supersample), MSAA encara és múltiple vegades més intensiu que les tècniques anti-aliasing post process, com ara FXAA, SMAA i MLAA. Aquestes tècniques en general tenen poc o cap impacte en el rendiment, però pateixen problemes de precisió.[4] Moltes d'aquestes tècniques també comencen a incloure un algoritme anti-aliasing temporal (SMAA T2x, TAA) que millora encara més l'anti aliasing mentre està en moviment en el joc.

Mètodes de mostratge modifica

Mostra de punts modifica

En una màscara de mostratge de punt, el bit de cobertura de cada multisample tan sols s'estableix si el multisample es troba dins la primitiva representada. Les mostres mai no es prenen de fora d'una primitiva representada, de manera que les imatges produïdes amb el mostratge de punts seran geomètricament correctes, però la qualitat de filtratge pot ser baixa, puix que la proporció de bits establits a la màscara de cobertura del píxel pot no ser igual a la proporció del píxel que en realitat és cobert pel fragment en qüestió.

Mostratge de la zona modifica

La qualitat del filtratge es pot millorar mitjançant l'ús de màscares mostrades en la zona. En aquest mètode, el nombre de bits establerts en una màscara de cobertura per a un píxel ha de ser proporcional a la cobertura real del fragment. Això donarà com a resultat que alguns bits de cobertura s'estableixin per a múltiples elements que no es troben en la primitiva representada i que poden causar àlies i altres artefactes.

Patrons de mostra modifica

Paràmetres regulars modifica

Un patró de mostra de quadrícula regular, on les ubicacions multisample formen una quadrícula separada uniformement a tot el píxel, és fàcil d'implementar i simplifica l'avaluació de l'atribut (és a dir, la configuració de màscares subpíxels, el color i la profunditat de mostreig). Aquest mètode és computacionalment costós a causa de la gran quantitat de mostres. L'optimització de vora és deficient per a les vores alineades amb la pantalla, però la qualitat d'imatge és bona quan la quantitat de multiselple és gran.

Esborra una graella regular modifica

Un patró de mostra de quadrícula regular escàs és un subconjunt de mostres que es trien a partir del patró estàndard de mostra de quadrícula. Igual que amb la graella regular, l'avaluació de l'atribut es simplifica a causa de l'espaiat regular. El mètode és menys computacionalment car a causa de tenir menys mostres. L'optimització de vora és bona per a les vores alineades amb la pantalla, i la qualitat de la imatge és bona per a un nombre moderat de múltiples models.

Patrons d'exemple estocàstics modifica

Un patró d'exemple estocàstic és una distribució aleatòria de múltiples colors al llarg del píxel. L'espaiat irregular de les mostres fa que l'avaluació de l'atribut sigui complicada. El mètode és rendible a causa del baix nombre de mostra (en comparació amb els patrons de graella regulars). Optimització de vora amb aquest mètode, encara que no sigui òptima per a les vores alineades amb la pantalla. La qualitat de la imatge és excel·lent per a un nombre moderat de mostres.

Qualitat modifica

En comparació amb el supersampling, l'anti-aliasing multisample pot proporcionar una qualitat similar a un major rendiment o millor qualitat per al mateix rendiment. Es poden aconseguir resultats millorats mitjançant l'ús de màscares de subjecció giratòries. L'ample de banda addicional requerit per un mostreig múltiple és raonablement baix si Z i compressió de color estan disponibles.

La majoria de GPU és compatible amb mostres de 2 ×, 4 ×, 8 × i 16 × MSAA. Els valors més alts resulten en una millor qualitat, però són més lents.

Referències modifica

  1. «Sintaxi ShaderLab: proves Alpha». Unity3d.com, 27-04-2007. [Consulta: 31 juliol 2012].
  2. «multisampling_anti-aliasing/index7_e.php Multisampling Anti-Aliasing: A Closeup». Alt.3dcenter.org. [Consulta: 31 juliol 2012].
  3. «Comparació visual dels diferents modes Anti-Aliasing». Nhancer.com. Arxivat de l'dat = d_AA original el 2012-08-03. [Consulta: 31 juliol 2012].
  4. Matt Pettineo. «A Quick Overview of MSAA». [Consulta: 24 novembre 2016].