Wywiad z Richardem Huddy z ATI

30 sierpnia 2004 0 przez Paweł Pilarczyk

W dniu dzisiejszym przygotowaliśmy dla Was nietypowy artykuł. Jest nim wywiad z Richardem Huddy z ATI, odpowiedzialnym za kontakty z europejskimi twórcami oprogramowania (głównie gier). Richard odpowiedział na wiele naszych pytań. Nie wahał się nawet opowiadać o swoim konkurencie, firmie NVIDIA. Poniższy tekst w szczególności powinien zainteresować wszelkich fanów nowych technologii, ale także polskich producentów i wydawców gier, którzy chcieliby współpracować z ATI.

ITbiznes: Richard, przede wszystkim wielkie dzięki, że znalazłeś chwilę, by odpowiedzieć na nasze pytania. Ponieważ wielu czytelników ITbiznes zapewne nie wie dokładnie, kim jesteś, opowiedz w kilku słowach o swojej pracy oraz za co jesteś odpowiedzialny w ATI.

Richard Huddy: To ja chciałbym podziękować, że zaproponowaliście mi wywiad. To dla mnie wielki zaszczyt mieć możliwość podzielenia się moim entuzjazmem do pracy z szerszym gronem osób!

W ATI jestem kierownikiem działu odpowiedzialnego za kontakty z europejskimi producentami oprogramwania. Oznacza to, że jestem jedną z osób, które odpowiadają za współpracę pomiędzy ATI oraz europejskimi twórcami i wydawcami oprogramowania. Specjalizuję się w tematyce technicznej, więc większość czasu spędzam na wymianie e-maili z programistami, którym pomagam, jak najlepiej wykorzystać sprzęt ATI. Regularnie prowadzę także konferencje techniczne, podczas których spotykam wielu bardzo mądrych ludzi – co sprawia mi wielką frajdę.

Gdyby próbować krótko opisać, czym się zajmuję: wskazuję twórcom gier, jak najlepiej wykorzystać sprzęt ATI. W rzeczywistości sprawa jest znacznie bardziej skomplikowana, jednak zasadniczo dbam o to, by każda gra działała i wyglądała możliwie najlepiej na sprzęcie ATI.

Karty graficzne rozwijają się bardzo szybko. Regularnie, co 6 miesięcy, na rynku pojawia się nowy układ graficzny. Czy możesz przedstawić naszym czytelnikom Wasze ostatnie układy z rodziny RADEON, oraz jakie wprowadzono w nich nowe funkcje? Jakich układów ATI możemy się spodziewać w najbliższej przyszłości?

Niestety nie mogę Wam zdradzić zbyt wielu informacji o nadchodzących i jeszcze nie zapowiedzianych układach. Natomiast skupię się na naszych najnowszych produktach, która ostatnio pojawiły się na rynku, a także powiem, dlaczego zbudowaliśmy je właśnie w ten, a nie inny sposób.

Nasza najnowsza linia produktów kierowanych dla graczy obejmuje układy RADEON X800, X600 i X300.

Zacznijmy od samej góry – X800. Układ potrafi narysować 16 pikseli w każdym cyklu zegara (co oznacza, że jest naprawdę piekielnie szybki). Wprowadza też nową metodę kompresji, 3Dc, którą zajmę się trochę później.

Karty graficzne z układem RADEON X800 dostępne są w dwóch wersjach: AGP i PCI Express. Niezależnie od tego, czy masz super nowoczesnego peceta, czy też takiego, który ma już kilka lat, w obydwu możesz zainstalować X800. PCI Express to nowy standard szyny kart rozszerzeń i jeśli chcesz nabyć najlepszy produkt dla tej szyny, X800 będzie rewelacyjnym wyborem. Produkt został stworzony z myślą o nałogowych graczach, czyli takich, którzy wymagają od swego sprzętu najwyższej wydajności i najlepszej jakości – bez żadnych kompromisów. X800 zapewni im rewelacyjną wydajność, nawet w najwyższych rozdzielczościach, a jakość generowanego obrazu jest najlepsza na tej planecie.

Dla mniej wymagających przeznaczony jest X600, który zasadniczo jest produktem mającym zastąpić 9800 PRO. X600 jest jednocześnie tańszy i produkowany wyłącznie w wersji PCI Express. RADEON X600 to karta dla typowych graczy. Zapewni im fantastyczną wydajność przy świetnej cenie.

Najprostszym i najtańszym produktem jest X300, który jest dostępny także wyłącznie w wersji PCI Express. Jest o połowę wolniejszy od X600, jednak świetnie nadaje się do surfowania po internecie, prac biurowych i okazyjnego grania. Jakość generowanego obrazu jest wyjątkowa, a produkt naprawdę jest wart swych pieniędzy.

I, oczywiście, nadal na rynku dostępne są karty AGP, jak 9800 czy 9600 – więc dla każdego znajdzie się coś odpowiedniego.

Zanim zatrudniłeś się w ATI, pracowałeś u jej bezpośredniego konkurenta, firmy NVIDIA. Jaki był główny powód, że zmieniłeś pracodawcę? Jakie są – Twoim zdaniem – największe różnice między tymi dwoma firmami?

Myślę, że największa różnica to filozofia i „poglądy korporacyjne”. Celem ATI jest tworzenie sytuacji „zwycięzca-zwycięzca”, gdy to, co jest dobre dla ATI, jest też dobre dla jej klientów i partnerów. Skupiamy się przede wszystkim na wysokiej jakości naszych produktów i dbamy o to, by były jak najbardziej opłacalne. Natomiast nie mamy obsesji na punkcie technologii tylko po to, by bawić się tą technologią. Rozumiemy, jak istotne jest być liderem pod względem technologicznym, jednak to, czego pragniemy najbardziej, to zadowolenie gracza.

Gdy jeszcze pracowałem w NVIDII, coraz bardziej byłem zawiedziony tym, że firma skupia się nie na tym, w czym się specjalizuje (a więc w produkcji układów graficznych), a tym, jak umiejętnie omamić rynek. Przykładem takiego omamienia było ponowne wprowadzenie układu GeForce2 pod nazwą GeForce4 MX. Nazwa GeForce4 MX sugeruje, że jest to produkt lepszy od GeForce3. A przecież nie jest! Wyobraźcie sobie, jak zirytowani musieli być ludzie, którzy dokonali „upgrade’u” karty graficznej z GeForce3 na GeForce4 MX.

ATI bardzo dba o kontakty ze swoimi partnerami i klientami. Tymczasem NVIDIA przestała dbać o swoich partnerów – dba tyko o swoje interesy.

Mam nadzieję, że ostatnie dwa lata stanowiły bolesną nauczkę dla firmy NVIDIA. Prawda jest taka, że konkrencja w jakimkolwiek sektorze rynku jest nie tylko dobra dla klienta, ale także dla konkurentów. Konkrencja powoduje, że jesteś silny i zdrowy, podczas gdy brak konkurencji sprawia, że jesteś leniwy i arogancki.

Obecnie chyba oczywiste jest, że zarówno ATI, jak i NVIDIA skupiają się na dostarczeniu graczom jak najlepszych technologii. Wydaje mi się, że właśnie o to od początku chodziło.

ATI zaprezentowała w tym roku kilka nowych, ważnych technologii. Opracowaliśmy nową metodę kompresji tekstur, która pozwoli na wyraźne podniesienie jakości obrazu w grach, a w dodatku jest bardzo prosta w implementacji dla twórców gier. Mamy także układy graficzne z natywnym wsparciem dla PCI Express (nie musimy stosować żadnych kłopotliwych, sprzętowych mostków).

Wiadomo, że potoki renderujące w układach RADEON 9500/9600/9700/9800 operują na 24-bitowych, zmiennoprzecinkowych (FP) danych. Tymczasem rodzina GeForce FX sprawnie radzi sobie z danymi 16-bitowymi, przy których precyzja jest niższa, więc jakość generowanego obrazu gorsza. GeForce FX umożliwia pracę na danych 32-bitowych typu FP, jednak wydajność wtedy drastycznie spada. Czy układy nowej generacji, ATI RADEON X800 oraz NVIDIA GeForce 6800 mają jakieś podobne bolączki?

Gdyby porównać specyfikację układów GeForce 6800 i RADEON X800, początkowo można odnieść wrażenie, że układy te są do siebie bardzo podobne. Oba mają 16 potoków przetwarzających piksele i 6 potoków przetwarzających wierzchołki. Oba współpracują z super-szybką pamięcią GDDR3. Tymczasem jeśli bardziej zagłębić się w specyfikację obu chipów, łatwo zauważyć, że produkt ATI jest lepszy pod tymi względami, które się liczą najbardziej.

Prosty model programowania wspierany przez ATI przez ostatnie dwa lata to: „Używaj poprawnie interfejsu DirectX 9, a Twoja aplikacja będzie działać szybko”. Dla porównania, NVIDIA udostępnia obszerną instrukcję programowania swoich układów, z której dowiadujemy się, w jakiej kolejności należy układać instrukcje naszego programu, kiedy powinno się używać 16-bitowej precyzji koloru w miejscu precyzji 32-bitowej i które instrukcje działają najlepiej na sprzęcie NVIDII. Czytałem instrukcję dla programistów opublikowaną przez NVIDIĘ – jest zastraszająca!

Niestety rodzina GeForce 6800 cierpi na te same bolączki, co jej poprzednicy. Wystarczy, że spróbujesz użyć dodatkowego rejestru, a tracisz sporo na wydajności. Jeśli użyjesz zmiennoprzecinkowego koloru 32-bitowego zamiast 16-bitowego, też musisz liczyć się z tym, że wydajność może spaść. Wszystko to powoduje, że pisanie aplikacji dla sprzętu NVIDII jest dla programistów naprawdę nie lada wyzwaniem.

Tymczasem wydajność układów RADEON X800 bardzo łatwo przewidzieć. Im dłuższy jest kod dla jednostki Pixel Shader, tym więcej czasu zajmie jego wykonanie. Relacja jest na tyle liniowa, że twórcy oprogramowania mogą w prosty sposób ocenić wydajność X800 wyłącznie przeliczają liczbę instrukcji w kodzie. W ten sposób łatwiej jest im optymalizować kod niezależnie od platformy, na jaką jest przeznaczony. Nie wywieramy żadnego nacisku na twórców gier, w przeciwieństwie do NVIDII, która wali w ich drzwi grubymi instrukcjami programowania, opisującymi, co i jak zrobić, by gra chodziła szybciej.

Najnowsza rodzina układów graficznych ATI X800 wykorzystuje jądro R420. Dlaczego ATI nie zaimplementowała w tych układach specyfikacji Shader Model 3.0, w przeciwieństwie do NVIDII, której układy GeForce 6800 są już tą specyfikacją zgodne?

ATI skupiła się na technologiach, które prezentują rzeczywiście jakąś wartość dla konsumentów (głównie graczy). Chcieliśmy podnieść jakość grania na naszym nowym sprzęcie i całkowicie skupiliśmy się właśnie na tym jednym celu.

Zależało nam na tym, by stworzyć układ, którego architektura jest łatwa do zrozumienia, a wydajność łatwa do przewidzenia. Istotne dla nas było to, żeby nasz nowy chip zapewnił rewelacyjną wydajność przy świetnej jakości obrazu, przy minimalnym wysiłku ze strony twórców gier. Tymczasem NVIDIA skupiła się na modelu cieniowania 3.0, mimo że wszyscy wiemy, że gry z obsługą SM 3.0 są praktycznie niedostępne, a w większej ilości pojawią się najwcześniej za rok.

W ATI wiedzieliśmy, że – oprócz wysokiej wydajności – drugą istotną rzeczą, którą trzeba dodać, jest natywne wsparcie dla PCI Express oraz nowa metoda kompresji tekstur, która wyeliminuje wiele problemów, na jakie trafiają twórcy gier każdego dnia.

R420 udostępnia nową funkcję, kompresję map normalnych, zwaną 3Dc. Czy możesz nam powiedzieć nieco więcej o tej technologii? Co tak naprawdę oznacza skrót „3Dc”?

3Dc to po prostu „Three Dimensional Compression” („kompresja trójwymiarowa”). Jej zadaniem jest wspieranie innej technologii, zwanej „mapowaniem normalnych”, która znacznie podnosi jakość obrazu w grach. Mapowanie normalnych to technika wykorzystana w takich grach, jak Half-Life 2, Doom 3 czy Far Cry, a także w wielu innych. Zapewnia ona nową jakość, jakiej do tej pory nie widzieliśmy w grach.

3Dc to technologia kompresji tekstur specjalnie przystosowana do kompresowania map normalnych (które zazwyczaj są siatkami o 32-bitowej precyzji każdego piksela). Po kompresji precyzja zostanie zmniejszona o połowę – do 16 bitów na piksel. Można dzięki temu zmniejszyć o połowę ilość wymaganej pamięci na mapy normalnych. Nakład pracy ze strony programistów jest naprawdę minimalny – muszą tylko dodać kilka linijek kodu.

Tak naprawdę funkcja 3Dc jest jeszcze bardziej wszechstronna, niż to omówiłem przed chwilą. Powyżej przedstawiłem tylko krótkie podsumowanie. 3Dc powoduje, że gry będą działać szbciej wyglądać lepiej, przy bardzo niewielkim wysiłku ze strony programistów gier.

Przy okazji funkcji 3Dc możecie łatwo zrozumieć filozofię ATI. Po tym, jak opracowaliśmy technologię 3Dc, mogliśmy ją opatentować i ostro walczyć o to, by żaden inny producent układów graficznych nie mógł korzystać z wynalezionej przez nas funkcji. Tymczasem jest zupełnie odwrotnie. Pozwalamy każdemu chętnemu na używanie 3Dc. Nikt nie musi nam płacić za licencję, nie musi uzyskać naszej zgody – po prostu może z 3Dc korzystać do woli. To świetny przykład tego, jak konstruktywną rolę odgrywa ATI na tym wielce konkurencyjnym rynku.

Wiadomo, że gry cechują się rocznym, a nawet dwuletnim opóźnieniem, jeśli chodzi o wykorzystanie funkcji 3D wprowadzanych w nowych układach graficznych. Czy ATI wspomaga zatem środowiska akademickie przy uniwersytetach, które starają się wykorzystać najnowsze funkcje na bieżąco?

Naukowcy i studenci z instytutów akademickich potrafią wykorzystać najnowsze układy do granic możliwości. Wiele radości sprawia nam obserwowanie, jak powstają ich nowe projekty. I chociaż staramy się im pomóc najlepiej jak tylko potrafimy, to jednak przede wszystkim skupiamy się na grach. Zależy nam, żeby to właśnie gry wykorzystywały pełną moc i wszystkie funkcje naszych układów.

Projekty naukowe mają wielokrotnie duży wpływ na technologie wykorzystywane w grach, co bierzemy oczywiście pod rozwagę. Dlatego wolimy współpracować z naukowcami, którzy skupiają się na nowych technikach, mogących poprawić gry. Ważne jest jednak, by jednocześnie docenić wartość samych badań naukowych. Obecne gry są już tak bardzo matematycznie zaawansowane, że nietrudno dojść do wniosku, iż większość badań naukowych związanych z grafiką ma pewien wpływ na gry przyszłości.

Kod shaderów (jednostek cieniowania pikseli oraz wierzchołków) twórcy gier mogą tworzyć przy wykorzystaniu kilku różnych języków: HLSL, Cg, GLSLang. Który z tych języków jest Twoim ulubionym i dlaczego?

Jestem sercem związany z interfejsem DirectX. Już od 8 lat jestem zaangażowany w powstawanie tego interfejsu oraz gier go wykorzystujących. Dlatego nie dziwne, że moim ulubionym i preferowanym językiem jest Microsoft HLSL. Bardzo blisko współpracujemy z Microsoft i muszę stwierdzić, że HLSL jest rewelacyjnym językiem zarówno dla obecnego, jak i przyszłego sprzętu. HLSL oferuje też najlepszy kompilator, który generuje najbardziej wydajny kod ze wszystkich kompilatorów tego typu, które widziałem. Microsoftowi należą się słowa uznania za HLSL. Język jest bardzo dobrze zaprojektowany dla obecnych i nadchodzących zastosowań, oferuje rewelacyjny kompilator i został w krótkim czasie bardzo ciepło przyjęty przez prawie wszystkich twórców gier.

Cg to inicjatywa NVIDII mająca ułatwić pisanie kodu shaderów. Ponieważ jednak jest to ich własny standard, niewiele obecnych (oraz niewiele przyszłych) gier go wykorzystuje. Ponieważ alternatywne języki programowania kodu shaderów niczym Cg nie ustępują, nie widzę powodu, dla którego ktokolwiek miałby Cg wykorzystywać.

GLSLang to język przystosowany do interfejsu OpenGL, więc jeśli tworzysz swoje aplikacje pod OpenGL, na pewno zdecydujesz się na jego użycie. Osobiście uważam, że HLSL jest nieco lepszy, jednak jest to sprawa gustu. GLSLang jest dość do HLSL podobny, więc bez trudu można się przestawiać z jednego języka na drugi.

Co sądzisz o super buforach w OpenGL 2.0? Jaki jest główny powód tego, że super bufory nie zostały zaimplementowane w Direct3D?

Za każdym razem, gdy Microsoft pracuje nad nową wersją DirectX, musi zostać podjęta decyzja, jakie funkcje zostaną w tej wersji zaimplementowane. Chociaż Microsoft to gigantyczna firma, zespół pracujący nad DirectX jest stosunkowo niewielki, co znaczy, że jest dość ograniczony pod względem zasobów, badań i czasu. Myślę, że zespół po prostu podjął decyzję o zaimplementowaniu innych, być może ważniejszych funkci w DirectX 9, tak by wyrobić się z założonym planem na czas.

Super bufory to ciekawy i elegancki pomysł, który ma bardzo wiele zastosowań, jednak musimy pamiętać, że wszystkie efekty, jakie udostępniają nam super bufory, można uzyskać nieco inną metodą wykorzystując obecne interfejsy API. Może alternatywne metody nie są aż tak efektywne, ale ważne jest, że wszystko da się zrobić. Na pewno wsparcie dla super buforów pojawi się w przyszłych wersjach DirectX, jednak ich implementacja musi być bardzo dobrze przemyślana. Mam nadzieję, że wsparcie to pojawi się już w następnej wersji DirectX.

Układy RADEON X800, X600 i X300 obsługują magistralę PCI Express, która zastąpi AGP. Jaki wpływ na przyszłe gry będą miały karty graficzne PCI Express? Proszę o jakieś przykłady.

Zasadnicza różnica między kartami AGP i PCI Express jest taka, że dane do kart AGP można szybko zapisywać, jednak odczytywanie tych danych odbywa się bardzo wolno. Asymetria jest na tyle duża, że dane zapisywać można do kart AGP z szybkością ponad 2000 MB/s, jednak pobierać je można z przepustowością zaledwie 130 MB/s. Asymetria jest główną przyczyną tego, że prawie żadna gra nie wykorzystuje karty graficznej do tego, by ta wygenerowała jakieś dane, które mogą być wykorzystane przez procesor.

Dla porównania, PCI Express umożliwia jednoczesny zapis i odczyt danych z szybkością około 4000 MB/s! Dzięki temu twórcy gier będą mogli pobierać dane generowane przez kartę z powrotem, by poddać je obróbce przez procesor główny komputera (CPU). Umożliwi to uzyskanie wielu niespotykanych dotąd efektów, jak bardzo realistycznie wyglądających cieczy czy dymu. Przykładowo, rzeki będą mogły zmywać przeszkody, które im staną na drodze, a dym będzie mógł zakrzywiać się na krawędziach budynku. Dzięki PCI Express zobaczymy wiele naprawdę rewelacyjnych efektów, które zupełnie mogą zmienić sposób, w jaki będziemy postrzegać gry.

Twórcy gier zaczną wykorzystywać stawiane im możliwości już w przyszłym roku, a masowo będą z nich czerpać w latach następnych. Oczekujemy, że PCI Express dramatycznie zmieni nadchodzące gry.

W jaki sposób został zaimplementowany stałofunkcyjny potok renderujący w układach X800/X600/X300? Czy pod jakimkolwiek względem jest on lepszy od potoku programowalnego? Czy programiści powinni stosować stary czy nowy system zarządzania shaderami?

Począwszy od układu RADEON 9700 PRO, w naszych układach nie ma już stałofunkcyjnego potoku renderującego, rozumianego jako tradycyjna jednostka T&L. Implementujemy ją po prostu za pomocą programu dla jednostki cieniowania wierzchołków. Program ten jest częścią naszego sterownika. Dlatego też możliwe jest przyspieszenie pewnych funkcji w grze, gdy stworzy się prostszą wersję takiego programu. Zalecamy programistom, by zawsze używali programowalnych shaderów jeśli chcą, by ich gry działały z możliwie najwyższą wydajnością. Ponieważ jednak wydajność gier nie zależy od ich części stałofunkcyjnej, ostateczną decyzję pozostawiamy programistom. Jeśli nie chcą wykorzystywać jednostki cieniowania wierzchołków, nie zmuszamy ich do tego.

RADEON X800 udostępnia 6 potoków przetwarzających wierzchołki i 16 potoków przetwarzających piksele. Czy programiści muszą w jakiś sposób optymalizować swoje gry, by te wykorzystały dodatkowe potoki, czy po prostu architektura układu jest jakby schowana przed programem i działa zawsze możliwie najbardziej efektywnie?

Twórcy gier w ogóle nie muszą się przejmować architekturą naszych układów i większą liczbą potoków renderujących. Nasz sprzęt po prostu działa szybciej dzięki dodatkowym potokom. Cechę tę programiści po prostu uwielbiają!

Jedyną rzeczą, o której muszą pamiętać twórcy gier jest to, by interfejs gry był czytelny w wysokich rozdzielczościach.

NVIDIA udostępnia specjalne narzędzie, NVPerf, które analizuje wydajność kodu shaderów. Program ułatwia programistom optymalizowanie gier tak, by działały możliwie najszybciej na sprzęcie NVIDII. Narzędzie umożliwia bardzo łatwe odszukanie wszelkich wąskich gardeł w potoku renderingu, które mogą wpływać na zmniejszenie wydajności w grze. Czy ATI planuje udostępnienie podobnego narzędzia dla kart ATI?

W naszym laboratorium mamy szereg narzędzi, które analizują wydajność aplikacji 3D, a obecnie pracujemy nad wtyczką do jednego ze środowisk, nad którym pracuje Microsoft. Środowisko to zostanie udostępnione jeszcze tego lata.

Jednak to, co najlepsze w układach ATI to fakt, że programiści nie muszą wcale się specjalnie wysilać, by ich gry działały możliwie najwydajniej na naszym sprzęcie. Jeśli weźmiesz to pod uwagę, zauważysz, że wszystkie dodatkowe narzędzia NVIDII to dowód na to, że bez nich bardzo ciężko jest ocenić, jak wydajny będzie Twój kod na ich sprzęcie.

Gdy twórcy gier optymalizują je dla sprzętu ATI, na czym się powinni skupić? Wymień w trzech punktach.

Oto moje podsumowanie optymalizacji:

    1. Używaj w odpowiedni sposób DirectX (lub OpenGL) i zauważysz, że automatycznie Twoja aplikacja będzie działała wydajnie na sprzęcie ATI.
    1. Myśl przede wszystkim nad algorytmem, a nie szczegółach jego implementacji.
    1. Regularnie ćwicz i dużo śpij.

Naprawdę – to niewiarygodne, jak dobrze się sprawdza ta receptura! Tak, są też inne szczegóły, które wychodzą „w praniu”, jednak zdecydowanie najważniejszy jest punkt pierwszy z powyższej listy.

Jakie są Twoim zdaniem trzy najważniejsze funkcje zaimplementowane kiedykolwiek w układach ATI?

Myślę, że zdecydowanie najważniejsze są programowalne shadery. Całkowicie zmieniły one podejście programistów do tworzenia grafiki. Mogą oni teraz oddać stery w ręce osób kreatywnych i z bogatą wyobraźnią (twórców gier, projektantów czy artystów).

Kolejna funkcja to zunifikowana pamięć. Programiści nie muszą się ciągle martwić, gdzie w pamięci umieszczać poszczególne składowe grafiki. Stara architektura polegająca na podziale pamięci wideo na kilka dedykowanych buforów, jak to miało miejsce w przypadku chipów 3Dfx, mogła powodować u niektórych podziw, jednak była koszmarnie niewygodna do programowania.

Wreszcie ostatnią funkcją na mojej liście są sprzętowe transformacje i oświetlenie. Chociaż jest to już funkcja raczej przestarzała, to jednak każdy, kto jest zaangażowany w grafikę 3D od lat, pamięta, jak wiele zmieniło wprowadzenie układów ze sprzętowymi jednostkami transformacji i oświetlenia. Sprzętowe T&L było kluczowym osiągnięciem w grafice 3D, chociaż funkcja została już zastąpiona przez programowalne jednostki cieniowania pikseli i wierzchołków – zaledwie w pięć lat po premierze T&L!

ATI, niemal równocześnie z firmą Matrox, zaimplementowała w 2002 roku funkcję sprzętowego mapowania przemieszczeń w swoich układach graficznych. Jaki jest powód tego, że funkcja ta do tej pory nie jest powszechnie stosowana w grach?

Problem z mapowaniem przemieszczeń jest taki, że nie jest to funkcja, jakiej oczekują twórcy gier. Na pewno będą oni tę technologię wykorzystywać w przyszłości, na razie jednak mają wiele innych problemów na głowie, których wykorzystanie mapowania przemieszczeń nie rozwiąże.

Uważam, że wprowadzenie przez nas sprzętowego mapowania przemieszczeń dwa lata temu było jedynie błędem jeśli chodzi o ramy czasowe. Wprowadziliśmy tę funkcję po prostu sporo za wcześnie. Będzie na pewno wykorzystywana w przyszłości, ale jeszcze nie dziś.

Dwa główne interfejsy programowania aplikacji to OpenGL i Direct3D. Oba ze sobą rywalizują, więc producenci sprzętu muszą niestety dostarczać wsparcie dla obydwu. Czy ATI ma jakieś swoje priorytety jeśli chodzi o te API? Jakie jest zdanie ATI o niedawno wprowadzonym OpenGL 2.0 z jego zintegrowanym językiem GLSLang?

Chociaż zwolennicy zarówno jednego, jak i drugiego interfejsu API chwalą ich zalety, to jednak OpenGL i DirectX zmierzają tak naprawdę w tym samym kierunku.

Microsoft używa interfejsu DirectX w celu odkrywania nowych funkcji zarówno przed producentami sprzętu, jak i oprogramowania. Daje się to zauważyć szczególnie w przypadku DirectX 9, zaprezentowanym pod koniec 2002 roku. Ta wersja interfejsu obsługuje funkcje, które dostępne są w najnowszym sprzęcie lub dopiero pojawią się w tym, który zostanie zaprezentowany za dwa lata (czyli 4 lata licząc od daty premiery DX9)! Ponieważ teraz Microsoft tak wyraźnie prowadzi, ma bardzo silny wpływ na rynek sprzętu graficznego. Znacznie silniejszy, niż mieli jeszcze, dajmy na to, pięć lat temu. Pamiętajmy jednak, że mimo swej roli, Microsoft słucha życzeń zarówno producentów sprzętu, w tym ATI, jak i producentów i wydawców gier. Microsoft przewodzi, jednak są otwarci na wszelkie sugestie z zewnątrz.

Z drugiej strony mamy OpenGL, gdzie nie daje się wyodrębnić żadnej firmy, mającej większy wpływ na rozwój interfejsu od innych. Grupa OpenGL ARB (Architecture Review Board), składająca się z firm odpowiedzialnych za ten interfejs, decyduje o nowych funkcjach podczas spotkań i głosowań. Jak pokazuje historia, proces ten powoduje znaczne spowolnienie przy wprowadzaniu nowych funkcji, niż to ma miejsce w przypadku Microsoftu.

Może to brzmieć tak, jakbym obierał stronę DirectX. I rzeczywiście, osobiście wolę ten właśnie interfejs, ale sprawy nie są takie proste, jak to się może wydawać.

Myślę, że głównym atutem OpenGL jest to, że podtrzymuje konkurencję między interfejsami API. Tak jak konsumenci zyskują na fakcie, że ATI ma aktywnych konkurentów, tak zyskuje również DirectX z racji faktu obecności OpenGL, który jakby popycha DirectX i co chwila mówi: „czy jesteś pewien”, „a co z tą funkcją?” i tak dalej. Uważam, że Microsoft dlatego tak silnie rozwija DirectX, gdyż cały czas czuje parcie ze strony OpenGL.

OpenGL daje także producentom jak ATI możliwość eksperymentowania z nowymi pomysłami i wypróbowywania ich wspólnie z producentami gier. Możemy z łatwością dodawać do OpenGL nowe, unikalne dla nas rozszerzenia znacznie łatwiej, niż gdziekolwiek indziej.

Wsparcie dla OpenGL ze strony ATI jest niezwykle ważne. Jesteśmy członkiem ARB od wielu lat. Wspólnie z 3DLabs zostaliśmy poproszeni o zarysowanie wstępnej specyfikacji GLSLang. Nadal bardzo blisko współpracujemy z pozostałymi członkami ARB nad tym, by rozwijać OpenGL i dbać o to, by interfejs wciąż był nowoczesny.

ATI bardzo silnie promuje rendering obrazu o wysokiej precyzji (High Definition). Jakie są kluczowe funkcje układów ATI z serii „X”, które się na niego składają?

Kluczem do sukcesu dla renderingu High Definition jest zadziwiająco wysoka wydajność grafiki. Włożyliśmy niesamowitą ilosć wysiłku w to, by uczynić z X800 najszybszy układ graficzny na tej planecie, jednak wysoka liczba klatek na sekundę jest niczym, jeśli jakość generowanego obrazu jest niska, dlatego upewniliśmy się, by obraz generowany przez X800 był zawsze najwyższej jakości. Dlatego też nie wspieramy 16-bitowego koloru zmiennoprzecinkowego – obraz tworzony z jego wykorzystaniem po prostu nie wygląda dobrze!

Zatem nasza ideologia dotyczaca X800 jest prosta.

Sugerujemy, byś zainstalował X800 w silnym pececie i zainstalował swoją ulubioną grę. Ustaw wszystkie opcje odpowiedzialne za grafikę na wartości maksymalne. Zmień rozdzielczość na bardzo wysoką, jak 1600×1200. Włącz wygładzanie krawędzi i ustaw tryb AA na najwyższy. Uaktywnij filtrowanie anizotropowe tekstur, i także ustaw jego stopień na najwyższy. Włącz cienie, odbicia i wszystkie dostępne w opcjach gry efekty specjalne. Gdy to uczynisz, zacznij grać. Zauważysz, że na X800 gra nadal chodzi zadziwiająco płynnie!

X800 to znaczący krok w kierunku renderingu o kinowej jakości. Umożliwia Ci grę ze wszystkimi opcjami włączonymi na wartość maksymalną. Tego nie zapewni Ci żadna inna karta graficzna.

Jakich nowych funkcji 3D możemy się spodziewać w nadchodzących układach graficznych? Układy obecnej generacji udostępniają programowalne jednostki cieniowania pikseli i wierzchołków, dzięki którym możliwe jest uzyskanie niemal dowolnych efektów 3D. Czy to oznacza, że jedyne, czego się możemy spodziewać po nowych układach, to wyższych zegarów taktujących oraz większej liczby potoków przetwarzających piksele i wierzchołki? Czy nie zobaczymy żadnych nowych jednostek?

Wszystkie układy graficzne, od momentu wprowadzenia programowalnych shaderów, spełniają „Założenia Turinga”, a zatem mogą rozwiązać dowolny problem, jeśli tylko damy im odpowiednio dużo czasu i zasobów (głównie pamięci). Można Ci zatem wybaczyć to, że sugerujesz, iż nic nam już nie zostało innego, jak zwiększanie zegara, by przyspieszyć nasze układy.

Tymczasem jest to bardzo odległe od prawdy…

Kluczem do zrozumienia faktu, że obecne układy mogą „rozwiązać każdy problem” jest fakt, że pierwszy IBM też mógł „rozwiązać każdy problem”. Wszystko się zgadza w teorii, ale jest bezużyteczne w praktyce. W rzeczywistości musimy dodać do naszych układów jeszcze wiele nowych funkcji, by pracowały one jeszcze efektywniej, a nadchodzący system operacyjny Microsoftu (znany obecnie pod nazwą kodową Longhorn) będzie z tych funkcji korzystał.

Przede wszystkim, musimy dodać wsparcie dla pamięci wirtualnej. Obecnie obsługa pamięci wideo na kartach graficznych wymaga interwencji procesora komputera, w efekcie czego traci on sporo czasu. W dodatku proces wymaga sprytnej obsługi ze strony programowej, a więc pracy zarówno programistów Microsoftu, jak i grupy z ATI odpowiedzialnej za sterowniki. Jeśli dodamy wsparcie dla pamięci wirtualnej, problem automatycznie zniknie.

Kolejny problem jest taki, że obecnym procesorom graficznym nie można przerywać podczas operacji rysowania. Bardzo ważną funkcją jest to, by można było układ zatrzymać podczas pracy nad jakimś zadaniem, zlecić mu inne zadanie do wykonania, a gdy skończy, nakazać mu powrócić do poprzednio wykonywanego zadania. Możliwość ta znacznie zmieni komfort pracy z systemem. System, który reaguje natychmiast, będzie bardzo przyjemny podczas pracy, w przeciwieństwie do takiego, który reaguje bardzo powoli i z opóźnieniami. Microsoft planuje dodać wsparcie dla omawianej funkcji w systemie Longhorn, zatem my będziemy musieli poprawić nasze układy, by także spełniały założenia.

Jest jeszcze wiele innych funkcji, które dobrze byłoby mieć. Przykładowo, obecnie bardzo trudno jest dostarczać przypadkowych danych do jednostek cieniowania pikseli i wierzchołków. Interfejs API zmusza programistów, by dostarczali dane w szczególnym formacie ze szczególnych źródeł, tak by sprzętowi graficznemu było łatwiej owe dane przetworzyć. Życie byłoby jednak znacznie prostsze dla programistów, gdyby mogli kierować dane do shaderów w sposób bardziej przypadkowy. Umożliwiłoby to kreatywnym programistom uzyskanie nowych efektów bez obecnego blokowania się na sztucznych ograniczeniach.

To tylko kilka przykładów, jednak zapewniam, że jest jeszcze wiele do zrobienia w przyszłości!

Czy jest możliwe emulowanie modelu cieniowania 3.0 na sprzęcie udostępniającym model cieniowania 2.0? Teoretycznie możliwe jest zastąpienie długich programów przeznaczonych dla jednostki Pixel Shader 3.0 kilkoma krótszymi programami zgodnymi z jednostkami Pixel Shader 2.0. Czy zatem jest możliwe przygotowanie specjalnego sterownika dla kart zgodnych z SM 2.0, który umożliwi uruchamianie aplikacji przeznaczonych dla SM 3.0?

Pixel Shader 3 i Pixel Shader 2 są identyczne, jeśli chodzi o to, co można uzyskać przy ich pomocy, w dodatku udowodniliśmy w grze Far Cry, że wydajność modelu cieniowania 2b na X800 jest szybsza od modelu cieniowania 3 na sprzęcie NVIDII. Myślę, że to zaskoczyło wielu ludzi, ale to tylko efekt tego, że architektura X800 jest po prostu bardziej wydajna. Pixel Shader 3 daje programistom większą swobodę – jednak ta swoboda wiąże się z koniecznością zapłacenia pewnej ceny. Tą ceną dla obecnego sprzętu jest spadek wydajności, gdy tylko zacznie się korzystać z Pixel Shadera 3. To raczej nie jest akceptowalne!

Twórcy gier twierdzą, że oba modele cieniowania umożliwiają uzyskanie dokładnie takiej samej jakości obrazu. Nie ma nic, co można stworzyć przy pomocy jednego modelu cieniowania, a nie da się na drugim (i odwrotnie).

I nie, nie planujemy wprowadzenia sterowników, które będą konwertowały kod PS 3.0 na PS 2.0, bowiem odbywałoby się to kosztem nieakceptowanlego spadku wydajności w grach. Pracujemy jednak bardzo blisko z twórcami gier i wiemy, że wszyscy przede wszystkim tworzą kod PS 2.0 zanim nawet wezmą pod uwagę możliwość skorzystania z kodu PS 3.0. W końcu są już miliony użytkowników sprzętu PS 2.0.

Czy ATI nadal będzie prezentować nowe układy graficzne co 6 miesięcy, do czego jesteśmy przyzwyczajeni? Czy może nie powinniśmy się już spodziewać nowych chipów tak często w najbliższej przyszłości?

Konkurencja na rynku układów graficznych jest tak ostra, że na pewno możecie się spodziewać, iż ATI nadal będzie wprowadzać nowe i szybsze układy co 6 miesięcy. Chociaż RADEON X800 XT Platinum Edition jest obecnie naszym najszybszym chipem, już pracujemy nad jego następcą, który będzie jeszcze wydajniejszy. W końcu im szybszy układ, tym lepsze wrażenia w grach.

Ostatnio dużo gram w Far Cry i zauważyłem, że w wysokich rozdzielczościach gra działa znacznie lepiej na X800 niż na sprzęcie poprzedniej generacji. Na nowszym sprzęcie mogę sobie pozwolić na znacznie więcej detali.

Zdradź nam trochę szczegółów na temat współpracy ATI z Valve przy pracy nad Half-Life 2. Jak odbywała się komunikacja między obiema firmami podczas tworzenia tak dużego projektu? (tylko szczegóły, o których możesz mówić).

Łał, to jest skomplikowane pytanie! Aby tego typu współpraca zakończyła się sukcesem, trzeba uczynić bardzo wiele…

Wszystko zaczyna się od długich negocjacji finansowych. Potem ustalamy terminy ukończenia projektu tak, by data pokryła się z premierą któregoś z naszych nowych produktów. Główna część współpracy to długi dialog techniczny między naszą firmą oraz Valve mający zapewnić, by gra wyglądała najlepiej, jak to tylko możliwe. Musieliśmy być też pewni, że nasza współpraca przyniesie korzyści obu firmom. ATI będzie dostarczać ze swoimi kartami najbardziej oczekiwaną grę 2004 roku, a tymczasem Valve ma okazję współpracować z producentem najlepszych układów graficznych na rynku. Oczywiście skorzystają także gracze, którzy dzięki naszej współpracy będą mogli uzyskać najlepsze wrażenia z gry.

Nie byłem osobiście zaangażowany we współpracę między ATI i Valve, więc nie przypisuję sobie żadnych zasług wynikających z tej współpracy. Gracze powinni być jednak pewni, że jeśli chcą mieć najwięcej frajdy z najlepszej gry 2004 roku, powinni w nią grać na sprzęcie ATI.

Niedawno na rynku pojawił się Doom 3. Pierwsze benchmarki zaprezentowane wspólnie przez id Software i serwis [H]ard|OCP pokazują, że GeForce 6800 GT jest szybszy od RADEONa X800 XT PE. Wyniki te potwierdziliśmy też w naszym laboratorium. Jak możesz skomentować te rezultaty? Czy możemy się spodziewać podobnej sytuacji w Half-Life 2, gdzie RADEON X800 PRO będzie szybszy… od GeForce 6800 Ultra? 🙂

Rzeczywiście, wstępne benchmarki pokazują, że jesteśmy trochę wolniejsi, niż byśmy chcieli być, jednak jeszcze dużo tu możemy zrobić. Na pewno będziemy pracować nad tym, by lepiej zoptymalizować nasze sterowniki dla gry. Ponadto zwróć uwagę na fakt, że sterowniki NVIDII nie uruchamiają tego samego kodu, co my. Nawet sam John Carmack zauważył, że jeśli dokona nawet bardzo drobnych zmian w kodzie shaderów w grze, powoduje to bardzo gwałtowny spadek wydajności na sprzęcie NVIDII. Wniosek jest jeden: NVIDIA nadal podmienia kod shaderów (nawet w swej ulubionej grze), by uzyskać akceptowalną wydajność.

Druga sprawa to taka, że gra i tak działa rewelacyjnie na X800. Sprzęt ATI to zawsze dobry wybór.

Jest jeszcze inna sprawa, którą trzeba wziąć pod rozwagę…

Ponieważ sprzęt NVIDIA działa szybko dzięki podmianie kodu shaderów, oczywiste jest, że firmy, które zakupią licencję na engine Dooma 3, będą go mocno modyfikować do swoich potrzeb. W efekcie wszelkie optymalizacje NVIDII wezbą w łeb we wszystkich innych grach tworzonych na silniku Doom 3! Nawet jeśli sprzęt NVIDII działa świetnie w Doom 3, grze, dla której firma optymalizuje sterowniki, nie będzie przecież działał w każdej innej grze! Tymczasem sprzęt ATI działa równie dobrze w każdej grze na rynku. Pojedynczy tytuł, w którym produkt flagowy dobrze się sprawuje, to moim zdaniem recepta na katastrofę!

Richard, ogromne dzięki za to, że zechciałeś udzielić nam wywiadu i poświęciłeś wcale niemało czasu, by odpowiedzieć na nasze pytania! 🙂

Zawsze do usług! 🙂 Podziękowania dla Waszego serwisu oraz dla Waszych Czytelników, którym chciało się czytać ten wywiad do końca :-). Chciałbym także serdecznie podziękować twórcom gier, bez których moje życie nie byłoby tak satysfakcjonujące i zarazem wymagające!