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?

Albus dumbledore
źródło

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

concept3d
źródło
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.

XGouchet
źródło
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.

Kaczka komunistyczna
źródło
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.

Ciro Santilli
źródło
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