Hva er en sjablongbuffer?

Ved programmering av datamaskingrafikk er en sjablongbuffer et minneområde som kan trekkes til og brukes i forhold til andre grafikkbuffere for å oppnå forskjellige effekter, eller til å maskere områder av en scene slik at de ikke blir behandlet eller gjengitt. En sjablongbuffer er en per-pikselbuffer som ligner på et svart-hvitt bilde, der hvert sted i bufferen kan inneholde en verdi som oftest er 1 byte lang, men kan være så liten som 1 bit. Bufferen ble opprinnelig designet for å fungere som en ekte eller falsk maske, omtrent som en ekte stencil, slik at områder av en scene kunne bli tilslørt eller ignorert ved å sette verdiene til forskjellige regioner av sjablongbufferen til en annen verdi enn null. Det er en rekke bruksområder for bufferen utover enkel maskering, inkludert tegning av et skyggevolum, implementering av glorie rundt objekter eller lokalisering av områder der objekter overlapper hverandre. I mange tilfeller opprettholdes bufferen i grafikkminnet på et grafikkort, slik at du kan få tilgang til det raskt under gjengivelse.

Konseptet med en sjablongbuffer var opprinnelig en måte å lage en todimensjonal (2D) maske som kunne brukes på en tredimensjonal (3D) scene når toppunktene beveget seg gjennom grafikkrørledningen. Hvis plasseringen av 3D-toppunktet, når den først var rasterisert, relatert til et område av sjablongbufferen som ikke var satt til null, kunne dette toppunktet ignoreres og resten av rørledningsbehandlingen hoppet over. Dette tillot programmerere en måte å gjengi bare små deler av en scene eller å gjengi et bilde til et uregelmessig formet utsiktspunkt, for eksempel en refleksjon i et lite speil i en større scene, der speilets form tegnes som en sjablong i buffer, og så trekkes refleksjonen gjennom den formen.

Hukommelsesproblemer førte til at den opprinnelige formen av en sjablongbuffer var et rutenett med enkeltbitsverdier der hver piksel i bufferen bare kunne være sann eller usann. Etter hvert som grafikkort utviklet seg, ble de fleste buffere i stand til å holde en full byteverdi på hvert pixelsted, slik at programmerere kunne ha mer komplekse verdier på et sted. Dette kan tillate at bufferen brukes til å oppdage områder der objekter overlapper hverandre, noe som kan gjøres ved å øke verdien på bufferen på et sted hvis et objekt opptar den pikslen på skjermen når den rasteres. Etter denne operasjonen vil verdien av hver pikselplassering i bufferen være lik antall objekter som krysser pixelen på en skjerm.

En av de mest populære bruksområdene for en sjablongbuffer er å lage volumskygger. Dette kan gjøres ved først å gjengi en scene med veldig svak belysning slik at alt ser ut til å være skyggelagt. Deretter gjøres beregninger for å bestemme plasseringen av alle polygonflatene i scenen som er belyst av en lyskilde, og disse formene overføres til sjablongbufferen. Scenen gjengis igjen som om hvert objekt er helt opplyst og blir blandet gjennom sjablongformene til den skyggelagte scenen, og effektivt skapt et bilde som ser ut til å inneholde objekter med skygger.

ANDRE SPRÅK

Hjalp denne artikkelen deg? Takk for tilbakemeldingen Takk for tilbakemeldingen

Hvordan kan vi hjelpe? Hvordan kan vi hjelpe?