Mis on šabloonipuhver?

Arvutigraafika programmeerimisel on šabloonpuhver mäluala, mida saab tõmmata ja kasutada koos teiste graafikapuhvritega, et saavutada erinevaid efekte või maskeerida stseeni alasid, et neid ei töödeldaks ega renderdataks. Šabloonpuhver on mustvalge kujutisega sarnane pikslipõhine puhver, mille igas asukohas puhvris võib olla väärtus, mis on enamasti maksimaalselt 1 bait pikk, kuid võib olla kuni 1 bitt. Algselt kavandati puhver toimima tõese või vale maskina, sarnaselt reaalse maailma šablooniga, nii et stseeni alasid saab varjata või ignoreerida, kui määrate šabloonpuhvri erinevate piirkondade väärtused nullist erinevale väärtusele. Lisaks lihtsale maskeerimisele on puhvril mitmeid kasutusviise, sealhulgas varjumahu joonistamine, objektide ümber halode loomine või objektide üksteisega kattuvad alad. Paljudel juhtudel hoitakse puhvrit graafikakaardi graafikamälus, et sellele saaks renderdamise ajal kiiresti juurde pääseda.

Trafarettpuhvri kontseptsioon oli algselt viis kahemõõtmelise (2D) maski loomiseks, mida saaks rakendada kolmemõõtmelisele (3D) stseenile, kui tipud liiguvad läbi graafikakonveieri. Kui 3D-tipu asukoht pärast rasterdamist on seotud šabloonipuhvri alaga, mis ei olnud nulliks seatud, võib seda tippu ignoreerida ja ülejäänud konveieri töötlemine vahele jätta. See võimaldas programmeerijatel renderdada ainult väikseid stseeni osi või renderdada pilt ebakorrapärase kujuga vaateaknasse, näiteks peegeldus väikeses peeglis suuremas stseenis, kus peegli kuju joonistatakse šabloonina puhver ja seejärel joonistatakse peegeldus läbi selle kujundi.

Mäluprobleemid viisid selleni, et šabloonpuhvri algkuju oli ühebitiste väärtuste ruudustik, milles iga puhvri piksel sai olla ainult tõene või väär. Graafikakaartide arenedes suutsid enamik puhvreid hoida igas piksli asukohas täisbaidiväärtust, võimaldades programmeerijatel omada asukohas keerukamaid väärtusi. See võimaldab puhvrit kasutada objektide kattumise alade tuvastamiseks, mida saab teha puhvri väärtust suurendades kohas, kui objekt hõivab rasterdamisel selle piksli ekraanil. Pärast seda toimingut võrdub iga piksli asukoha väärtus puhvris objektide arvuga, mis seda pikslit ekraanil ületavad.

Šabloonpuhvri üks populaarsemaid kasutusviise on helitugevuse varjude loomine. Seda saab teha, renderdades esmalt stseeni väga hämara valgustusega, nii et kõik näib olevat varjutatud. Järgmisena tehakse arvutused, et määrata kindlaks kõigi valgusallikaga valgustatud hulknurga pindade asukoht stseenis ja need kujundid kantakse üle šabloonipuhvrisse. Stseen renderdatakse uuesti nii, nagu oleks iga objekt täielikult valgustatud, ja segatakse läbi šabloonkujude varjutatud stseenile, luues tõhusalt pildi, mis näib sisaldavat varjudega objekte.