Snabb ungefärlig kantutjämning

Fast approximativ kantutjämning ( FXAA ) är en kantutjämningsalgoritm för skärmutrymme skapad av Timothy Lottes på Nvidia .

FXAA 3 släpps under en allmän egendomslicens. En senare version, FXAA 3.11, släpps under en 3-klausul BSD-licens.

Algoritmbeskrivning

  1. Indata är den renderade bilden och eventuellt luminansdata.
  2. Skaffa luminansdata. Dessa data kan överföras till FXAA-algoritmen från renderingssteget som en alfakanal inbäddad i bilden som ska kantutjämnas, beräknas från den renderade bilden eller approximeras genom att använda den gröna kanalen som luminansdata.
  3. Hitta pixlar med hög kontrast genom att använda ett högpassfilter som använder luminansdata. Lågkontrastpixlar som hittas utesluts från att ytterligare ändras av FXAA. Högpassfiltret som utesluter pixlar med låg kontrast kan ställas in för att balansera hastighet och känslighet.
  4. Använd kontrast mellan intilliggande pixlar för att heuristiskt hitta kanter och avgöra om kanterna är i horisontella eller vertikala riktningar. Blandningsriktningen för en pixel kommer att vara vinkelrät mot den detekterade kantriktningen på den pixeln.
  5. Beräkna en blandningsfaktor för en pixel med hög kontrast genom att analysera luminansdata i 3x3-rutnätet av pixlar med pixeln i fråga som mittpixeln.
  6. Sök längs den detekterade kanten för att avgöra hur länge den kanten sträcker sig och vilken riktning den faktiska kanten går när den detekterade horisontella eller vertikala kanten slutar för att ta hänsyn till den faktiska kantens riktning för att beräkna en andra blandningsfaktor. Detta steg kan ställas in för mer kvalitet genom att öka sökupplösningen och hur långt sökningen går innan sökningen efter kantens ände ger upp, eller för mer hastighet genom att minska båda.
  7. Blanda pixeln med den valda blandningsriktningen och det maximala av båda blandningsfaktorerna som beräknades.

Jämförelse

Den största fördelen med denna teknik jämfört med konventionell rumslig kantutjämning är att den inte kräver stora mängder datorkraft . Den uppnår detta genom att jämna ut oönskade ojämna kanter (" jaggies ") som pixlar , enligt hur de visas på skärmen, snarare än att analysera själva 3D-modellen , som i konventionell rumslig kantutjämning. Eftersom den inte är baserad på den faktiska geometrin kommer den inte bara att jämna ut kanter mellan trianglar, utan även kanter inuti alfablandade texturer eller de som är resultatet av pixelshader -effekter, som är immuna mot effekterna av multisample anti-aliasing (MSAA) .

Nackdelarna är att texturkartor med hög kontrast är suddiga, att FXAA måste tillämpas innan HUD- elementen i ett spel renderas så att det inte påverkar dem också, och att polygonala detaljer mindre än en pixel som skulle ha fångats och renderats av MSAA och SSAA inte kan fångas och återges av FXAA enbart.

Se även