Silnik graficzny

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacji, wyszukiwania

Silnik graficzny – część kodu aplikacji odpowiedzialna za tworzenie grafiki (2D lub 3D) na ekranie komputera. Zawiera elementy konieczne do wykonywania złożonych matematycznych obliczeń i przekształceń elementów grafiki.

Silnik graficzny zajmuje się renderowaniem programowym bądź sprzętowym obrazu na zwykłym ekranie w czasie rzeczywistym. W przypadku grafiki trójwymiarowej oznacza to, że każda klatka obrazu musi zostać wygenerowana na tyle szybko, aby możliwe było swobodne 'poruszanie się' po trójwymiarowym świecie wirtualnym. Silniki graficzne do generowania obrazu 3D są czasami nazywane silnikami 3D. Do przyśpieszenia i wykonywania bardziej złożonych obliczeń mogą wykorzystywać wsparcie sprzętowe specjalizowanych procesorów graficznych oraz obsługujących je bibliotek graficznych takich jak DirectX czy OpenGL.

Przykładami takich silników mogą być Genesis3D, Irrlicht, OGRE, Antiryad Gx, Crystal Space, RAGE. Choć zwykłemu posiadaczowi komputera kojarzą się przede wszystkim z grami, to są projektowane do wielu innych celów, np. wizualizacji projektowanych budynków czy wnętrz. Nie powinny być utożsamiane z silnikami gry.

Działanie[edytuj | edytuj kod]

Na samym początku tworzenia obrazu, procesor przesyła do VRAM podstawowe informacje o danej scenie. Na niego składają się wszystkie tekstury, współrzędne wierzchołków elementów sceny, położenie względem siebie, umiejscowienie obserwatora oraz oświetlenia całej sceny.

Kolejny krok to operacje związane z współrzędnymi wierzchołków. Karta graficzna buduje krawędzie trójkątów, z których z kolei powstają siatki obiektów. Zdefiniują powierzchnię wirtualnych obiektów. Procesor graficzny ustawia na wirtualnej scenie kamerę, czyli punkt, z którego wirtualny świat będzie obserwowany. Siatki obiektów oraz otoczenia są umieszczane na scenie w odpowiednich pozycjach względem kamery lub obserwatora. Ponieważ kamera i obserwator to elementy nieruchome, siatki elementów zaczynają się poruszać, obracać i przekształcać względem nieruchomego obserwatora by uzyskać wrażenie, że porusza się i obraca. Operacje te są na bieżąco synchronizowane z pozycją podglądu.

W całej scenie może pojawić się ogromna liczba wierzchołków. Dlatego by zminimalizować obciążenie karty i procesora, zachodzą optymalizacje w postaci usuwania siatek niewidocznych dla obserwatora. Wycinane są przede wszystkim elementy znajdujące się za jego plecami, wszystkie poza kadrem obserwatora oraz elementy znajdujące się z tyłu obserwowanych obiektów. Procesor w obliczeniach nie uwzględnia także tych ścianek obiektów, które są zasłonięte przez inne przedmioty na scenie chyba że mają przezroczysty kolor.

Następny proces to teselacja, obsługiwane przez biblioteki graficzne shadery gdzie zachodzi cieniowanie pikseli. Tworzona jest w tym celu krzywe beziera która z kolei trafia to teselatora. Dzieli go na siatkę geometryczną składającą się z odpowiednio większej liczby trójkątów (krzywe beziera zmieniają siatki obiektów na inne).

Rasteryzacja[edytuj | edytuj kod]

Do tej pory wszystkie ww. procesy były wypełniane jednolitym kolorem z uwzględnieniem oświetlenia sceny. Przy użyciu modułu rasteryzacji grafika jest spłaszczana i przygotowywana do wyświetlania w ustalonej przez użytkownika rozdzielczości ekranu. W międzyczasie część jednostek obliczeniowych procesora graficznego zajmuje się dalszą obróbką grafiki: nadaje obiektom różne kolory, połysk, fakturę i inne detale. W późniejszym etapie moduł rasteryzacji zajmie się wygładzaniem krawędzi w spłaszczonych obiektach.

Linki zewnętrzne[edytuj | edytuj kod]

Silniki graficzne[edytuj | edytuj kod]

Zbiorcze informacje o różnych silnikach[edytuj | edytuj kod]

Bibliografia[edytuj | edytuj kod]

  • Krzysztof Roszak: Moc obrazu PC Format 5/2011