The advances in graphics hardware have continually introduced the new capabilities that can improve the quality of generated images as well as reduce the time required to render them. Surface shading and visibility queries are core operations in rendering, and some of the research focuses on optimising them together.
Performing surface shading at visibility samples traditionally ties the shading resolution to the rendering resolution and can produce inaccurate shading in smooth materials with high surface detail. Texture space shading has been suggested as an alternative that decouples shading resolution, locations and evaluation from visibility sampling.
This thesis presents a new algorithm for decoupled shading in texture space based on the sampler feedback DirectX 12 feature that exposes the used texture sampling locations. We use per-frame sampler feedback to drive both shading coverage and resolution on a texture atlas stored in multiple resolutions. We compact the feedback into a shading region queue due to the typical sparsity of the feedback.
We compared our algorithm to a more straight-forward alternative that does not use information about the sampling locations used. We show that our algorithm is faster than the reference in situations where the atlas resolution is copious, or only some of its surfaces are visible.
Grafiikkakiihdyttimien kehitys on tuonut mukanaan uusia mahdollisuuksia parantaa tuotettujen kuvien laatua ja lyhentää niiden piirtämiseen käytettyä aikaa. Pinta-varjostus ja näkyvyyskyselyt ovat renderöinnin keskeisiä operaatioita, joita osa alan tutkimuksesta pyrkii optimoimaan yhdessä.
Pintojen varjostus näkyvyysnäytteissä sitoo varjostustarkkuuden perinteisesti näkyvyysnäytteiden tarkkuuteen sekä voi aiheuttaa epätarkkoja varjostustuloksia kiiltävissä pinnoissa, joilla on voimakkaat pinnanmuodot. Pinta-avaruusvarjostusta on ehdotettu vaihtoehdoksi, joka kytkee varjostustarkkuuden, -sijainnit ja -laskennan irti näkyvyysnäytteiden otosta.
Tämä työ esittelee uuden algoritmin, joka suorittaa varjostuksen pinta-avaruudessa hyödyntäen tekstuurinäytteenoton käyttämät näytteenottopaikat paljastavaa sampler feedback -ominaisuutta DirectX 12 -rajapinnassa. Käytämme reaaliaikaista tietoa näytteenottopaikoista sekä varjostuksen peittoon että resoluution ohjaamiseen varjostuskartassa, joka käyttää useita tarkkuustasoja. Tiivistämme tiedon aktiivisista näytteenottopaikoista jonoksi varjostusalueita, sillä näytteenottoalueet ovat tyypillisesti harvassa.
Vertasimme toteutettua algoritmia yksinkertaisempaan vastineeseen, joka ei käytä tietoa käytetyistä näytteenottoalueista. Näytämme toteutetun algoritmin olevan yksinkertaisempaa vaihtoehtoa nopeampi, mikäli varjostuskartan tarkkuus on tarpeettoman suuri tai vain osa sen pinnoista on näkyvissä.