Ich lese das Schablonenwort oft und habe keine Ahnung, wozu es in der Computergrafik wirklich gut ist.
Wenn ich das Bild auf Wikipedia in Schwarzweiß sehe, habe ich immer noch Probleme damit.
Warum verwenden wir eine Schablone oder einen Schablonenpuffer und was ist der Unterschied zu einem Z-Puffer? Warum dieses Wort benutzen, das im Grafikdesign eine Bedeutung zu haben scheint?
Antworten:
In seiner ursprünglichen Inkarnation war ein Schablonenpuffer ein Ein-Bit-pro-Pixel-Framebuffer (dh schwarz oder weiß, aber keine Graustufen). Sie können es wie jeden anderen Framebuffer rendern, was Sie wollen. Später können Sie dann den Inhalt dieses Puffers zum "Schablonieren" oder Ausblenden verwenden, wenn Sie in Ihren regulären Puffer zeichnen.
Ein Beispiel: Nehmen wir an, Sie machen ein Fahrspiel. Sie möchten einen kleinen Rückspiegel auf dem Bildschirm haben, der Ihnen zeigt, was sich hinter dem Auto befindet. Sie müssen eine Ansicht rendern, die hinter das Auto zeigt, aber Sie möchten diese Ansicht nur innerhalb des kleinen abgerundeten Rechtecks des Rückspiegels rendern. Die typische Lösung ist:
Die Schablone maskiert es dann so, dass Sie nur in die Form des Spiegels zeichnen.
Da Render-Pipelines jetzt viel flexibler und programmierbarer sind, werden Schablonenpuffer als allgemeiner 1-Bit-Framebuffer verwendet, mit dem Sie alles tun können, was Sie wollen. Schatten sind ein häufiger Anwendungsfall.
quelle
Neben der bereits diskutierten funktionalen Verwendung von Schablonenpuffern können auch Schablonenpuffer zur Optimierung verwendet werden.
Aufgrund der Position des Schablonentests in der Grafikpipeline ( vor der Pixelschattierung) können mit dem Schablonentest Pixel getötet werden, die starke Schattierungsarbeiten ausführen, wenn sie nicht benötigt werden. Oft kann dies mit einer gröberen Granularität als nur einem einzelnen Pixel erfolgen, z. Eine Kachel mit Pixeln, sodass die Arbeit häufig auch während der Grobrasterung aussortiert werden kann.
quelle
Es ist nur ein Puffer, der steuert, welche Pixel beim Rendern von Polygonen geändert werden können. Für jedes Pixel gibt es einen entsprechenden Schablonenwert, und Pixel können abhängig von diesen Werten bedingt geändert / ignoriert werden
Im einfachsten Fall kann es wie eine physische Schablone verwendet werden - eine Maske, die einige Pixel durchlässt und andere Pixel davon abhält, geändert zu werden.
Es verhält sich sehr ähnlich wie ein Z-Buffer - wie ein Tiefentest, ist ein Schablonentest ein True / False-Test, und es gibt ähnliche Einstellungen, um den Schablonentest zu steuern (bestanden, wenn größer / kleiner / gleich). Anstatt jedoch eine Tiefe darauf zu schreiben, werden in der Regel vordefinierte Werte darauf geschrieben oder beim Zeichnen von Pixeln inkrementiert / dekrementiert, wie dies in Schablonenschattenalgorithmen verwendet wird.
quelle