Co to jest fragment w programowaniu grafiki 3D?


37

Co to jest fragment w module cieniującym fragmenty? Wikipedia mówi, że:

Ogólnie rzecz biorąc, fragment można traktować jako dane potrzebne do zacienienia piksela, a także dane potrzebne do przetestowania, czy fragment przetrwa i stanie się pikselem (głębokość, alfa, szablon, nożycowy, identyfikator okna itp.)

Czy to są tekstury, wierzchołki czy coś innego?

Odpowiedzi:


31

W grafice komputerowej fragment to dane niezbędne do wygenerowania prymitywu rysowania o wartości jednego piksela w buforze ramek.

Dane te mogą obejmować między innymi:

  • pozycja rastrowa
  • głębokość
  • interpolowane atrybuty (kolor, współrzędne tekstury itp.)
  • szablon
  • alfa
  • identyfikator okna

Podczas rysowania sceny prymitywy rysowania są rasteryzowane na fragmenty, które są teksturowane i łączone z istniejącym buforem ramki. Sposób łączenia fragmentu z danymi znajdującymi się już w buforze ramki zależy od różnych ustawień. W typowym przypadku fragment można odrzucić, jeśli znajduje się on dalej niż piksel, który już znajduje się w tym miejscu (zgodnie z buforem głębokości). Jeśli jest bliżej niż istniejący piksel, może zastąpić to, co już istnieje, lub, jeśli stosowane jest mieszanie alfa, kolor piksela można zastąpić mieszanką koloru fragmentu i istniejącego koloru piksela, tak jak w przypadku rysowanie półprzezroczystego obiektu.

Ogólnie rzecz biorąc, fragment można traktować jako dane potrzebne do zacienienia piksela, a także dane potrzebne do przetestowania, czy fragment przetrwa i stanie się pikselem (głębokość, alfa, szablon, nożycowy, identyfikator okna itp.)

Z wikipedii


6

Fragment to po prostu dane uzyskane z udziału 3 wierzchołków wokół cieniowanego piksela.

W module cieniującym wierzchołków wyprowadzasz dane na wierzchołek (kolor, współrzędne tekstury, ...). Następnie w module cieniowania fragmentów dla każdego piksela otrzymujesz średnią ważoną tych wartości, które następnie wykorzystujesz do zbudowania ostatecznych kolorów piksela.


Piksel i wszystkie inne dane dotyczące niewidocznych buforów, jak wspomniano powyżej.
StarWeaver

4

W ten sam sposób, w jaki moduł cieniujący wierzchołek działa na wierzchołki, element cieniujący fragment (lub piksel) będzie działał tylko na piksele.


Przykro nam, ale nie jest to poprawne bez podania słowa „rastaryzacja” i interpolacji.
Notabene

Co gorsza, mówi się, że piksele - które różnią się od fragmentów, szczególnie gdy zaangażowane są wielopróbkowe cele renderowania AA, zasięg do alfa lub dowolna liczba innych sytuacji
oddałbym

4

Co to jest fragment w module cieniującym fragmenty

Jedyną precyzyjną rzeczą, którą można powiedzieć, jest zdefiniowanie wejść i wyjść modułu cieniującego fragmenty.

Ponieważ zostało to zrobione / jest zbyt szerokie, skupię się na intuicyjnej stronie wizualnej.

Fragment jest wyjściem rastrowym

Wiki OpenGL mówi:

Fragment to zbiór wartości wytworzonych przez Rasterizer.

Ma to sens, ponieważ moduł cieniujący fragmenty występuje po rasterizerze, który wytwarza swój wkład.

I to jest wizualna reprezentacja wyjścia rasterizera:

Źródło obrazu .

Wejście rasteryzatora to trójkąt 3D i punkt widzenia, a wyjście to zestaw pikseli, które mogą pojawić się na ekranie (jeśli nie zostaną zablokowane przez innych).

Każdy z tych małych kwadratów (które są zakodowane jako pojedyncze piksele), jest kawałkiem trójkąta, a fragment to po prostu inna nazwa dla kawałka.


Downvoters, proszę wyjaśnij, abym mógł się uczyć i poprawiać treść ;-)
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

Najlepsze byłyby informacje w górnej odpowiedzi zmieszane z twoimi wizualnymi objaśnieniami.
StarWeaver
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.