Co to jest bufor szablonu?

W programowaniu grafiki komputerowej bufor szablonu to obszar pamięci, który można narysować i wykorzystać w odniesieniu do innych buforów graficznych w celu uzyskania różnych efektów lub zamaskowania obszarów sceny, aby nie były przetwarzane ani renderowane. Bufor szablonów to bufor na piksel podobny do czarno-białego obrazu, w którym każda lokalizacja w buforze może zawierać wartość, która najczęściej ma co najwyżej 1 bajt, ale może być tak mała, jak 1 bit. Bufor pierwotnie został zaprojektowany tak, aby działał jako prawdziwa lub fałszywa maska, podobnie jak szablon w świecie rzeczywistym, więc obszary sceny mogły zostać zasłonięte lub zignorowane przez ustawienie wartości różnych regionów bufora szablonu na wartość inną niż zero. Istnieje wiele zastosowań bufora poza prostym maskowaniem, w tym rysowanie objętości cienia, umieszczanie aureoli wokół obiektów lub lokalizowanie obszarów, w których obiekty nakładają się na siebie. W wielu przypadkach bufor jest utrzymywany w pamięci graficznej karty graficznej, dzięki czemu można do niego szybko uzyskać dostęp podczas renderowania.

Koncepcja bufora szablonu pierwotnie była sposobem na stworzenie dwuwymiarowej (2D) maski, którą można było zastosować do trójwymiarowej sceny (3D), gdy wierzchołki poruszały się w potoku graficznym. Jeśli lokalizacja wierzchołka 3D, po rasteryzacji, odnosi się do obszaru bufora szablonu, który nie był ustawiony na zero, to ten wierzchołek może zostać zignorowany, a reszta jego przetwarzania potokowego pominięta. Umożliwiło to programistom renderowanie tylko małych części sceny lub renderowanie obrazu do rzutni o nieregularnym kształcie, takiej jak odbicie w małym lustrze w większej scenie, gdzie kształt lustra jest rysowany jako szablon w bufor, a następnie odbicie jest przeciągane przez ten kształt.

Problemy z pamięcią doprowadziły do ​​tego, że oryginalna forma bufora szablonu była siatką wartości jednobitowych, w której każdy piksel w buforze mógł być tylko prawdziwy lub fałszywy. Wraz z rozwojem kart graficznych większość buforów była w stanie przechowywać pełną wartość bajtową w każdej lokalizacji piksela, umożliwiając programistom posiadanie bardziej złożonych wartości w lokalizacji. Może to umożliwić użycie bufora do wykrywania obszarów, w których obiekty nakładają się na siebie, co można zrobić, zwiększając wartość bufora w lokalizacji, jeśli obiekt zajmuje ten piksel na ekranie podczas rasteryzacji. Po tej operacji wartość każdego położenia piksela w buforze będzie równa liczbie obiektów, które przecinają ten piksel na ekranie.

Jednym z najpopularniejszych zastosowań bufora szablonów jest tworzenie cieni objętościowych. Można to zrobić najpierw renderując scenę przy bardzo słabym oświetleniu, aby wszystko wydawało się zacienione. Następnie wykonywane są obliczenia mające na celu określenie położenia wszystkich powierzchni wielokątów w scenie, które są oświetlone źródłem światła, a kształty te są przenoszone do bufora szablonu. Scena jest renderowana ponownie tak, jakby każdy obiekt był w pełni oświetlony i mieszany przez kształty szablonu z zacienioną sceną, skutecznie tworząc obraz, który wydaje się zawierać obiekty z cieniami.