Moc obrazu
Podstawą procesu generowania grafiki przez współczesne karty są skomplikowane obliczenia wykonywane przez procesor graficzny (GPU). Proces generowania pojedynczej klatki obrazu, aby gra zachowała dynamikę i płynność, musi się powtórzyć co najmniej 30 razy w ciągu każdej sekundy!
Procesor graficzny ustawia na wirtualnej scenie kamerę, czyli punkt, z którego wirtualny świat będzie obserwowany. Następnie siatki obiektów oraz otoczenia są umieszczane na scenie w odpowiednich pozycjach względem kamery lub obserwatora (3). Kamera czy obserwator jest elementem nieruchomym. Aby uzyskać wrażenie, że porusza się i obraca, należy poruszać, obracać i przekształcać siatki elementów sceny względem nieruchomego obserwatora (4). Operacje te są na bieżąco synchronizowane z pozycją myszki czy z instrukcjami wydawanymi przez użytkownika na klawiaturze.
Procesor graficzny ustawia także wszystkie źródła światła. Oświetlenie sceny posłuży jednostkom obliczeniowym do określenia sposobu cieniowania elementarnych płaszczyzn obiektów przestrzennych, a na późniejszym etapie – do uzyskania odpowiednich cieni w grafice.
Hull Shader zajmuje się transformacjami rodzajów siatek obiektów na inne. Może zamieniać klasyczną siatkę geometryczną (8) w strukturę zawierającą tzw. powierzchnie sklejane Beziera. Zmniejsza to liczbę operacji związanych z obiektami. Powierzchnie Beziera potrzebują do obliczeń zaledwie kilku lub kilkunastu punktów kontrolnych dla pojedynczego obiektu. Natomiast przy klasycznych siatkach geometrycznych obliczeniom podlegają wszystkie wierzchołki siatki. Pomimo mniejszej liczby punktów kontrolnych uzyskiwana jest niezwykle gładka powierzchnia obiektu bez względu na jego przybliżenie do kamery (9).
Obiekt powstały z powierzchni Beziera jest przesyłany do teselatora. Ten dzieli go na siatkę geometryczną składającą się z odpowiednio większej liczby trójkątów.Domain Shader pobiera następnie dane z tekstur (10) zawierających opis wysokości dla każdego piksela. Na ich podstawie przypisuje wartość wysokości każdemu wierzchołkowi w siatce otrzymanej z Hull Shadera i teselatora.
Te informacje pozwolą określić, jak mają być poprzesuwane wierzchołki obiektu, by na jego powierzchni można było uzyskać dodatkowe detale geometryczne. Dzięki temu bryła wygląda bardziej naturalnie bez potrzeby umieszczania tych detali w podstawowym opisie siatki obiektu. Odciąża to znacznie programistów i grafików, ponieważ to zadanie przejmuje układ GPU. Dzięki tym funkcjom procesor graficzny sam potrafi na bazie tekstur uzyskać odpowiednio złożoną siatkę.
Geometry Shader to jednostka wykonawcza, która transformuje siatkę na bazie otrzymanych z Hull Shadera parametrów. On też tworzy dodatkowe wierzchołki, krawędzie oraz trójkąty, tak by obiekt wyjściowy wyglądał realniej. Pozwala to na łatwe uzyskanie np. nierówności w murach (11), bardzo realistycznie wyglądających gór (np. dzięki zastosowaniu map fraktalnych) lub efektu falującego morza (w wyniku nakładania animowanej mapy przemieszczeń). Te dodatkowe detale są już uwzględniane na następnych etapach procesu tworzenia grafiki, takich jak np. rzucanie cieni czy tworzenie odbić z otoczenia.