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 labot šo sadaļu

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"[1] 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,[2] 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 labot šo sadaļu

Super-paraugu kropļojumnovērsē tiek iegūti vairāki paraugi no dažādām atrašanās vietām viena pikseļa ietvaros.[3] 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 labot šo sadaļu

  • 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 labot šo sadaļu

Alfa testēšana labot šo sadaļu

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ī.[4]

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.[5] 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.[6]

Robojumi labot šo sadaļu

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 labot šo sadaļu

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.[7] 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 labot šo sadaļu

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.[8]

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 labot šo sadaļu

  1. GL_ARB_multisample specifikācija. Apskatīts 28-05-2019.
  2. OpenGL 1.5 specifikācija (PDF). Arhivēts 2019. gada 29. maijā, Wayback Machine vietnē. Apskatīts 28-05-2019.
  3. ". ARVI VR. 14.09.2018. Apskatīts 29-05-2019.
  4. Unity3d.com. 15-04-2019. Apskatīts 30-05-2019.
  5. Alt.3dcenter.org. Apskatīts 30-05-2019.
  6. Nhancer.com. 2009. Apskatīts 30-05-2019.
  7. Matt Pettineo. [1]. Apskatīts 30-05-2019.
  8. Alt.3dcenter.org. Apskatīts 30-05-2019.