W początkach gier wideo, gdzie wszystko, co mieliśmy, to niezauważalna dwuwymiarowa grafika pikselowa lub sprite, wiele pozostało do wyobraźni. W tamtych czasach grafika komputerowa składała się z ledwo rozpoznawalnych kształtów, stworzonych po to, aby przekazać je jako ich prawdziwe odpowiedniki (lub w wielu przypadkach, jako odpowiedniki świata filmu). Zrobiliby wszystko, co w ich mocy, a następnie skupili się na zabawie, powtarzalnej rozgrywce, która jest doskonałym sposobem na przekazanie czasu w każdą sobotę po południu. Trwało to bardzo długo, a Atari 2600 było główną konsolą domową, która wykonywała tę pracę.
Po awarii gry wideo z lat 80., Nintendo i Sega podniosły się z popiołów i stworzyły nowe konsole: odpowiednio Nintendo Entertainment System i Sega Genesis. Konsole te charakteryzowały się znacznie lepszą grafiką, dzięki czemu można było naprawdę rozpoznać, jaki jest każdy poszczególny element. Oczywiście, zostało jeszcze trochę dla wyobraźni, ale na pewno nie musiałbyś pracować tak ciężko, jak wcześniej. W tej 8-bitowej i kolejnych 16-bitowych erach, grafika sprite została doprowadzona do absolutnego limitu, jaki ówczesna technologia mogła dać. Ale nadal była to dziedzina dwu- lub dwuwymiarowa. Większość gier była przewijana na boki lub z góry na dół, a każda gra “3D” nadal wykorzystywała grafikę sprite. Był to świetny sposób na tworzenie gier, a wiele klasycznych gier nadal uważanych jest za jedne z najlepszych w swoich gatunkach używanych. Jednakże, kiedy pojawiła się Sony Playstation, przemysł gier nigdy nie będzie taki sam. Wchodziłaby ona w sferę trzech wymiarów, czyli 3d.
Wraz z pojawieniem się grafiki 3d pojawiła się nowa granica w grach wideo. Nagle, dwuwymiarowe sprites były przeszłością, a twórcy gier szybko popchnęli kopertę do stworzenia coraz lepszej grafiki 3d, która sprawi, że zanurzenie się w grach jak najlepiej z technologicznego punktu widzenia. Jeśli w erze 8 i 16 bitów bardzo niewiele pozostało do wyobraźni, to wraz ze świtem grafiki 3d, prawie nic nie pozostało. Twórcy gier mogli stworzyć praktycznie wszystko, co mogliby modelować i wykorzystywać w grze. A w miarę upływu czasu, jakość grafiki 3d po prostu się poprawiła.
Dzisiaj, jakość grafiki 3d w grach wideo, zwłaszcza w triple A gry wideo są tak wysokiej jakości, że jest rozmycie linii rzeczywistości. To dlatego, że przez lata wiele funkcji zostały opracowane w celu znacznego zwiększenia realizmu 3d grafika może przynieść. Od sprzętowej akceleracji po programowe udoskonalanie, dzisiejsze gry 3d są lightyears poza tym, co twórcy gier w latach 60-tych i 70-tych mogli kiedykolwiek marzyć.
Istnieje wiele elementów w grafice 3d, które przyczyniają się do tworzenia jednego fantastycznego obrazu. Oświetlenie jest oczywiście jednym z najważniejszych. Umiejętność uwzględnienia efektów światła w danym obszarze oraz cieniowania, jakie ono wywoła, może być różnicą pomiędzy wysoką jakością obrazowania. I tu właśnie pojawia się okluzja otoczenia.
Czym jest okluzja otoczenia?
Na pierwszy rzut oka, termin ten wygląda i brzmi bardzo technicznie. A jeśli zdefiniujesz go, dowiesz się, co słowa “ambient” i “occlusion” oznaczają oddzielnie, będziesz miał mgliste pojęcie, co to jest. Słowniki internetowe definiują “ambient” jako “odnoszący się do bezpośredniego otoczenia czegoś”. Brzmi dość prosto. Jednak “okluzja” oznacza kilka nieco różnych rzeczy, które mają trzy wspólne cechy: blokadę, chwilowe zamknięcie i ustawienie.
W połączeniu, dostaniesz coś w rodzaju “rzeczy dookoła tej blokady”. Wciąż brzmi myląco? Nie martw się, to nie jest tak naprawdę daleko. Widzisz, okluzja otoczenia jest metodą cieniowania i renderowania, aby dowiedzieć się, jak bardzo konkretny punkt w renderowanej scenie otrzymuje oświetlenie otoczenia. Jest to metoda pozwalająca zobaczyć jak “dostępny” jest każdy punkt w scenie do światła otoczenia, aby uzyskać efekt, który jest o wiele bliższy temu jak działa oświetlenie rzeczywistego świata. Różni się od rzucania cienia (dojdziemy do tego później), ale daje efekt cieniowania. Obszary zamknięte lub trudno dostępne są zaciemniane, a obszary odsłonięte są rozjaśniane, co zwiększa realizm sceny.
Wciąż jesteś zdezorientowany? Pomyślcie o tym w ten sposób. Weź tubę z kartonu toaletowego i połóż ją na regularnie oświetlonym stole. Zajrzyj do wnętrza tuby, a następnie spójrz na zewnątrz. Ponieważ do wnętrza tuby nie jest łatwo dotrzeć przez oświetlenie otoczenia, wydaje się ona ciemniejsza niż na zewnątrz. To właśnie robi okluzja otoczenia. Teraz, jeśli prawdziwy świat miałby ustawienia graficzne, a my wyłączymy okluzję otoczenia, nie będzie tak łatwo odróżnić, co jest w środku tubki od tego, co jest na zewnątrz. Chyba, że tekstury (do tego dojdziemy później również) kartonowej tuby mają już pomalowane cienie.
Okluzja otoczenia przy prawidłowym wykonaniu sprawia, że scena wygląda o wiele bardziej realistycznie niż przy wykonaniu bez okluzji otoczenia. Ale był taki czas, że okluzja ambientowa nie była używana w grach wideo. W 2001 roku w filmie Pearl Harbor, w którym występowali Ben Affleck i Kate Beckinsale, zastosowano okluzję ambientową. W 2007 roku gra Crytek “Crysis” odsłoniła Screen Space Ambient Occlusion, po raz pierwszy ambientowa okluzja została użyta w grach wideo. Rezultaty były oszałamiające, a Crysis został okrzyknięty wtedy pięknie wykonaną epicką sci-fi. Nie tylko ze względu na fabułę i rozgrywkę, ale także ze względu na nowoczesną grafikę tamtych czasów. Ale taka nowoczesna technologia oznaczała, że w momencie wydania Crysis miał jeden z najwyższych wymagań sprzętowych każdej gry. Niemniej jednak, ustawił pasek, w którym inne tytuły triple A, które chcą osiągnąć wciągającą i realistyczną grafikę, muszą dotrzeć lub przejść.
Jak działa Ambient Occlusion?
Teraz wiemy, co to jest okluzja otoczenia. Ale jak wykonuje swoją pracę, dodając głębi w scenie gry wideo w formie cieniowania?
Metoda opracowana przez Crytka, a konkretnie przez Vladimira Kajalina, działa jako algorytm cieniowania pikseli. Pixel shader to w zasadzie obliczanie różnych atrybutów i ustawień obszaru sceny lub obiektu w scenie, a na podstawie tych obliczeń powstaje wynik. Może to być prosty rezultat, jak zwykły kolor lub, w tym przypadku, ilość światła. Robi to dla każdego piksela, który jest obecny na ekranie.
Brzmi to jak dużo pracy, i tak jest. Prawdopodobnie właśnie dlatego tak długo trwało wdrażanie go w grach wideo. Bo wcześniej bardzo trudno było wykonać okluzję ambientową poprzez rendering w czasie rzeczywistym. Jednak rozwiązanie, które wyprodukował Crytek, polegające na próbkowaniu określonej liczby pikseli zamiast każdego piksela, znacznie skróciło czas i wymagało obróbki. A wraz z innymi opracowanymi technologiami, pozwoliło to na uzyskanie wysokiej jakości obrazu, który jest akceptowalny dla zaawansowanych grafik w grach wideo.
W dzisiejszych czasach istnieje wiele rodzajów okluzji otoczenia lub AO, jak to nazywa branża, i funkcjonują one nieco inaczej.
Kinds of Ambient Occlusion
Różne rodzaje okluzji ambientowej mają podobne, ale nieco inne wyniki w zależności od tego, jak twórca gry wykorzystał każdy z nich. Oto niektóre z najczęstszych, oraz ich zalety i wady.
SSAO lub Screen-Space Ambient Occlusion – dziadek technologii okluzji ambient dla gier wideo. Opracowana przez Crytek w 2007 roku, SSAO wyznacza standardy w zakresie okluzji ambient i do dziś jest domyślną opcją dla większości wydawanych gier wideo.
Kluczowe cechy:
-
- Niewiele do żadnych zasobów procesora – ze względu na zastosowany algorytm, nie ma praktycznie żadnej potrzeby korzystania z procesora. SSAO może być wykonane przez procesor graficzny lub GPU.
- Szybki i przyjazny dla zasobów – ponieważ nie ma potrzeby przetwarzania wstępnego, SSAO ma praktycznie zerowy czas ładowania i alokacji pamięci. SSAO może być wykonane specjalnie w GPU
- Spójny i niezawodny – algorytm jest stosowany za każdym razem w ten sam sposób.
- Adaptable – może być stosowany na różne sposoby przez twórców gier wideo i twórców GPU.
SSDO lub Screen Space Directional Occlusion – można uznać za krok naprzód w stosunku do SSAO pod względem zaawansowania technologicznego. SSDO nie używa tylko pikseli sceny lub obiektu. Wykorzystuje również kierunek światła, które uderza w obiekt, oraz wszelkie światła odbijające się od obiektów znajdujących się za nim. Daje to graczowi możliwość rozróżnienia obiektów poprzez dostrzeżenie różnicy w ilości cienia i światła pomiędzy nimi.
Daje to większą głębię i realizm niż to, co SSAO już przynosi i przybliża gry wideo do coraz bardziej nieuchwytnych ustawień fotorealizmu.
Kluczowe cechy:
-
- Bardziej realistyczne oświetlenie – biorąc pod uwagę kierunek padania światła ze źródeł światła, głębokość oświetlenia staje się znacznie większa.
- Nie tak daleko od wymagań dotyczących zasobów SSAO – nawet jeśli SSDO jest następcą SSAO i posiada więcej funkcji, wymagania dotyczące zasobów pozostają bardzo podobne do niego i nie jest to tak duże obciążenie dla nowoczesnych procesorów graficznych.
HBAO/HDAO lub Horizon based Ambient Occlusion i High-Definition Ambient Occlusion – są to warianty SSAO należące do dwóch twórców GPU. Nvidia jest właścicielem HBAO, a AMD posiada HDAO. Nie różnią się one aż tak bardzo od SSAO, ale dają lepszą okluzję ambientową, zwłaszcza jeśli są używane z ich odpowiednimi kartami graficznymi. Dzieje się to jednak kosztem większego zapotrzebowania na zasoby i spadku wydajności, chyba że zastosowany procesor graficzny jest bardzo aktualny.
VXAO lub Voxel Ambient Occlusion – jest to kolejny krok dla HBAO i został opracowany również przez Nvidia. Zapewnia on wyższą jakość okluzji otoczenia niż HBAO, ale kosztem większej ilości zasobów, nawet biorąc pod uwagę dzisiejsze przeciętne układy GPU. Aby w pełni wykorzystać ten rodzaj okluzji otoczenia, potrzebujesz najbardziej zaawansowanych procesorów graficznych dostępnych na rynku. Jednak po włączeniu tej funkcji na pewno zobaczysz różnicę.
GI lub Global Illumination – ten rodzaj AO nie był jeszcze używany w grach wideo. Ale wiedząc jak postępuje technologia, na pewno zobaczymy to w ciągu naszego życia. Tak właśnie odbywa się oświetlenie fotorealistyczne. GI bierze pod uwagę wszystkie źródła światła obecne w scenie, a także to, jak każde z nich wpływa na wiele obiektów tam obecnych. Z tego powodu oświetlenie jest bliskie, jeśli jeszcze nie jest, dokładnie takie samo jak w świecie rzeczywistym. Realistyczne światła i cienie, które sprawią, że cokolwiek w scenie będzie wyglądało dokładnie tak samo jak w realnym świecie. Chyba, że są one oczywiście modelowane lub wykonane w sposób wyraźnie nierealistyczny.
Czy ambientowe okluzje naprawdę robią różnicę w grach wideo?
Przy sposobie opisywania okluzji ambientowej wydaje się, że AO jest kluczowym składnikiem, który czyni gry wideo bardzo realistycznymi. I w wielu przypadkach tak jest. Jeśli jednak grasz w wiele gier wideo w ciągu ostatnich kilku lat, zauważysz, że niewiele gier z wyjątkiem tytułów triple A zawiera AO lub jego warianty. Dlaczego możesz pytać?
Rzecz w tym, że nawet jeśli AO nie pobiera żadnej mocy obliczeniowej CPU i jest przyjazny dla zasobów, okluzja otoczenia jest bardzo obciążająca dla GPU. Teraz możesz myśleć: “Mój komputer może obsłużyć wszystko, na pewno każdy inny komputer może?”. Ale nie wszyscy będą mieli te same procesory graficzne, najnowocześniejsze technologie i najnowsze oprogramowanie. A firmy zajmujące się grami wideo będą myśleć o wyniku końcowym, znanym także jako sprzedaż ich gier jak największej liczbie osób.
Jeśli gra jest zbyt ciężka dla sprzętu, może się nie sprzedać. I to jest właściwie jeden z głównych zarzutów, jakie krytycy i gracze wygłaszali na temat Crysisa. W momencie jego wydania, przeciętny gracz nie mógł nawet uruchomić go bez straty framerate lub spadek jakości lub coś w tym celu.
Załóżmy teraz, że jesteś w stanie włączyć okluzję ambientową bez żadnych negatywnych skutków ubocznych. Czy ten efekt jest naprawdę zauważalny? Cóż, krótka odpowiedź brzmi, to zależy.
To dlatego, że zależy to również od tego, jak twórca gry wdrożył okluzję ambientową w swojej grze. Prawidłowo zrobione, efekt jest prawie natychmiastowy po włączeniu ustawień. Zauważysz to szczególnie wtedy, gdy obiekty znajdują się blisko siebie, takie jak trawa i elementy roślinności, lub gdy obiekty znajdują się blisko ścian, sufitów lub podłóg. Jeśli jesteś bardzo wizualnym graczem, to jest to coś, co bardzo doceniasz.
Wykonane nieprawidłowo, jednak ledwo zauważasz wizualną różnicę. Ale na pewno poczujesz spadek wydajności w postaci niższych fps lub lagów. A jeśli tak jest, to jaki jest sens pozostawienia tego na sobie, prawda?
W niektórych przypadkach, jest to środek między nimi. Na pewno widać pewną różnicę, ale na dłuższą metę może ona nie być na tyle znacząca, aby uzasadnić ewentualny spadek wydajności. Kiedy tak się dzieje, jest to tylko różnica między jakością wizualną a wydajnością. A jeśli jesteś poważnym graczem, jest szansa, że zdecydujesz się na wydajność.
Ale jest jeszcze jeden powód, dla którego okluzja otoczenia nie jest tak szeroko stosowana i nie jest uwzględniana w wielu grach. A to dlatego, że istnieją alternatywy, które dają bardzo podobne wyniki bez efektów ubocznych związanych z wydajnością.
Alternatywa dla okluzji ambientowej
Jedną z najbardziej popularnych alternatyw dla okluzji ambientowej jest oświetlenie bloom, stosowane w popularnych grach, takich jak Skyrim. Mówiąc najprościej, oświetlenie bloom jest sztucznie tworzonym odwzorowaniem wizualnego artefaktu, który podczas odbioru światła wytwarzają prawdziwe kamery. Jest to jakby miękka poświata (stąd “bloom”), którą wytwarzają jasne obszary sceny. To przejmuje kontrolę nad kamerą i jest widoczne w filmach, programach telewizyjnych, a nawet domowych nagraniach wideo przy użyciu kamer wideo lub telefonów komórkowych. W grach wideo zyskała ona na atrakcyjności już w 2004 roku i od tego czasu jest obecna w wielu grach wideo.
Efekt kwitnienia powoduje, że światło jasnej części sceny “krwawi” do innych widocznych elementów w scenie z punktu widzenia kamery. Ludzkie oko rozpoznaje to jako realistyczny efekt, który widzieliśmy i doświadczyliśmy wcześniej, i przetwarza go jako realistyczne oświetlenie w naszym mózgu. Tak więc nawet jeśli cień powstały w wyniku okluzji otoczenia nie istnieje w danej scenie, efekt rozkwitu kompensuje się, dając “wciągający” realistyczny efekt.
Najlepsza część? Oświetlenie Bloom zajmuje bardzo mało mocy obliczeniowej GPU, a co najwyżej nie jest bliskie temu, czego okluzja otoczenia będzie wymagać od karty graficznej. Dlatego od 2004 roku stało się ono popularnym efektem wizualnym w wielu grach, w tym w tytułach triple A, takich jak Elder Scrolls IV: Oblivion i Elder Scrolls V: Skyrim, a także w serii Fallout i wielu innych.
Jeśli okluzja ambientowa nie jest warta zachodu lub jest niewiele warta, czy powinieneś w ogóle rozważyć włączenie jej podczas grania w gry?
Czy powinieneś włączyć okluzję ambientową w mojej grze?
Po dalszej rozmowie o tym, wydaje się, że jest więcej wad niż zalet, jeśli chodzi o okluzję ambientową w grach wideo, prawda? Jeśli tak, to czy powinieneś w ogóle włączać okluzję ambientową? Jeśli wszystko co dostaniesz to minimalne wizualne udoskonalenie dla dużej ilości zasobów, to nie warto, prawda?
Krótka odpowiedź brzmi, po raz kolejny, to zależy. Jeśli Twój układ GPU może sobie z tym poradzić przy minimalnym lub zerowym spadku wydajności, to włączenie okluzji ambient jest zdecydowanie opcją, zwłaszcza jeśli chcesz poprawić swoją jakość wizualną. Zależy to również od tego, czy gra robi to dobrze, czy nie. Jeśli tak, to warto być może stracić trochę wydajności na rzecz jakości wizualnej. A jeśli nie robi tego dobrze, to najlepiej zostawić go wyłączonym. Jedynym sposobem, aby się tego dowiedzieć, jest włączenie funkcji i sprawdzenie jej poprawności.
Panuje powszechna zgoda co do tego, że okluzja ambientowa to po prostu efekt specjalny, który niewiele dodaje do wrażenia w grach wideo, którego inne efekty nie mogą dać bez efektów ubocznych. Jednak niektóre gry robią to bardzo dobrze, więc jeśli grasz w te gry, które robią to skutecznie, to warto trzymać tę funkcję włączoną.