Udostępnij za pośrednictwem


Etapy potoku (Direct3D 10)

Potok programowalny Direct3D 10 jest przeznaczony do generowania grafiki dla aplikacji do gier w czasie rzeczywistym. Na poniższym diagramie przedstawiono przepływ danych z danych wejściowych do wyjściowych przez każdy z programowalnych etapów.

diagram przepływu danych w potoku programowalnym 3d 10

Wszystkie etapy można skonfigurować przy użyciu interfejsu API. Etapy z typowymi rdzeniami cieniowania (zaokrąglone bloki prostokątne) są programowalne przy użyciu języka programowania HLSL. Jak widać, sprawia to, że potok jest niezwykle elastyczny i dostosowywany. Cel każdego z etapów znajduje się poniżej.

  • Input-Assembler etap — etap asemblera wejściowego jest odpowiedzialny za dostarczanie danych (trójkąty, linie i punkty) do potoku.
  • Vertex-Shader Etap — wierzchołki etapu cieniowania wierzchołków, zwykle wykonują operacje, takie jak przekształcenia, oskórowanie i oświetlenie. Cieniator wierzchołków zawsze przyjmuje pojedynczy wierzchołek wejściowy i tworzy pojedynczy wierzchołek wyjściowy.
  • Geometry-Shader Etap — etap geometryczny przetwarza całe elementy pierwotne. Jego dane wejściowe to pełny pierwotny (czyli trzy wierzchołki trójkąta, dwa wierzchołki dla linii lub pojedynczy wierzchołek punktu). Ponadto każdy element pierwotny może również zawierać dane wierzchołków dla dowolnych sąsiednich elementów pierwotnych krawędzi. Może to obejmować maksymalnie trzy dodatkowe wierzchołki dla trójkąta lub dodatkowe dwa wierzchołki dla linii. Funkcja Geometry Shader obsługuje również ograniczoną wzmacnianie geometrii i de-amplification. Biorąc pod uwagę element pierwotny danych wejściowych, moduł cieniowania geometrii może odrzucić element pierwotny lub emitować jeden lub więcej nowych elementów pierwotnych.
  • Stream-Output etap — etap strumienia danych wyjściowych jest przeznaczony do przesyłania strumieniowego danych pierwotnych z potoku do pamięci w drodze do rasterizatora. Dane mogą być przesyłane strumieniowo i/lub przekazywane do rasterizatora. Dane przesyłane strumieniowo do pamięci mogą być ponownie przesyłane do potoku jako dane wejściowe lub odczytywane z procesora CPU.
  • etapu rasteryzatora — rasterizator jest odpowiedzialny za przycinanie elementów pierwotnych, przygotowywanie elementów pierwotnych do cieniowania pikseli i określanie sposobu wywoływania cieniowania pikseli.
  • Pixel-Shader Etap — etap cieniowania pikseli odbiera dane interpolowane dla elementu pierwotnego i generuje dane na piksel, takie jak kolor.
  • Output-Merger etap — etap fuzji danych wyjściowych jest odpowiedzialny za połączenie różnych typów danych wyjściowych (wartości cieniowania pikseli, głębokości i wzornika) z zawartością celu renderowania i głębokości/wzornika w celu wygenerowania końcowego wyniku potoku.

Przewodnik programowania dla Direct3D 10