Vzorkování je diskretizační chyba zpracování rastrového obrazu, kterou znáš také pod názvem aliasing a jeho řešení spadá pod obor zpracování rastrového obrazu v počítačové grafice. Původ to má v převodu analogového signálu na digitální a souvisí s tím
Shannonův vzorkovací teorém, který říká, že
„přesná rekonstrukce spojitého, frekvenčně omezeného signálu z jeho vzorků je možná tehdy, pokud byla vzorkovací frekvence vyšší než dvojnásobek nejvyšší harmonické složky vzorkovaného signálu.“ (tj. nejmenší detail nesmí být menší než jeden pixel).
Aliasing se řeší pomocí konvolučních metod zpracování rastrového obrázků. Obraz se převede na matici (podle toho, v jakém barevném modelu pixely jsou, nejčastěji dnes RGB, na obrázku je model černobílý), aplikuje se konvoluční maska (neboli konvoluční jádro - např. vhodným řešením je maska s váženým průměrem okolí daného pixelů) a výsledkem je zpracovaný obraz s (pro nás) "opravenými" pixely.
MSAA není nic jiného, než podobný princip opakovaný x-krát (4x/8x).
Nejjednodušší je ukázat si to buď na přímce nebo na jednoduchém konvexním 2D objektu.
https://learnopengl.com/Advanced-OpenGL/Anti-AliasingTady to je pěkně ukázané, obrázky s trojúhelníkem.
Existují i další metody anti-aliasingu.
FXAA (fast approximate aa) funguje trošku jinak, je rychlejší a nevyžaduje tolik výpočetního výkonu.
SSAA je prapůvodní přeškálování rastrového obrazu třeba na dvojnásobné rozlišení a vracení ho zpět na rozlišení tvého monitoru. Toto je výpočetně
nejnáročnější řešení a v praxi takřka nepoužívané. Další metody, jako
TXAA (jen nVidia) či
SMAA jsou jen dalšími algoritmy, které řeší jak kvalitu výsledného obrazu, tak výpočetní náročnost.
Takhle jsem ti do tří odstavců shrnul zhruba to, co jinak řeší jedna vysokoškolská přednáška, samozřejmě trošku víc do hloubky.
Kdybych to měl seřadit od nejnáročnější po nejjednodušší/nejlepší výsledek a nejhorší výsledek, tak asi takto:
SSAA -> MSAA > TXAA -> SMAA -> FXAAAnisotropic filtering (anizotropní filtrování) opět souvisí se zpracováním rastrového obrazu, ovšem vysvětlení by asi zabralo trochu více času, než chci tomuto příspěvku věnovat (navíc by to bylo asi zbytečné). Stačí ti asi vědět, že pokud se ve hře díváš do dálky, tak vidíš, že se vzdáleností se zvyšuje rozmazání textur. S tímto opět souvisí diskretizační chyba, ale i pojmy jako LOD nebo mip mapping.
V praxi je Anisotropic filtering považován za podstatně lepší, než v historii užívané metody bilinear a trilinear filtering. Vliv na výkon s dnešními grafickými čipy je naprosto minimální. To samé se ovšem nedá říct o metodách anti-aliasingu, kdy výpočetní náročnost je skutečně vysoká. Zejména u metody MSAA či SSAA.
Co z toho vyplývá? Anisotropic filtering si dej klidně na max, moc tím neztratíš. Algoritmy anti-aliasingu zvol podle toho, jak ti hra běží a jak vypadá. Jestli běží skvěle a máš vysoké FPS, přidej na MSAAx2 nebo MSAAx4. Pokud běží na pytel, tak dnešní hry mají i ty jednodušší anti-aliasingy (FXAA, SMAA, TXAA). V nastavení ovládače bych se hrabal jenom v případě, že to ty hry, které hraješ, nemají implementovány, nebo si s tím chceš hrát.
