DirectX 12: Postęp w świecie gier komputerowych
W San Francisco na dorocznej konferencji deweloperów gier (GDC), firma Microsoft zaprezentowała najnowszą wersję swojego interfejsu programistycznego, DirectX 12.
Deweloperzy potrzebowali odchudzonego i wydajniejszego interfejsu API, który zapewniałby im bardziej bezpośredni dostęp do zasobów sprzętowych. Mimo znaczących usprawnień dokonanych w toku ciągłego rozwoju istniejących interfejsów API, programiści tworzący aplikacje następnej generacji chcą wydobyć możliwie najwięcej wydajności z systemów wielordzeniowych. Potrzebują także bezpośredniej kontroli nad zaawansowanymi funkcjami procesora graficznego, od których dzieli ich obecnie kilka warstw oprogramowania, co w zamyśle miało zapewnić bezproblemową obsługę. DirectX 12 został zaprojektowany od podstaw, aby zapewnić infrastrukturę niezbędną do takich zaawansowanych zastosowań.
Przemawiając do około 500 deweloperów i przedstawicieli prasy, Anuj Gosalia, kierownik ds. rozwoju DirectX w firmie Microsoft, opisał DX12 jako wspólny wysiłek producentów sprzętu, deweloperów gier, oraz jego zespołu. Współpraca firm NVIDIA i Microsoft nad stworzeniem interfejsu DirectX 12 rozpoczęła się ponad 4 lata temu od dyskusji na temat zminimalizowania zasobów zużywanych przez interfejs. Ostatni rok firma NVIDIA ściśle współpracowała z zespołem DirectX, aby przygotować funkcjonującą implementację DX12 na GDC.
Gosalia przedstawił nowe API za pomocą technicznej demonstracji gry wyścigowej Forza z konsoli Xbox One, uruchomionej na komputerze PC wyposażonego w kartę graficzną NVIDIA GeForce Titan Black. Dostarczono już producentom gier odpowiedni sterownik, który ułatwi im opiniowanie interfejsu jak i samego procesu programowania gier.
Decydującym czynnikiem w adopcji nowych interfejsów API jest oczywiście rozmiar rynku. W przeszłości nowe funkcje napotykały bariery w postaci braku wsparcia ze strony znaczącego rynku konsol do gier oraz starszych, lecz wciąż popularnych wersji systemu operacyjnego Windows. W przypadku DX12 zadbano o niespotykaną dotychczas jednolitość interfejsów API oraz zakres wsparcia. DX12 będzie dostępny na komputerach PC, konsolach Xbox One, tabletach, a nawet telefonach.
Oprócz tego firma NVIDIA zadba również o wsparcie sprzętowe DX12 w systemach operacyjnych firmy Microsoft. Obecnie ponad 70% komputerów PC jest zgodnych z DirectX 11. Firma NVIDIA wprowadzi obsługę API DX12 we wszystkich swoich procesorach graficznych, które obsługują obecnie API DX11, czyli tych opartych na architekturach Fermi, Kepler i Maxwell. Produkty te obejmują ponad 50% rynku (65% w przypadku kart dedykowanych), dzięki czemu firma NVIDIA zapewni w ten sposób deweloperom gier wsparcie dla większości obecnego rynku.
Genezę interfejsu DX12 można prześledzić w trendach technologicznych. Wydajność procesorów graficznych nieustannie rosła, podczas gry wydajność centralnych procesorów jednordzeniowych była ograniczona przez ograniczenia mocy. Wielordzeniowe procesory centralne osiągają wyższą wydajność, ale wciąż nie prześcigają one procesorów graficznych. Jednocześnie aplikacje coraz częściej wykorzystują równoległe wątki, stosując zaawansowane systemy planowania w celu dostosowania wydajności do liczby dostępnych rdzeni procesora centralnego. Sytuacja ta wymusiła potrzebę stworzenia interfejsu API, który skalowałby się odpowiednio do liczby rdzeni. Wydajność procesora graficznego można wykorzystać na trzy sposoby: możliwość rysowania lepszych pikseli, większej liczby pikseli i większej liczby obiektów. Zyskaliśmy wiele korzyści w tych kategoriach. DX12 koncentruje się na radykalnym zwiększeniu jakości grafiki poprzez znaczące zmniejszenie narzutu interfejsu API na procesor. Historycznie, sterowniki i oprogramowanie systemu operacyjnego zarządzały pamięcią, stanem oraz synchronizacją urządzeń za programistów. Niestety takie uniwersalne podejście skutkuje nieefektywnością wynikającą z niedoskonałego zrozumienia potrzeb danej aplikacji. DX12 daje aplikacjom możliwość bezpośrednio zarządzania zasobami oraz ich stanem, a także wykonywania niezbędnej synchronizacji. W efekcie programiści tworzący zaawansowane aplikacje mogą skutecznie kontrolować procesor graficzny, dostosowując go do zachowania samej gry.
Debiut nowego interfejsu koncentrował się głównie na formie interfejsu graficznego, tj. na jego modelu. Przyszłe wersje Direct3D będą zawierać dodatkowo nowe funkcje renderingu wspierające zaprezentowany model sterowników i aplikacji. Materiały przedstawione na GDC są jedynie częścią prac, które zostaną zaprezentowane w przyszłości. Firmy NVIDIA i Microsoft będą nadal mocno inwestować w przyszłość gier na komputerach PC.