Bufor szablonowy

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacji, wyszukiwania

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 selektywnie wyświetlać wybrane piksele obrazu. Jest on obecnie implementowany sprzętowo w akceleratorach graficznych, zaś jego funkcjonalność udostępniają biblioteki programistyczne Direct3D oraz OpenGL.

Dzięki zastosowaniu bufora szablonowego możliwe jest uzyskiwanie różnych efektów graficznych, m.in. odbić w płaskich zwierciadłach, 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, może wynosić 1, 4, 8 lub więcej bitów.