Was ist ein Schablonenpuffer?
Bei der Programmierung von Computergrafiken ist ein Schablonenpuffer ein Speicherbereich, der in Bezug auf andere Grafikpuffer gezeichnet und verwendet werden kann, um andere Effekte zu erzielen, oder um Bereiche einer Szene zu maskieren, damit sie nicht verarbeitet oder gerendert werden. Ein Schablonenpuffer ist ein Pufferspeicher pro Pixel, der einem Schwarzweißbild ähnelt, in dem jede Stelle im Pufferspeicher einen Wert enthalten kann, der meistens höchstens 1 Byte lang ist, aber nur 1 Bit groß sein kann. Der Puffer sollte ursprünglich als echte oder falsche Maske fungieren, ähnlich wie eine Schablone aus der realen Welt, sodass Bereiche einer Szene verdeckt oder ignoriert werden können, indem die Werte verschiedener Bereiche des Schablonenpuffers auf einen anderen Wert als Null gesetzt werden. Es gibt eine Reihe von Verwendungsmöglichkeiten für den Puffer, die über die einfache Maskierung hinausgehen, darunter das Zeichnen eines Schattenvolumens, das Implementieren von Lichthöfen um Objekte oder das Lokalisieren von Bereichen, in denen sich Objekte überlappen. In vielen Fällen befindet sich der Puffer im Grafikspeicher einer Grafikkarte, sodass während des Renderns schnell darauf zugegriffen werden kann.
Das Konzept eines Schablonenpuffers war ursprünglich eine Möglichkeit, eine zweidimensionale (2D) Maske zu erstellen, die auf eine dreidimensionale (3D) Szene angewendet werden kann, wenn sich die Scheitelpunkte durch die Grafikpipeline bewegen. Wenn sich die Position des 3D-Scheitelpunkts nach dem Rastern auf einen Bereich des Schablonenpuffers bezieht, der nicht auf Null gesetzt wurde, kann dieser Scheitelpunkt ignoriert und der Rest seiner Pipeline-Verarbeitung übersprungen werden. Dies ermöglichte es Programmierern, nur kleine Teile einer Szene oder ein Bild in einem unregelmäßig geformten Ansichtsfenster zu rendern, z. B. eine Reflexion in einem kleinen Spiegel in einer größeren Szene, in der die Form des Spiegels als Schablone in das Bild gezeichnet wird Puffer, und dann wird die Reflexion durch diese Form gezogen.
Speicherbedenken führten dazu, dass die ursprüngliche Form eines Schablonenpuffers ein Raster von Einzelbitwerten war, in dem jedes Pixel im Puffer nur wahr oder falsch sein konnte. Bei der Entwicklung von Grafikkarten konnten die meisten Puffer an jedem Pixelort einen Vollbyte-Wert speichern, sodass Programmierer komplexere Werte an einem Ort haben konnten. Auf diese Weise kann der Puffer zum Erkennen von Bereichen verwendet werden, in denen sich Objekte überlappen. Dies kann durch Erhöhen des Pufferwerts an einer Position erfolgen, wenn ein Objekt dieses Pixel auf dem Bildschirm belegt, wenn es gerastert wird. Nach dieser Operation entspricht der Wert jeder Pixelposition im Puffer der Anzahl der Objekte, die dieses Pixel auf einem Bildschirm überqueren.
Eine der beliebtesten Anwendungen für einen Schablonenpuffer ist das Erstellen von Volumenschatten. Dies kann geschehen, indem zuerst eine Szene mit sehr schwachem Licht gerendert wird, so dass alles schattiert erscheint. Als nächstes werden Berechnungen durchgeführt, um die Position aller Polygonflächen in der Szene zu bestimmen, die von einer Lichtquelle beleuchtet werden, und diese Formen werden in den Schablonenpuffer übertragen. Die Szene wird erneut gerendert, als ob jedes Objekt vollständig beleuchtet und durch die Schablonenformen auf die schattierte Szene überblendet wäre. Auf diese Weise wird ein Bild erstellt, das Objekte mit Schatten zu enthalten scheint.