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.

Zobacz też

edytuj