Company of Heroes versus DirectX10
Pod koniec zeszłego roku, na łamach naszego serwisu mieliście okazję przyjrzeć się się bliżej grze "Kompania Braci" w dziale "po godzinach". Ten dosyć szczególny RTS doczekał się ciepłego przyjęcia u graczy na całym świecie, nie tylko za sprawą ciekawie rozwiązanej rozgrywki, znanej m.in. z poprzedniego sztandarowego produktu Relic Entertainment - Warhammer: Dawn of War; ale również, a dla niektórych głównie, za sprawą ferii "graficznych fajerwerków" oferowanej przez znakomity silnik gry - Essence Engine.
DLA CIEBIECyfrowy Polak - Wykluczenie cyfrowe
Kilka dni temu miała miejsce premiera kolejnego patcha dla tej gry, i nie było by w tym nic dziwnego - po prostu kolejne łatki, gdyby nie pewien drobny szczegół. Aktualizacja do wersji v1.7 pozwala silnikowi tego tytułu korzystać z części dobrodziejstw jakie niesie ze sobą API Direct X10.
Jeśli weźmiemy pod uwagę fakt, że jest to, na swój sposób, klasyczny RTS - "Kompania Braci" od strony graficznej prezentuje się naprawdę znakomicie. Przez długie lata na wielu grach o charakterze strategii czasu rzeczywistego pokutowało przekonanie o przedkładaniu grywalności nad kwestie związane z grafiką. Company of Heroes odżegnuje się od tych stereotypów grubą kreską, ukazując w jaki sposób połączyć te dwie cechy w jedną spójną całość. Co charakterystyczne dla tej gry, jeśli do realizmu pola walki można mieć pewne zastrzeżenia, to już w kwestiach związanych z jej graficznym engine'm trudno do czegokolwiek się przyczepić.
Na pierwszy rzut oka, gdy zrobimy zbliżenie z pewnej wysokości, przychodzi do głowy jedna myśl - tej grze tak naprawdę niewiele brakuje pod względem grafiki do przyzwoitego FPS-a! Biorąc pod uwagę wielkość pola (sektora) na jakim dane jest nam rozgrywać partię, robi naprawdę duże wrażenie. Oczywiście tekstury są mniejszej rozdzielczości od tych które znamy z nowoczesnych "First Person Shooterów", ale tak naprawdę ilość akcji i efektów, zarówno graficznych jak i dźwiękowych przewijających się w trakcie rozgrywki jest iście imponująca.
Jeśli dołożymy do tego fakt, że większość "cut scenek" jest generowanych w czasie rzeczywistym za pomocą silnika gry, to będziemy mieć pełny obraz tego, jak duży potencjał posiada ten silnik, i jak duża jest jego elastyczność.
Gra obsługuje najnowsze osiągnięcia z dziedziny renderingu 3D, takie jak HDR, dynamiczne cienie, efekty ognia, dymu, mgły oparte na obliczeniach shaderów. Jeśli dodatkowo weźmiemy pod uwagę dość dużą rozdzielczość tekstur względem wielkości pola w maksymalnym oddaleniu, zaawansowany silnik fizyki, oraz wysokie AI przeciwników, dojdziemy do wniosku, że bez super wydajnego sprzętu nie ma co nawet podchodzić do tego tytułu ... Nic bardziej mylnego; gra posiada naprawdę niewygórowane wymagania i w trybie Wysokiej jakości shaderów (DirectX9c) można z powodzeniem zagrać na dosyć przeciętnie-wydajnym komputerze, byle by był stosunkowo nowoczesny.
Autorzy gry jednak nie poprzestali i na tym, i aby nieco uatrakcyjnić graczom swój produkt "doposażyli" go w obsługę niektórych funkcji zgodnych z nowym API dostępnym tylko pod Vistą - DirectX generacji 10-tej. Należy jednak zauważyć, że same karty z obsługą instrukcji zgodnych z Shader Model 4.0 istnieją już na rynku od momentu premiery G80 nvidii, czyli od około 7-miu miesięcy, a ilość tytułów obsługujących to API, do tej pory, wciąż pozostaje na poziomie ~0.
Patch do "CoH" na pewno jest jedną z pierwszych jaskółek przepowiadających nadejście okresu panowania nowego modelu cieniowania, jednak nie zupełnie pierwszą.
Po wydaniu dema gry - konsolowej konwersji Lost Planet : Extreme Condition, czy Call of Juarez tak naprawdę nie można było jednoznacznie określić stanowiska osądzającego nowego DirectX-a. Dema niedopracowane, sterowniki jakby też nie "lubiące" się z Vistą, a sama rewolucyjność grafiki okazała się odgrzewanym "kotletem", za "przystawkę" dając nam kolejne wątpliwości
Nowe opcje graficzne
Teoretyczne zmiany jakich dokonano w Company of Heroes dają nadzieję, że DirectX 10 to coś więcej niż tylko puste słowa kolejnych specyfikacji, większe wymagania i konieczność wymiany sprzętu dosyć często ze względu na widzimisie speców od marketingu. Czy okaże się to prawdą zobaczymy po testach, które znajdziecie już na następnych stronach.
A więc co wprowadzono do gry, wraz z hucznie opiewanym DX10? Oto nowe funkcje związane z implementacją tego API w Company of Heroes:
Złagodzone krawędzie cząsteczek przechodzących przez obiekty 3D
W poprzednich generacjach gier programiści wykorzystywali do celu ukazania np. eksplozji dwuwymiarowych "sprajtów", nie były to jednak obiekty stricte 3D. W tej grze wykorzystano tzw. Soft Blending, używając do tego celu "multiple render targets". Zachowuje się tu informacje o głębi dla drugiej tekstury jeszcze przed końcowym nałożeniem tego efektu. Wynikiem są łagodniejsze przejścia tonalne dla FX-a typu eksplozji, czy złagodzenie cieni przechodzących przez różne obiekty w grze w konsekwencji padania na nie światła.
Poprawiona jakość oświetlenia poprzez przeniesienie wszystkich obliczeń na każdy piksel - użycie bardziej dokładnego, precyzyjnego obliczania punktów światła, oraz zaimplementowanie możliwości rzucania cieni przez te punkty.
Światło pochodzące od latarni w DX10 tworzy również własne cienie.
Te nowe funkcje związane są bezpośrednio z możliwościami przetwarzania niemal 5-krotnie dłuższych instrukcji przez PS niż miało to miejsce w DX9. W DX10 wszystkie źródła światła, również te bardziej złożone w postaci "cube map"; niezależnie od tego, czy jest to światło pochodzące od wirtualnego Słońca, Księżyca, latarni, zapałki, czy wybuchów będzie mieć potencjał do tego, aby rzucać swój własny cień! Intensywnie wykorzystywany jest tu także Geometry Shader.
Opcja rzucania cieni od każdego źródła światła w tej grze jest domyślnie włączona, jeśli tylko wybierzemy rendering zgodny z DX10, oraz jeśli cienie te będą włączone.
Mnóstwo dodatkowych, drobnych obiektów (litter objects) w świecie gry.
Obiekty te widoczne są np. na drodze. Na zrzucie ekranu z DX10 widzimy w tamtym miejscu drobne bryłki kamyków.
Często w DX9 mieliśmy do czynienia z terenem, który nie zawierał wielu detali. Ot tekstury pokryte trawą, kilka drzew, gdzie niegdzie jakiś kamyk, dom i to mniej więcej było na tyle. W W celu urozmaicenia wprowadzono tu proceduralnie generowane drobne obiekty, które mają charakter brył 3D, a nie jak to było do tej pory płaskich bitmap narysowanych na podłożu, które tak naprawdę tylko imitowały dany obiekt. Czasem efekt ten poprawiano dokładając bump mapping, ale to działało wyłącznie na zasadzie złudzenia optycznego.
Ilością tych obiektów możemy regulować suwakiem 'jakość modeli' w zakładce ustawień grafiki.
Trójwymiarowa, "krótka" trawa na terenie (short grass).
Trawa również będzie mieć charakter obiektu 3D, a nie jak do tej pory płaskiej "narysowanej" bitmapy. Różnica polega ma tym, że np. żołnierz idący po trawie, naprawdę ją depcze - ergo znajduje się na trawie, a nie na terenie pod nią.
Regulacja nową opcją Ultra 'szczegółowość terenu'.
Po za tym dodano m.in. sprzętowe PCF dla poprawienia jakości cieni, czy przykrycie antyaliasingu dodatkowym kanałem alfa, poprawiając dzięki temu wygląd obiektów z testowym kanałem tego typu np. krzaki czy zarośla.
Trzeba dodać także, że w nowym DirectX10 całe światło będzie zawierać więcej detali (kalkulacja do piksela), a same cienie będą bardziej łagodne, przejścia tonalne mniej zauważalne tak jak to miało to miejsce do tej pory. W starszym DX9 jedynie światło padające z góry/boku (główne oświetlenie sceny) było poprawnie mapowane. Pozostałe źródła, jeśli były, były już tylko kalkulowane do vertexów, a więc zdecydowanie mniej dokładnie niż ma to miejsce w DX10.
Łagodniejsze cienie to kolejna "łatka" rodem z DX10.
Na pierwszym obrazku widać, że antyaliasing działa tylko na krawędzie obiektów, a nie na efekty typu cienia.
W DX10 cienie są bardziej łagodne, co możemy zaobserwować również na pozostałych zrzutach ekranu - nie rzuca się tak w oczy efekt poszarpania ich krawędzi.
Jak testowaliśmy
Konfiguracja testowa:
- procesor: Intel Core2 Duo E6400 2.13GHz (2MB cache L2)
- płyta główna: ASUS P5B (i965P)
- pamięci: Corsair XMS2 2x1024MB DDR2-675 CL4-4-4-12
- dysk twardy: Seagate 320GB (16MB cache) SATAII
- zasilacz: Chieftec GPS-450AA-101 A 450W
Uczestnicy testu: - * Aby dowiedzieć się więcej o testowanej karcie kliknij w linka. W nawiasie podaliśmy częstotliwości GPU i pamięci.
- ASUS GeForce 8800 GTS 640MB — (513/1188/1584 MHz)
- Gigabyte GeForce 8800 GTS 320MB — (500/1180/1600 MHz)
- EVGA GeForce 8600 GTS 256MB — (675/1450/2000 MHz)
- EVGA GeForce 8600 GT 256MB — (540/1180/1400 MHz)
- Galaxy GeForce 8500 GT 256MB DDR2 — (500/1008/800 MHz)
- HIS Radeon HD 2900 XT 512MB — (740/1650 MHz)
System operacyjny i sterowniki:
- Windows Vista Home Premium PL
- ForceWare 158.45 - Vista
- Catalyst 7.5 (8.38.0) - Vista
Gra w wersji 1.0 na potrzeby testu oczywiście została spatchowana do aktualnie obsługującej DX10 wersji 1.7. Pomiary wykonaliśmy na wbudowanym narzędziu benchmarkującym z powodu braku obsługi API DX10 przez program Fraps, oraz problemy z uruchomieniem gry z RivaStatistics Server pod Vistą.
Należy dodać, że instalacja patch'a 1.7 powoduje domyślne włączenie synchronizacji pionowej (vsync). Jak tłumaczy producent, w celu poprawy jakości obrazu - eliminacja negatywnego efektu "tearing". Do testu oczywiście synchronizacja pionowa została wyłączona przy uruchamianiu komendą -novsync.
Kilka słów o wykorzystanych ustawieniach i zabieramy się do testów ...
| ustawienia | jakość wysoka | jakość ultra |
| jakość shaderów | wysokie | Direct3D10 |
| jakość modeli | wysokie | wysokie |
| Szczegółowość tekstur | wysokie | Ultra |
| Cienie | wysokie | wysokie |
| Odbicia | wysokie | wysokie |
| Szczegółowość budynków | wysokie | wysokie |
| Fizyka | wysokie | wysokie |
| Jakość drzew | wysokie | wysokie |
| Szczegółowość terenu | wysokie | wysokie |
| Jakość efektów | wysokie | Ultra |
| Zagęszczenie efektów | wysokie | Ultra |
| Ślady na obiektach | włączone | włączone |
| Szczegółowość modeli | 75% | 100% |
**) przełączenie w tryb 'Ultra' szczegółowości terenu oznaczone jako 'Ultra teren ' w wybranych testach
Metoda antyaliasingu użyta przy pomiarach, to polecane przez producenta 8-krotne wygładzanie krawędzi (przełącznik w grze: 8x dla karty ATI, oraz 8x Q CSAA dla kart nvidia). Wg producenta te dwie metody, dla tych kart, są ze sobą porównywalne z racji podobnej jakości, oraz prezentowanej wydajności.
Pod systemem Windows XP/2000 SP4 opcje odpowiedzialne za rendering wykorzystujący DirectX10 będą nieaktywne, nawet wtedy, jeśli posiadamy kartę zgodną z tym API. To samo dotyczy Visty i kart z modelem cieniowania do 3.0. Nowy przełącznik 'Ultra' dodaje terenowi w grze jeszcze więcej szczegółowości.
Testy: 1680x1050
Wysoka rozdzielczość w proporcji obrazu 16:10. Antyaliasing wyłączony. Pozostałe opcje jak w opisie tabeli.
Pierwsze wnioski? Wydajność nowej implementacji DirectX-a w Company of Heroes nie napawa optymizmem i to ujmując to w bardzo "polityczny" sposób. 3-krotny! spadek FPSów w stosunku do korzystania z DX9c niemal "wgniecie w krzesło" niejednego piewcę nowego Direct3D Microsoftu. Byłoby to całkiem zrozumiałe, jednak fakt, że jest to tylko "implementacja", a nie nowy silnik DX10 utwierdza w przekonaniu, że to kolejna nowoczesna niedoróbka jaką karmią nas od jakiegoś czasu programiści. Jeśli zadamy sobie pytanie, z której strony te wszystkie problemy - może systemu... może producentów kart graficznych... a może samego producenta gry, to i tak na obecną chwilę pozostajemy bez odpowiedzi.
Aby jeszcze nieco zanalizować wyniki, zauważyć trzeba naprawdę nieznaczne obciążenie nową opcją szczegółowości terenu - "Ultra". I znów co z tego, kiedy test ukazuje 30FPS w renderowanej "cut" scence, podczas gdy w realnej grze grać się praktycznie nie da. Kolejna gra i kolejne "zabójstwo" 320MB wersji 8800GTS-a w wysokich rozdzielczościach. Test na tej karcie przebiegał na tzw. "szarpanego", czyli raz z całkiem przyzwoitym framerate'm, by następnie uraczyć nas pokazem slajdów rodem z popularnego wygaszacza ekranu.
Po dodatkowym uaktywnieniu wygładzania krawędzi sytuacja się dramatyzuje do tego stopnia, że na karcie z najmniejszą ilością pamięci doznajemy nieustannych "black screenów" z komunikatem w logu "E_OUTOFMEMORY - Unable to create textures ...", czyli niemożność wykonania przez D3D operacji na teksturach ze względu na zbyt małą ilość pamięci na karcie. W tym przypadku to nie tylko wina tej pamięci, ale niepoprawnego przydzielania dodatkowego ramu z okna lokalnej pamięci systemowej na potrzeby teksturowania. Błąd będzie tkwił gdzieś na granicy BIOS/sterowniki karty.
Testy: 1280x1024
Jak to mówią, nic tu po nas i z rozdzielczości 1680x1050 przechodzimy niżej - 1280x1024, może tym razem DX10 w Kompanii Braci pozwoli nam nieco uatrakcyjnić zabawę na polu walki.
I znów 3 krotne spadki FPS, a na 320-megowym "dżiforsie" nawet niemal 4-krotne. Co ciekawe nowe karty ze średniej i niskiej półki spisują się podobnie - kilka klatek na sekundę w DX10 zarówno pod 8600GTS-em z szybkimi pamięciami GDDR3, jak i pod słabiutkim 8500GT z pamięciami DDR2! Widać zatem, że DX10 potwornie obciąża shadery oraz pamięć karty w aspekcie pojemności. A czy 256MB będzie zbyt małą jej ilością, okaże się dopiero, kiedy ukażą się tytuły pisane od podstaw pod DirectX10, oraz z bardziej zoptymalizowaną obsługą formatów kompresji tekstur. Bo jak widać do tej pory, jest to ciągle traktowane po macoszemu.
Kiedy także w tej rozdzielczości uaktywnimy tryb antyaliasingu krawędzi, wydajność nowego środowiska DX10 wciąż pozostaje w korelacji 3 razy mniej za niewiele więcej.. Co ciekawe, w przeciwieństwie do 8800GTS 320MB, słabsze karty nie powodują zawieszania się gry w efekcie błędu OUT_OF_MEMORY pomimo, że posiadają na pokładzie tylko 256MB. Utwierdza nas to w przekonaniu o słuszności problemu z teksturowaniem "z okna" karty 320megabajtowej, oczywiście chodzi o ten model/sztukę, którą poddaliśmy testowi. Niestety do momentu oddania tekstu nie mieliśmy na stanie drugiej karty, aby sprawdzić czy problem się nie powtarza.
Porównanie wydajności dla jakości już tylko wysokiej, w trybach bez AA i z AA-x8. Wciąż nie da się grać nawet bez wygładzania. Widać natomiast to co zapowiadał producent, pomimo dość dużej ilości obiektów na mapach które są poddawane 8-krotnemu antyaliasingowi, wydajność nie spada tak straszliwie, jak można by się tego spodziewać. Odstępstwem, jak zwykle, okazał się 320MB GTS serii 8800.
Testy 1024x768
To samo porównanie co poprzednio, tylko w kolejnej, niższej rozdzielczości - 1024 x 768 punktów.
DX10 staje się wreszcie grywalny na stosunkowo szybkich kartach, pod warunkiem, że nie przesadzimy z antyaliasingiem. Tylko czym jest granie w tak niskiej rozdzielczości w RTS-y, mogą nam powiedzieć jedynie najwytrwalsi miłośnicy komputerowych strategii.
Na słabszych kartach praktycznie nie zauważymy różnicy w wydajności pomiędzy trybami bez AA, czy z AA x8 ... ba, nie zauważymy nic co przypominało by dynamikę w ujęciu iście minimalistycznym. Co najwyżej można pooglądać efekty jakie oferuje "odmłodzony" silnik tej gry.
Na koniec najniższa rozdzielczość jaką możemy wybrać w opcjach gry. Najsłabsze karty obsługujące nowe API DX10, nie są w stanie wyświetlić więcej, aniżeli kilka klatek w ciągu sekundy w tym środowisku. Celowo nie badaliśmy ich wydajności przy średnich i minimalnych detalach z prostej przyczyny - łatka, która usprawnia silnik gry o pewne funkcje zgodne z DX10 nie wnosi wiele świeżości w tę wirtualną rzeczywistość. Zdecydowanie lepszym wyborem dla posiadaczy tych kart będzie korzystanie z jakości shaderów "Wysokie" pod DX9, aniżeli męczące pokazy slajdów pod brzydko wyglądającym, w niskich detalach, DX10.
Podsumowanie
Podsumowując krótko, ale treściwie; Relic Entertainment nie popisał się zbytnio z wydaniem tej łatki teraz, kiedy sterowniki kart pod Vistę jeszcze straszliwie kuleją. Same poprawki, trzeba przyznać, pokazują już pewien zarys kierunku w jakim podążać będą programiści przy tworzeniu nowych gier. Jednak traktowalibyśmy to bardziej jako poletko doświadczalne zarówno dla samej firmy produkującej grę, jak i dla producentów kart - mają w końcu jakiś punkt odniesienia przy optymalizacji kolejnych sterowników.
Co by nie mówić, te kilka dodatkowych cieni, kamyków, czy "wygładzeń" efektów nie prezentuje się nadzwyczaj rewolucyjnie. Śmiemy twierdzić nawet, że trzeba to określić co najwyżej mianem ewolucji. Przynajmniej na tym etapie, na jakim obecnie znajdują się prace nad optymalizacją obsługi poszczególnych funkcji przez Shader Model 4.0 w sterownikach. Widać natomiast pewną zmianę w zakresie wykorzystania jednostek wykonawczych GPU. Jeżeli do tej pory ogromną rolę odgrywała wydajność teksturowania i szybkość renderowania sceny przez ROP'y, to teraz widzimy większy nacisk na operacje wykonywane na shaderach, szczególnie podniesienie ich dokładności i bardziej intensywnego korzystania z shadera geometrii.
Abstrahując już nieco od funkcjonalności DX10 w Company of Heroes, jest to gra na pewno bardzo dobra, ale nadal grywalna tylko w DX9c. Mając do wyboru granie w jakości Ultra pod starszym "dajrektem", a grę w jakości średniej/niskiej w nowym, wybralibyśmy zdecydowanie to pierwsze rozwiązanie i chyba na obecnym etapie rozwiązań zgodnych z DX10 nie będziemy w tym osamotnieni.