Što je pufer za šablone?

U programiranju računalne grafike, međuspremnik šablona je područje memorije koje se može nacrtati i koristiti u odnosu na druge grafičke međuspremnike za postizanje različitih učinaka ili za maskiranje područja scene kako se ne bi obrađivala ili prikazivala. Međuspremnik šablona je međuspremnik po pikselu sličan crno-bijeloj slici, u kojem svako mjesto u međuspremniku može sadržavati vrijednost koja je najčešće duga najviše 1 bajt, ali može biti i 1 bit. Međuspremnik je izvorno bio dizajniran da djeluje kao istinita ili lažna maska, slično kao šablona u stvarnom svijetu, tako da se područja scene mogu prikriti ili zanemariti postavljanjem vrijednosti različitih regija međuspremnika šablona na vrijednost različitu od nule. Postoji niz namjena za međuspremnik izvan jednostavnog maskiranja, uključujući crtanje volumena sjene, implementaciju aureola oko objekata ili lociranje područja u kojima se objekti preklapaju jedan s drugim. U mnogim slučajevima, međuspremnik se održava u grafičkoj memoriji na grafičkoj kartici tako da mu se može brzo pristupiti tijekom renderiranja.

Koncept međuspremnika šablona izvorno je bio način stvaranja dvodimenzionalne (2D) maske koja se može primijeniti na trodimenzionalnu (3D) scenu dok se vrhovi kreću kroz grafički cjevovod. Ako se lokacija 3D vrha, nakon rasteriziranja, odnosi na područje međuspremnika šablone koje nije postavljeno na nulu, tada bi se taj vrh mogao zanemariti i ostatak njegove obrade cjevovoda preskočiti. To je programerima omogućilo način da renderiraju samo male dijelove scene ili da pretvore sliku u prikaz nepravilnog oblika, kao što je odraz u malom zrcalu unutar veće scene, gdje je oblik zrcala nacrtan kao matrica u tampon, a zatim se refleksija provlači kroz taj oblik.

Problemi s memorijom doveli su do toga da je izvorni oblik međuspremnika šablona bio mreža jednobitnih vrijednosti u kojoj je svaki piksel u međuspremniku mogao biti samo istinit ili netočan. Kako su se grafičke kartice razvijale, većina međuspremnika je postala sposobna zadržati punu vrijednost bajta na svakom mjestu piksela, što je programerima omogućilo da imaju složenije vrijednosti na lokaciji. To može omogućiti korištenje međuspremnika za otkrivanje područja u kojima se objekti preklapaju, što se može učiniti povećanjem vrijednosti međuspremnika na lokaciji ako objekt zauzima taj piksel na zaslonu kada se rasterizira. Nakon ove operacije, vrijednost svake lokacije piksela u međuspremniku bit će jednaka broju objekata koji prelaze taj piksel na ekranu.

Jedna od najpopularnijih upotreba pufera za šablone je stvaranje volumenskih sjena. To se može učiniti tako da se prvo prikaže scena s vrlo slabim osvjetljenjem tako da se čini da je sve zasjenjeno. Zatim se izvode proračuni kako bi se odredio položaj svih poligonskih površina u sceni koje su osvijetljene izvorom svjetlosti, a ti se oblici prenose u pufer šablona. Scena se ponovno prikazuje kao da je svaki objekt potpuno osvijetljen i uklopljena je kroz oblike šablona u zasjenjenu scenu, učinkovito stvarajući sliku koja izgleda kao da sadrži objekte sa sjenama.