Do czego służy bufor wzornika? A ściślej, czym jest szablon w grafice komputerowej?

41

Często czytam słowo wzornika i nie mam pojęcia, jaki jest jego prawdziwy cel w grafice komputerowej.

Widząc czarno-białe zdjęcie na wikipedii, wciąż mam z tym problem.

Dlaczego używamy szablonu lub bufora szablonów i jaka jest różnica w przypadku bufora Z? Po co używać tego słowa, które wydaje się mieć jakieś znaczenie w projektowaniu graficznym?

żart
źródło
Świetne pytanie, wiem tylko, że jest używane do renderowania cieni ... Ale będę zainteresowany, aby uzyskać pełne wyjaśnienie tego!
Ricket

Odpowiedzi:

40

W swoim pierwotnym wcieleniu bufor wzornika był buforem ramki o rozmiarze jednego bitu na piksel (tj. Czarny lub biały, ale bez szarości). Możesz renderować to, co chcesz, jak każdy inny bufor ramki. Następnie możesz użyć zawartości tego bufora do „wzorowania” lub maskowania podczas rysowania w swoim zwykłym buforze.

Przykład: załóżmy, że tworzysz grę samochodową. Chcesz mieć małe lusterko wsteczne na ekranie, które pokazuje, co jest za samochodem. Musisz wyrenderować widok skierowany za samochód, ale chcesz to wyrenderować tylko w małym zaokrąglonym prostokącie lusterka wstecznego. Typowe rozwiązanie to:

  1. Renderuj zaokrąglony prostokąt do bufora szablonu.
  2. Włącz wzorcowanie.
  3. Renderuj widok skierowany do tyłu na zwykły bufor.

Szablon zamaskuje go tak, abyś rysował tylko w kształcie lustra.

Teraz, gdy rurociągi renderujące są znacznie bardziej elastyczne i programowalne, bufory szablonów są używane jako zwykły 1-bitowy bufor ramki, dzięki któremu możesz robić, co chcesz. Cienie są częstym przypadkiem użycia.

hojny
źródło
10
Innymi słowy, zasadniczo spełnia tę samą funkcję, co szablon z prawdziwego życia, maskując części podczas nakładania atramentu.
Kaj
4
Prawie wszystkie urządzenia obecnie obsługują 8-bitowy bufor wzorników.
Chris Howe,
Naprawdę nie rozumiem twojego przykładu, to jest jak druga frustrum? czy rasteryzuje inną część sceny? Czy możesz podać przykład z cieniami?
Jokoon
To tylko drugi bufor ramki. Zawsze możesz zmienić frustum przed jego renderowaniem (tak myślę, że robią to systemy cieni), ale to nie jest podstawowa koncepcja.
hojny
9

Oprócz funkcjonalnego wykorzystania buforów szablonów, które ludzie już omawiali, bufory szablonów można również wykorzystać do optymalizacji.

Ze względu na pozycję testu szablonu w potoku graficznym (który jest przed cieniowaniem pikseli), można użyć testu szablonu, aby zabić piksele, które wykonują intensywne cieniowanie, gdy nie są potrzebne. Często można to zrobić z grubszą ziarnistością niż pojedynczy piksel, np. kafelek pikseli, więc prace mogą być często przerywane również podczas zgrubnych etapów rasteryzacji.

jpaver
źródło
4

To tylko bufor kontrolujący, które piksele można modyfikować podczas renderowania wielokątów. Dla każdego piksela istnieje odpowiednia wartość szablonu, a piksele można warunkowo modyfikować / ignorować w zależności od tych wartości

W najprostszym przypadku można go używać jak szablonu fizycznego - maski, która przepuszcza niektóre piksele i powstrzymuje modyfikację innych pikseli.

Jest bardzo podobny w zachowaniu do bufora Z - podobnie jak testowanie głębokości, testowanie szablonem jest testem prawda / fałsz, a istnieją podobne ustawienia kontrolujące test szablonu (pozytywny, jeśli większy / mniejszy / równy). Ale zamiast zapisywać na nim głębokość, zwykle będą miały zapisane wcześniej zdefiniowane wartości lub będą zwiększane / zmniejszane po narysowaniu pikseli, tak jak jest to stosowane w algorytmach matrycowych cieni.

bluescrn
źródło