Co to jest cień OpenGL®?

Cień Open Graphics Library® (OpenGL®) to wizualne przybliżenie w trójwymiarowej (3D) scenie OpenGL®, w jaki sposób cień zostałby rzucony w prawdziwym życiu w podobnych warunkach oświetleniowych. Cienie to złożona funkcja wizualna do zaimplementowania w OpenGL®, głównie dlatego, że nie ma wrodzonej obsługi rzucania cieni w scenie. Zamiast tego istnieje wiele technik, które można wykorzystać do tworzenia cieni z obiektów i geometrii w scenie przy użyciu różnych narzędzi, takich jak różne dostępne bufory, shadery i, w niektórych przypadkach, rozszerzenia, które zapewniają dostęp do specjalnych funkcji niektórych grafik karty W większości przypadków jakość, dokładność i szybkość renderowania cieni OpenGL® jest bezpośrednio związana z mocą obliczeniową i pamięcią sprzętu graficznego obecnego w komputerze lub urządzeniu. Niektóre z bardziej popularnych metod implementacji cienia OpenGL® obejmują objętości cieni, mapowanie cieni i śledzenie promieni.

Utworzenie aplikacji obsługującej cień OpenGL® wymaga wiedzy matematycznej i głębokiego zrozumienia działania OpenGL®. OpenGL® jest w dużej mierze wykorzystywany do tworzenia scen 3D, które są dynamiczne i renderowane w czasie rzeczywistym, więc algorytmy używane do tworzenia cieni muszą nie tylko być zoptymalizowane pod kątem szybkości, ale także muszą być starannie mierzone pod kątem zużycia zasobów i wszelkich zakłóceń, które może być spowodowany w potoku graficznym używanym do renderowania. Z tych powodów najbardziej podstawowa metoda tworzenia cienia, zwana śledzeniem promieni, często jest niepraktyczna w przypadku scen w pełnym 3D, ponieważ może to zająć bardzo dużo czasu.

Śledzenie promieni w zasadzie podąża za wyobrażoną linią lub promieniem od płaszczyzny widzenia lub położenia kamery przez scenę do powierzchni obiektu, a następnie oblicza kolor powierzchni na podstawie położenia jednego lub więcej źródeł światła i innych czynników. Podczas procesu rasteryzacji, w którym scena 3D jest rysowana na dwuwymiarowej (2D) powierzchni, aby można ją było wyświetlić, proces śledzenia promieni musi być wykonywany na każdym rysowanym pikselu, a zwłaszcza przy teksturach lub innych właściwości powierzchni, może być konieczne kilkakrotne oszacowanie tych samych pikseli. Oznacza to śledzenie promieni w czasie rzeczywistym, chociaż dokładnie oddałoby cienie, zwykle nie jest praktyczne.

Inna metoda, której można użyć do utworzenia cienia OpenGL®, znana jest jako mapowanie cienia. Ta metoda wykorzystuje bufor głębokości lub matrycy do renderowania sceny pod kątem źródła światła jako szeregu odległości od źródła światła do powierzchni różnych obiektów w scenie. Scena jest następnie renderowana po raz drugi pod właściwym kątem widzenia, sprawdzając, czy każdy piksel mieści się w pewnym zakresie odległości w buforze, wskazując, czy piksel jest oświetlony, czy zacieniony. Używanie mapowania cieni może wymagać dużej ilości pamięci i, w przypadku scen, które mają więcej niż jedno źródło światła, może obejmować tworzenie wielu map pod różnymi kątami.

Woluminy cienia są sposobem na utworzenie cienia OpenGL®, który jest dokładniejszy niż niektóre inne metody, ale stwarza własne problemy. Zasadniczo objętość cienia jest niewidzialnym fragmentem geometrii w scenie, która rozszerza się z oświetlonej powierzchni obiektu z dala od źródła światła. Tę objętość można porównać z innymi obiektami, aby sprawdzić, czy spadają one w cień powierzchni, z której powstała objętość. Ta procedura może być bardzo złożona i ostatecznie stworzyć wizualne artefakty, gdy jest zoptymalizowana pod kątem szybkości.

INNE JĘZYKI

Czy ten artykuł był pomocny? Dzięki za opinie Dzięki za opinie

Jak możemy pomóc? Jak możemy pomóc?