Hvad er en stencilbuffer?
I programmering af computergrafik er en stencilbuffer et hukommelsesområde, der kan drages til og bruges i relation til andre grafikbuffere for at opnå forskellige effekter eller til at maskere områder af en scene, så de ikke bliver behandlet eller gengivet. En stencilbuffer er en per-pixel-puffer, der ligner et sort / hvidt billede, hvor hver placering i bufferen kan have en værdi, der oftest er 1 byte med højst, men kan være så lille som 1 bit. Bufferen blev oprindeligt designet til at fungere som en ægte eller falsk maske, ligesom en virkelig stencil, så områder af en scene kunne skjules eller ignoreres ved at indstille værdierne i forskellige regioner i stencilbufferen til en anden værdi end nul. Der er en række anvendelser til bufferen ud over simpel maskering, herunder tegning af en skyggevolumen, implementering af haloer omkring genstande eller lokalisering af områder, hvor genstande overlapper hinanden. I mange tilfælde opretholdes bufferen i grafikhukommelsen på et grafikkort, så det kan fås hurtigt adgang til Rendering.
Begrebet en stencilbuffer oprindeligt var en måde at skabe en to-dimensionel (2D) maske, der kunne påføres en tredimensionel (3D) scene, da vertikaterne bevægede sig gennem grafikpipelinjen. Hvis placeringen af 3D -toppunktet, når den først var rasteret, relateret til et område af stencilbufferen, der ikke var indstillet til nul, kunne det toppunktet ignoreres og resten af dens rørledningsbehandling sprang over. Dette gjorde det muligt for programmerere en måde at gengive kun små dele af en scene eller gengive et billede til en uregelmæssigt formet udsigt, såsom en refleksion i et lille spejl inden for en større scene, hvor formen på spejlet tegnes som en stencil i bufferen, og derefter refleksionen trækkes gennem den form.
Hukommelsesproblemer førte til, at den originale form af en stencilbuffer var et gitter af enkeltbit-værdier, hvor hver pixel i bufferen kun kunne være sand eller falsk. Når grafikkort udvikler sigED, de fleste buffere blev i stand til at holde en fuld byte -værdi på hver Pixel -placering, hvilket gjorde det muligt for programmerere at have mere komplekse værdier på et sted. Dette kan tillade, at bufferen bruges til at detektere områder, hvor objekter overlapper hinanden, hvilket kan gøres ved at øge værdien af bufferen på et sted, hvis et objekt optager den pixel på skærmen, når det rasteriseres. Efter denne operation vil værdien af hver pixelplacering i bufferen svare til antallet af objekter, der krydser den pixel på en skærm.
En af de mest populære anvendelser til en stencilbuffer er at skabe volumenskygger. Dette kan gøres ved først at gengive en scene med meget svag belysning, så alt ser ud til at være skygge. Dernæst foretages beregninger for at bestemme placeringen af alle polygonoverflader i scenen, der er oplyst af en lyskilde, og disse former overføres til stencilbufferen. Scenen gengives igen, som om ethvert objekt er fuldt oplyst og blandes gennem stencilformerne på den skyggefulde scene, EFOprettelse af et billede, der ser ud til at indeholde objekter med skygger.