omowic_algorytmy_cieniowania_plaskiego_i_cieniowania_gourauda

## Omówić algorytmy cieniowania płaskiego i cieniowania Gouraunda

### Cieniowanie płaskie

Cieniowanie płaskie to technika tworzenia oświetlenia w trójwymiarowej grafice komputerowej. Polega ona na określaniu jasności każdej ściany modelowanej bryły, opierając się na kącie pomiędzy powierzchnią ściany a kierunkiem światła, uwzględniając kolor ściany i oświetlenia oraz intensywność światła. Podstawową zaletą cieniowania płaskiego jest wysoka prędkość renderingu i wykonania związanych z nim obliczeń. Wadą cieniowania jest to, że każda ściana modelu ma określoną jedną barwę, co sprawia wrażenie występowania kantów i płaskich powierzchni. Jest to tym bardziej zauważalne, im mniej złożony jest model. Cieniowanie płaskie często wykorzystuje się wtedy, gdy prędkość i płynność wykonania jest ważniejsza niż jakość (np. podczas wstępnego etapu tworzenia grafiki), dla renderowania brył kostkowych (np. graniastosłupów, ostrosłupów) lub gdy bardziej zaawansowane metody są zbyt kosztowne. W przypadku, gdy pożądana jest większa dokładność i estetyka modelowania oświetlenia, stosuje się cieniowanie Gourauda lub cieniowanie Phonga. Cieniowanie płaskie to najmniej realistyczna metoda z tych trzech.

### Cieniowanie Gouraunda

Cieniowanie Gourauda (zwane też cieniowaniem na zasadzie interpolowania jasności) polega na przypisywaniu punktom cieniowanego wielokąta jasności obliczonej poprzez interpolację wartości odpowiednich dla każdego wierzchołka (w odróżnieniu od cieniowania Phonga, polegającego na interpolacji wektora normalnego). Jest metodą używaną w grafice komputerowej do symulacji różnych efektów światła i koloru na powierzchni obiektu. W odróżnieniu cieniowania płaskiego cieniowanie Gourauda zapewnia płynną zmianę stopnia jasności całego obiektu. Metodę opracował francuski inżynier i matematyk Henri Gouraud.

Cieniowania Gourauda w grafice 3D Trójwymiarowy obraz w pamięci komputera modelowany jest jako zbiór wielokątów tworzących bryły. Pierwszym krokiem podczas cieniowania Gourauda jest obliczenie wektorów normalnych do wierzchołków tych wielokątów. Na tej podstawie możliwe jest obliczenie kąta padania światła w danym miejscu bryły. Pozwala to na obliczenie jasności danego wierzchołka (czasem ten etap jest nazywany oświetlaniem wielokąta). W następnym kroku cieniowane są wszystkie wielokąty. Każdy wielokąt jest cieniowany najpierw wzdłuż krawędzi metodą interpolacji liniowej (w tym przypadku interpolowana jest jasność padającego światła), a następnie wzdłuż kolejnych wierszy (również wykorzystując interpolację liniową).

Algorytm ten można uogólnić dopuszczając interpolację nie tylko jasności, ale również poszczególnych barw.

Algorytm cieniowania Gourauda traci informacje o kącie padania światła przed właściwym rysowaniem wielokątów (i zamiast tego wykorzystuje informacje o jasności światła w danym punkcie). Powoduje to powstawanie błędów, do których można zaliczyć nieprawidłowe oświetlenie wielokąta jeśli na jego środek pada jasne, punktowe światło, a wierzchołki są już słabo oświetlone. W takim przypadku cały wielokąt pozostanie ciemny, punktowe światło nie zostanie narysowane. Wady tej pozbawione jest cieniowania Phonga.