A valós idejű árnyékok leképzése tekinthető a számítógépes grafika egyik legproblémásabb területének, hiszen annyi tényezőt kell figyelembe venni, hogy nehéz tökéletes minőséget alkotni, gyors megoldással pedig pláne komplikált előállni. A legtöbb mai játék egységes árnyékszűrőket használ, amivel nem igazán lehet fizikailag korrekt árnyékolást létrehozni. Ez abban nyilvánul meg, hogy az árnyék szélének úgymond elmosódása mindig ugyanolyan, így az nem függ a fényforrás és az objektum távolságától. Pedig a valóságban az objektumhoz közeli árnyékrészlet széle viszonylag élesnek mondható, míg a távolodva egyre lágyabb lesz.
Hirdetés
Az előbbi bekezdésben részletezett problémára megoldás a percentage-closer soft shadows eljárás, amire 2005-ben jelent meg az első implementáció, mely Randima Fernando nevéhez fűződik, aki akkoriban még az NVIDIA-nak dolgozott. Sajnos ez abszolút nem terjedt el, ami egyrészt azzal magyarázható, hogy az akkori hardvereken extrém magasnak számított az erőforrásigénye, másrészt a diszkrét valószínűségi eloszlásra alapozó mintavételezésből fakadóan az árnyékok megjelenítésébe hibák is kerültek. Maga a koncepció azonban úttörő volt, és a grafikus processzorok fejlődésével megnyílt a lehetőség az alkalmazása előtt.
Az AMD által kidolgozott contact hardening shadows tulajdonképpen a percentage-closer soft shadows eljárás utódjának tekinthető. Az alapvető koncepció a két implementáció esetében megegyezik, de a contact hardening shadows jóval gyorsabban fut, mivel compute shadert használ a számításokhoz, aminek hála csupán az algoritmusban történő változás hatására nagyjából hatszoros gyorsulást sikerült felmutatni, illetve a grafikai hibákra is született megoldás. A gyorsuló hardverek mellett az előbbi változások azt eredményezték, hogy a contact hardening shadows egy elterjedt megoldássá vált a játékfejlesztők körében, így a DirectX 11-es API-t használó játékok jó része épít is erre az eljárásra. Ennek hála a felhasználók nem szimplán lágy szélű árnyékokat kapnak, hanem a szélek élessége és elmosódása is változik az objektumtól való távolság hatására.
A fenti képen a contact hardening shadows a gyakorlatban is megfigyelhető. A fa tövében az árnyék széle még kifejezetten éles, míg távolodva már nagyobb az elmosás. A DirectX 10.1-ben implementált algoritmus esetében az árnyék széle mindig ugyanolyan lágy, függetlenül az objektumtól való távolságtól.