Mikä on kaavainpuskuri?

Tietokonegrafiikan ohjelmoinnissa kaavainpuskuri on muistialue, joka voidaan vetää muihin grafiikkapuskureihin ja käyttää niitä suhteessa erilaisten tehosteiden saavuttamiseksi tai kohtauksen alueiden peittämiseksi, jotta niitä ei käsitellä tai renderöidä. Stencilipuskuri on mustavalkoisen kuvan kaltainen kuvapistepuskuri, jossa jokainen puskurin sijainti voi sisältää arvon, joka on useimmiten enintään 1 tavu, mutta voi olla jopa 1 bitti. Puskuri oli alun perin suunniteltu toimimaan todellisena tai vääränä naamiona, aivan kuten reaalimaailman kaavain, joten kohtauksen alueet voitaisiin peittää tai jättää huomiotta asettamalla kaavainpuskurin eri alueiden arvot muuhun kuin nollaan. Puskurilla on useita käyttötarkoituksia yksinkertaisen peittämisen lisäksi, mukaan lukien varjotilavuuden piirtäminen, halojen toteuttaminen esineiden ympärille tai alueiden paikantaminen, joilla objektit ovat päällekkäin. Monissa tapauksissa puskuri säilytetään näytönohjaimen grafiikkamuistissa, joten sitä voidaan käyttää nopeasti renderöinnin aikana.

Kaavainpuskurin käsite oli alun perin tapa luoda kaksiulotteinen (2D) maski, jota voitaisiin soveltaa kolmiulotteiseen (3D) -näkymään, kun kärjet liikkuivat grafiikkaputken läpi. Jos rasteroidun 3D -kärjen sijainti liittyy kaavainpuskurin alueeseen, jota ei ole asetettu nollaan, kyseinen kärki voidaan jättää huomiotta ja muu sen putkilinjan käsittely ohitetaan. Tämä antoi ohjelmoijille mahdollisuuden renderoida vain pieniä osia kohtauksesta tai tehdä kuvasta epäsäännöllisen muotoisen näkymän, kuten heijastuksen pienessä peilissä suuremmassa kohtauksessa, jossa peilin muoto piirretään kaavaimena puskuri, ja sitten heijastus vedetään tämän muodon läpi.

Muistihäiriöt johtivat siihen, että kaavainpuskurin alkuperäinen muoto oli yhden bitin arvojen ruudukko, jossa jokainen puskurin pikseli voi olla vain tosi tai epätosi. Näytönohjainten kehittyessä useimmat puskurit pystyivät pitämään täyden tavun arvon jokaisessa pikselipaikassa, jolloin ohjelmoijilla oli monimutkaisempia arvoja paikassa. Tämän avulla puskuria voidaan käyttää havaitsemaan alueet, joilla objektit ovat päällekkäisiä, mikä voidaan tehdä lisäämällä puskurin arvoa paikassa, jos kohde vie kyseisen pikselin ruudulla, kun se on rasteroitu. Tämän toimenpiteen jälkeen puskurin jokaisen pikselin sijainnin arvo on sama kuin pikselin ylittävien objektien määrä näytöllä.

Yksi kaavainpuskurin suosituimmista käyttötavoista on äänenvoimakkuuden luominen. Tämä voidaan tehdä renderöimällä ensin kohtaus erittäin himmeällä valaistuksella, joten kaikki näyttää olevan varjostettu. Seuraavaksi suoritetaan laskelmia kaikkien valonlähteen valaamien monikulmion pintojen sijainnin määrittämiseksi ja nämä muodot siirretään kaavainpuskuriin. Kohtaus renderöidään uudelleen ikään kuin jokainen kohde olisi täysin valaistu ja se sekoitettaisiin kaavainmuotojen läpi varjostettuun kohtaukseen, jolloin syntyy kuva, joka näyttää sisältävän varjoja sisältäviä esineitä.