Wat is een stencilbuffer?

In computerafbeeldingen programmeren is een stencilbuffer een geheugengebied dat kan worden aangetrokken en gebruikt in relatie tot andere grafische buffers om verschillende effecten te bereiken, of om gebieden van een scène te maskeren, zodat ze niet worden verwerkt of weergegeven. Een stencilbuffer is een buffer per pixel vergelijkbaar met een zwart-witafbeelding, waarin elke locatie in de buffer een waarde kan bevatten die meestal 1 byte lang is, maar zo klein als 1 bit kan zijn. De buffer is oorspronkelijk ontworpen om te fungeren als een waar of vals masker, net als een real-world stencil, zodat gebieden van een scène kunnen worden verdoezeld of genegeerd door de waarden van verschillende regio's van de stencilbuffer in te stellen op een andere waarde dan nul. Er zijn een aantal toepassingen voor de buffer die verder gaat dan eenvoudige maskering, inclusief het tekenen van een schaduwvolume, het implementeren van halo's rond objecten of het lokaliseren van gebieden waar objecten elkaar overlappen. In veel gevallen wordt de buffer in het grafische geheugen op een grafische kaart gehandhaafd, zodat deze snel toegankelijk is tijdens Rendering.

Het concept van een stencilbuffer was oorspronkelijk een manier om een ​​tweedimensionaal (2D) masker te maken dat kon worden toegepast op een driedimensionale (3D) scene terwijl de hoekpunten door de grafische pijplijn bewogen. Als de locatie van het 3D -hoekpunt, eenmaal rasterde, gerelateerd aan een deel van de stencilbuffer die niet op nul was ingesteld, dan kon dat hoekpunt worden genegeerd en de rest van de pijplijnverwerking overgeslagen. Hierdoor lieten programmeurs een manier toe om slechts kleine delen van een scène te maken of een afbeelding weer te geven in een onregelmatig gevormde viewport, zoals een reflectie in een kleine spiegel in een grotere scène, waarbij de vorm van de spiegel wordt getekend als een stencil in de buffer, en dan wordt de reflectie door die vorm getrokken.

geheugenproblemen leidden ertoe dat de oorspronkelijke vorm van een stencilbuffer een raster was van enkele bit waarden waarin elke pixel in de buffer alleen waar of onwaar kon zijn. Naarmate grafische kaarten zich ontwikkelenED konden de meeste buffers een volledige byte -waarde vasthouden op elke pixellocatie, waardoor programmeurs meer complexe waarden op een locatie konden hebben. Hierdoor kan de buffer worden gebruikt om gebieden te detecteren waar objecten elkaar overlappen, wat kan worden gedaan door de waarde van de buffer op een locatie te verhogen als een object die pixel op het scherm bezet wanneer het wordt gerasterd. Na deze bewerking is de waarde van elke pixellocatie in de buffer gelijk aan het aantal objecten dat die pixel op een scherm kruist.

Een van de meest populaire toepassingen voor een stencilbuffer is het creëren van volume -schaduwen. Dit kan worden gedaan door eerst een scène met zeer vage verlichting weer te geven, zodat alles in de schaduw lijkt te zijn. Vervolgens worden berekeningen gemaakt om de locatie van alle polygoonoppervlakken in de scène te bepalen die worden verlicht door een lichtbron, en deze vormen worden overgebracht naar de stencilbuffer. De scène wordt opnieuw weergegeven alsof elk object volledig verlicht is en wordt gemengd door de stencilvormen op de schaduwde scène, EFfectief maken van een afbeelding die objecten met schaduwen lijkt te bevatten.

ANDERE TALEN