Bufor szablonowy
Bufor szablonowy (ang. stencil buffer) – jeden z buforów, obok bufora Z i bufora ramki, stosowany w systemach wyświetlających grafikę 3D, umożliwiający selektywne wyświetlanie wybranych pikseli obrazu. Jest on obecnie implementowany sprzętowo w akceleratorach graficznych, zaś jego funkcjonalność udostępniają biblioteki programistyczne przeznaczone do renderowania grafiki – Direct3D oraz OpenGL.
Dzięki zastosowaniu bufora szablonowego możliwe jest uzyskiwanie różnych efektów graficznych, m.in. odbić w zwierciadłach płaskich, dynamicznych cieni, obrysów obiektów, a także realizacja operacji boolowskich (CSG) czy określanie złożoności sceny trójwymiarowej.
Gdy bufor szablonowy jest włączony, wyświetlanie piksela obrazu determinuje dodatkowy test na odpowiadającej mu wartości bufora. Dostępne są następujące relacje:
- zawsze prawdziwy – zawartość bufora szablonowego nie jest brana pod uwagę;
- zawsze fałszywy – nic nie jest wyświetlane;
- porównania: równy, różny, mniejszy, większy, mniejszy lub równy, większy lub równy – piksel jest wyświetlany, jeśli dla określonej wartości referencyjnej (ustalanej przez programistę) i wartości w buforze relacja jest prawdziwa.
Zapisy do bufora są konfigurowalne:
- nie powodują zmian;
- powodują wyzerowanie wartości;
- powodują zanegowanie bitów;
- określona wartość (definiowana przez programistę) jest wpisywana do bufora;
- zapis powoduje zmniejszenie lub zwiększenie o 1 wartości w buforze (te operacje mogą być przeprowadzane albo z nasyceniem, albo w arytmetyce modulo).
Dostępne są zwykle maski bitowe stosowane zarówno przy porównywaniu jak i zapisach, dzięki czemu możliwe jest traktowanie wartości w buforze jako zbioru niezależnych pól bitowych. Liczba bitów przeznaczona na elementy bufora różni się w zależności od implementacji i może wynosić 1, 4, 8 lub więcej bitów.