Prostorová okluze obrazovky - Screen space ambient occlusion
![]() | tento článek může být pro většinu čtenářů příliš technická na to, aby tomu rozuměli. Prosím pomozte to vylepšit na aby to bylo srozumitelné pro neodborníky, aniž by byly odstraněny technické podrobnosti. (Červenec 2020) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) |
Prostorová okluze obrazovky (SSAO) je počítačová grafika technika pro efektivní aproximaci ambient occlusion efekt v reálném čase. Byl vyvinut Vladimírem Kajalinem při práci v Krytek a byl poprvé použit v roce 2007 videohrou krize, také vyvinutý společností Crytek.
Implementace
![](http://upload.wikimedia.org/wikipedia/commons/thumb/8/8b/Screen_space_ambient_occlusion.jpg/250px-Screen_space_ambient_occlusion.jpg)
Algoritmus je implementován jako shader pixelů analyzuje scénu hloubkový nárazník který je uložen ve struktuře. Pro každého pixel na obrazovce pixelový shader vzorkuje hodnoty hloubky kolem aktuálního pixelu a pokouší se vypočítat míru okluze z každého ze vzorkovaných bodů. Ve své nejjednodušší implementaci faktor okluze závisí pouze na rozdílu hloubky mezi vzorkovaným bodem a aktuálním bodem.
Bez dalších chytrých řešení by taková metoda hrubé síly vyžadovala asi 200 přečtení textury na pixel pro dobrou vizuální kvalitu. To není přijatelné pro vykreslování v reálném čase na současném grafickém hardwaru. Za účelem získání vysoce kvalitních výsledků s mnohem menším počtem čtení se vzorkování provádí pomocí náhodně otočeného jádro. Orientace jádra se opakuje každý N pixely obrazovky, aby měl výsledný obraz pouze vysokofrekvenční šum. Nakonec je tento vysokofrekvenční šum značně odstraněn a NXN krok rozmazání po procesu s přihlédnutím k hloubkovým diskontinuitám (pomocí metod, jako je porovnání sousedních normálů a hloubek). Takové řešení umožňuje snížení počtu vzorků hloubky na pixel na přibližně 16 nebo méně při zachování vysoce kvalitního výsledku a umožňuje použití SSAO v měkkých aplikacích v reálném čase, jako jsou počítačové hry.
Ve srovnání s ostatními ambient occlusion řešení, SSAO má následující výhody:
- Nezávisle na složitosti scény.
- Není nutné žádné předběžné zpracování dat, žádná doba načítání a žádná alokace paměti v systémové paměti.
- Funguje s dynamickými scénami.
- Funguje stejným konzistentním způsobem pro každý pixel na obrazovce.
- Ne procesor použití - lze jej zcela spustit na GPU.
- Může být snadno integrován do jakéhokoli moderního grafického kanálu.
SSAO má také následující nevýhody:
- Spíše lokální a v mnoha případech závislý na pohledu, protože závisí na sousedních hloubkách texelu, které mohou být generovány jakoukoli geometrií.
- Je těžké správně vyhladit / rozostřit šum bez narušení hloubkových nespojitostí, jako jsou hrany objektů (okluze by neměla „krvácet“ na objekty).
Viz také
- Směrová okluze obrazovky (SSDO)[1]
Reference
- ^ Tobias Ritschel; Thorsten Grosch; Hans-Peter Seidel (2009). „Aproximace dynamického globálního osvětlení v obrazovém prostoru“. Proceedings ACM SIGGRAPH Symposium on Interactive 3D Graphics and Games. Citováno 25. listopadu 2015.
externí odkazy
- Finding Next Gen - CryEngine 2
- Video zobrazující SSAO v akci
- Vylepšení obrazu pomocí Unsharp Masking the Depth Buffer
- Hardwarově akcelerované techniky okolní okluze na GPU
- Přehled technik okolní okluze na obrazovce
- Okolní okluze založená na hloubkové vyrovnávací paměti v reálném čase
- Zdrojový kód shaderu SSAO použitého v Crysis
- Aproximace dynamického globálního osvětlení v obrazovém prostoru
- Kumulativní prostorová okolní okluze
- NVIDIA integrovala SSAO do ovladačů
- Několik metod SSAO je popsáno v knize ShaderX7
- SSAO Shader (rusky)
- Výukový program SSAO, rozšíření techniky používané v Crysis