SSAO ( anglicky screen space ambient occlusion - obstruction of ambient light in screen space ) je softwarová technika (metoda) v trojrozměrné počítačové grafice , která je přibližnou imitací globálního osvětlení a je upravenou a vylepšenou verzí techniky Ambient occlusion . . Algoritmus SSAO pracuje v reálném čase a simuluje rozptýlené nepřímé osvětlení a odpovídající ztmavení ve 3D virtuálním prostoru.
SSAO vyvinulo oddělení výzkumu a vývoje německé společnosti Crytek při vývoji grafických komponent herního enginu CryEngine 2 . [1] Crysis , první hra CryEngine 2 vyvinutá společností Crytek a vydaná na podzim roku 2007, byla první, která používala SSAO. Později byl tento algoritmus a jeho modifikace použity v mnoha herních enginech, včetně Leadwerks Engine , Dagor Engine , Unreal Engine , Unity , X-Ray , Glacier 2 a dalších.
Algoritmus SSAO běží na grafickém procesoru grafické karty a je implementován jako pixel shader , který analyzuje hloubkový buffer ( Z-buffer ) scény, který je uložen v textuře .
Při spuštění algoritmu Ambient occlusion, pixel shader vzorkuje hodnotu hloubky pro každý pixel na obrazovce kolem aktuálního pixelu a pokusí se vypočítat počet okluzí z každého z vybraných bodů. Ve své nejjednodušší implementaci závisí faktor okluze pouze na rozdílu hloubky mezi vybraným bodem a aktuálním bodem. Bez dalších pokročilých řešení a algoritmů by toto přímé řešení vyžadovalo přibližně 200 čtení textur na pixel pro dobrou vizuální kvalitu. Toto číslo není přijatelné pro vykreslování v reálném čase na moderních GPU.
Algoritmus SSAO si klade za cíl zjednodušit výpočetní složitost algoritmu Ambient occlusion a učinit jej vhodným pro provoz v reálném čase na GPU. Kvalita výsledného obrazu v SSAO je však horší než v původní Ambient okluzi, protože SSAO používá aproximační (aproximační) techniky vykreslování.
Chcete-li vytvořit prostorovou okluzi obrazovky, musíte mít dvě textury scény:
Poté se vezme mapa polohy a normální mapa každého texelu na obrazovce a zpracují se sousední texely. Ve vztahu k polohám sousedních texelů ke zpracovávanému je mu přiřazena určitá úroveň „stínování“.
Pro vysoce kvalitní výsledky s mnohem menším počtem čtení textur než Ambient occlusion využívá SSAO vzorkování ve spojení s náhodně rotovaným jádrem. Orientace jádra se opakuje každých N pixelů obrazovky, aby výsledný obraz byl pouze vysokofrekvenční zkreslení. Na konci je toto vysokofrekvenční zkreslení odstraněno NxN počtem průchodů postprocesorem, čímž se obraz rozmaže ( anglicky Blur ). To bere v úvahu hloubku nepravidelností pomocí metod, jako je porovnání sousedních normál a hloubek. Toto řešení umožňuje snížit počet vzorků hloubky na pixel na přibližně 16 nebo méně, přičemž stále poskytuje vysoce kvalitní výsledek a umožňuje použití SSAO v aplikacích v reálném čase, jako jsou počítačové hry.
Ve srovnání s jinými algoritmy modelu ambientní okluze má SSAO následující výhody:
Spolu s výhodami algoritmu SSAO existují také nevýhody: