SSAO ( engelsk screen space ambient occlusion - obstruction of ambient light in screen space ) är en mjukvaruteknik (metod) i tredimensionell datorgrafik , som är en ungefärlig imitation av global belysning och är en modifierad och förbättrad version av Ambient occlusion- tekniken . SSAO-algoritmen fungerar i realtid och simulerar diffus indirekt belysning och motsvarande mörkläggning i ett virtuellt 3D-rum.
SSAO utvecklades av forsknings- och utvecklingsavdelningen på det tyska företaget Crytek samtidigt som de utvecklade grafikkomponenterna i spelmotorn CryEngine 2 . [1] Crysis , det första CryEngine 2-spelet utvecklat av Crytek och släpptes hösten 2007, var det första som använde SSAO. Senare användes denna algoritm och dess modifieringar i många spelmotorer, inklusive Leadwerks Engine , Dagor Engine , Unreal Engine , Unity , X-Ray , Glacier 2 och andra.
SSAO-algoritmen körs på grafikkortets grafikprocessor och är implementerad som en pixelskuggning som analyserar scenens djupbuffert ( Z-buffert ), som lagras i texturen .
När den omgivande ocklusionsalgoritmen körs samplar pixelskuggningen djupvärdet för varje pixel på skärmen runt den aktuella pixeln och försöker beräkna antalet ocklusioner från var och en av de valda punkterna. I sin enklaste implementering beror ocklusionsfaktorn endast på djupskillnaden mellan den valda punkten och den aktuella punkten. Utan ytterligare avancerade lösningar och algoritmer skulle denna direktlösning kräva cirka 200 texturavläsningar per pixel för god visuell kvalitet. Detta nummer är inte acceptabelt för realtidsrendering på moderna GPU:er.
SSAO-algoritmen syftar till att förenkla beräkningskomplexiteten hos Ambient-ocklusionsalgoritmen och göra den lämplig för realtidsdrift på GPU:er. Kvaliteten på den resulterande bilden i SSAO är dock sämre än i den ursprungliga Ambient-ocklusionen, eftersom SSAO använder approximerande (approximerande) renderingstekniker.
För att skapa en omgivande ocklusion av skärmutrymmet måste du ha två scenstrukturer:
Därefter tas positionskarta och normalkarta för varje texel på skärmen och närliggande texel bearbetas. I förhållande till positionerna för angränsande texels till den som bearbetas, tilldelas den en viss nivå av "skuggning".
För resultat av hög kvalitet med mycket färre texturavläsningar än Ambient-ocklusion, använder SSAO sampling i kombination med en slumpmässigt roterad kärna. Kärnorienteringen upprepas var N pixel på skärmen för att endast ha högfrekvent distorsion i den slutliga bilden. I slutet tas denna högfrekventa distorsion bort med NxN antal postprocessorpass, vilket gör bilden suddig ( English Blur ). Detta tar hänsyn till djupet av oegentligheter, med hjälp av metoder som att jämföra angränsande normaler och djup. Denna lösning gör att antalet djupsamplingar per pixel kan reduceras till cirka 16 eller mindre, samtidigt som det ger ett resultat av hög kvalitet och tillåter att SSAO kan användas i realtidsapplikationer som datorspel.
Jämfört med andra Ambient-ocklusionsmodellalgoritmer har SSAO följande fördelar:
Tillsammans med fördelarna med SSAO-algoritmen finns det också nackdelar: