Vairāku paraugu kropļojumnovērse

**Vairāku paraugu kropļojumnovērse** ir viena no metodēm, ko izmanto datorgrafikā, kā panākt pilna sižeta kropļojumnovērsi jeb *full-scene anti-aliasing* (FSAA). Izmantojot "Multisampling" (turpmāk - vairāku paraugu iegūšanu), katra pikseļa malas pikseļu paraugs tiek ņemts vairākas reizes. Katram iegūtajam paraugam, kurš tiek atlasīts, tiek piemērota neliela nobīde uz visām ekrāna koordinātām. Šī nobīde ir mazāka par faktisko pikseļu lielumu. Iegūstot vidējo vērtību no visiem šiem paraugiem, rezultāts ir vienmērīgāka krāsu pāreja malās. Atšķirībā no *super-paraugu* iegūšanas jeb *supersampling* (SSAA), kas var izraisīt to, ka tie paši pikseļi tiek attēloti vairākas reizes uz viena pikseļa, *MSAA* vada fragmentu programmu tikai vienu reizi pikselī. Tomēr ar *MSAA* tiek veikti vairāki dziļuma / trafaretu salīdzinājumi katram paraugam, viens katram no apakšparaugiem, kas dod ģeometrijas apakšpikseļu telpisko precizitāti un skaistas, izlīdzinātas malas daudzstūriem.

## Definīcija
Termins *MSAA* parasti attiecas uz īpašu *super-paraugu* iegūšanas gadījumu. Sākotnējā *pilna sižeta kropļojumnovērses* (FSAA) īstenošana konceptuāli strādāja, vienkārši padarot sižetu ar augstāku izšķirtspēju un pēc tam samazinot izšķirtspēju. Lielākā daļa mūsdienu grafisko procesoru (GPU) ir spējīgi izmantot šādu kropļojumnovērses formu, taču tas pieprasa lielus resursus kā tekstūra, joslas platums un aizpildījuma biežums.

Saskaņā ar OpenGL "GL_ARB_multisample" specifikāciju, *MSAA* attiecas uz specifisku super-paraugu iegūšanas optimizāciju. Specifikācija nosaka, ka process, kurā tiek ģenerēts attēls, novērtē fragmentu programmu vienu reizi pikseļos, un tikai "patiesi" pārvērš dziļuma un trafaretu vērtības. Tas nav tas pats kā *super-paraugu* iegūšana, bet, izmantojot  OpenGL 1.5 specifikāciju, definīcija tika atjaunināta, iekļaujot arī pilnībā *super-paraugu* iegūšanas ieviešanu.

Grafikas literatūrā kopumā vairāku paraugu iegūšana ir jebkurš īpašs *"super-paraugu"* gadījums, kad dažas galīgā attēla komponentes nav pilnībā sadalītas sīkākos apakšparaugos. Turpmāk uzskaitītie saraksti īpaši attiecas uz ARB_multisample definīciju.

## Apraksts
*Super-paraugu* kropļojumnovērsē tiek iegūti vairāki paraugi no dažādām atrašanās vietām viena pikseļa ietvaros. Katrs paraugs tiek pilnībā renderēts un apvienots ar citiem paraugiem, iegūstot gala rezultāta pikseli, kurš tiek attēlots uz ekrāna. Skaitļošanas ziņā tas ir dārgs process, jo renderēšanas process ir jāatkārto katram iegūtajam paraugam. Tas ir arī neefektīvs process, jo kropļojumnovērse tiek ievērota tikai dažās attēla daļās, piemēram, objektu stūros attēlā, turpretim *super-paraugu* iegūšanā paraugi tiek iegūti katram atsevišķam pikselim.

Vairāku paraugu kropļojumnovērses gadījumā, ja kāda no vairāku paraugu atrašanās vietām ir pārklāta ar trijstūri, ir jāveic ēnu aprēķins šim trijstūrim. Tomēr šis aprēķins ir jāveic tikai vienreiz visam pikselim, neskatoties uz to, cik daudz paraugu iegūšanas vietas ir ietvertas. Ēnu aprēķina rezultāts tiek piemērots visām attiecīgajām paraugu atrašanās vietām.

Gadījumā, ja tikai viens trijstūris aptver katra parauga vietu viena pikseļa ietvaros, tiek veikts tikai viens ēnojuma aprēķins. Šis process skaitļošanas ziņā ir mazliet dārgāks (gūtais rezultāts ir tāds pats, kā attēlam bez kropļojumnovērses). Tas attiecas uz trijstūra centru, kur kropļojumnovērse nav problēma. (Attēlā esošo stūru noteikšana var samazināt skaitļošanas apmērus, samazinot *MSAA* aprēķinus uz tiem pikseļiem, kuru paraugi ietver vairākus trijstūrus, vai trijstūrus vairākos dziļumos.) Ekstrēmos gadījumos, kur katra parauga atrašanās vietu pārklāj cits trijstūris, tiek veikts atsevišķs ēnojuma aprēķins katram parauga atrašanās vietai, un rezultāti tiek apvienoti, lai iegūtu galīgo pikseli. Rezultāts un skaitļošanas daudzums ir ekvivalents ar *super-paraugu* metodes iegūto rezultātu.

Ēnojuma aprēķins nav vienīgā darbība, kas jāveic dotajam pikselim. *Vairāku paraugu iegūšanas* ieviešana var dažādi izdalīt arī citas operācijas, piemēram, redzamību dažādos paraugu ņemšanas līmeņos.

## Priekšrocības
* Pikseļu ēnotājs parasti ir jānovērtē tikai vienu reizi katram pikselim;
* Daudzstūru malas (visizteiktākais robojums 3D grafikā) tiek labotas ar kropļojumnovērsi.

## Trūkumi
### Alfa testēšana
Alfa testēšana ir tehnika, kas kopīga vecākām videospēlēm, ko izmanto, lai padarītu objektus caurspīdīgus, noraidot pikseļus no ierakstīšanas kadru buferī.

Ja caurspīdīga fragmenta alfa vērtība nav norādītajā diapazonā, tad pēc alfa testēšanas tas tiks izmests. Tā kā tas tiek veikts uz pikseļu pamata, attēls nesaņem *vairāku paraugu iegūšanas* priekšrocības (visi pikseļa paraugi tiek izmesti, pamatojoties uz alfa testu) šiem pikseļiem.
Iegūtais attēls var saturēt robojumus gar caurspīdīgu objektu malām vai tekstūru vidū. Iegūtā attēla kvalitāte nebūs sliktāka, nekā attēlam bez kropļojumnovērses apstrādes. Caurspīdīgiem objektiem, kas modelēti, izmantojot alfa-testa tekstūras, arī būs robojumi veikto pārbaužu dēļ. Šo efektu var samazināt, renderējot objektus ar caurspīdīgām tekstūrām vairākas reizes, lai gan tas radītu lielu veiktspējas samazinājumu ainām ar daudziem caurspīdīgiem objektiem.

### Robojumi
Tā kā *vairāku paraugu iegūšana* aprēķina tekstūras tikai vienu reizi katram pikselim, robojumi un citi artefakti joprojām būs redzami iekšpusē renderētajos daudzstūros, kur fragmenta ēnotāja izvade satur augstas frekvences sastāvdaļas.

### Veiktspēja
Lai gan *MSAA* nav tik intensīva kā SSAA, tā joprojām ir vairākas reizes intensīvāka nekā pēcapstrādes kropļojumnovērses metodes, piemēram, FXAA, SMAA un MLAA. Šie paņēmieni kopumā neietekmē darbības rezultātus, bet cieš no precizitātes problēmām. Daudzi no šiem paņēmieniem sāk arī ietvert pagaidu kropļojumnovērses metodes (SMAA T2x, TAA) algoritmu, kas vēl vairāk uzlabo kropļojumnovērsi kustībā (datorspēlēs).

## Kvalitāte
Salīdzinot ar *super-paraugu* iegūšanu, vairāku paraugu kropļojumnovērse var nodrošināt līdzīgu kvalitāti ar augstāku veiktspēju vai labāku attēla kvalitāti pie vienādas veiktspējas. Vēl labākus rezultātus var sasniegt, izmantojot rotētas režģa apakšpikseļu maskas. Papildu joslas platums, kas ir nepieciešams *vairāku paraugu iegūšanai*, ir samērā zems, ja ir pieejama Z-ass un krāsu kompresija.

Lielākā daļa mūsdienu grafisko procesoru atbalsta 2×, 4×, 8× un 16× *"MSAA"* paraugus. Augstākas vērtības rada labāku kvalitāti, bet tās ir lēnākas.

## Atsauces