A A A

Jeszcze bliżej realu

PC Format 5/2008
Niewiele ponad rok temu, wraz z premierą Windows Vista zadebiutowały biblioteki graficzne DirectX 10. Wprowadzając pierwszy zestaw serwisowy SP1 do Visty, Microsoft modyfikuje ten graficzny interfejs. Dzięki temu w grach będą się mogły pojawić ciekawe funkcje i efekty. W praktyce jednak droga do tego jeszcze daleka.

Najważniejsze zmiany w DirectX 10.1

Oto nowości, które zostały wprowadzone w DirectX 10.1:
  • Przyspieszenie obliczeń związanych z generowaniem trójwymiarowej sceny i nakładaniem tekstur na obiekty
  • Zwiększenie precyzji kalkulacji podczas renderingu (bardziej realistycznie odwzorowane obiekty przy mniejszej liczbie cykli obliczeniowych)
  • Możliwość płynnego zwiększania lub zmniejszania szczegółowości filtrowania tekstur na scenie 3D, a za tym prędkości generowania klatek w grach
  • Lepsza kontrola antyaliasingu i możliwość zaimplementowania przez programistę jego własnych metod wygładzania krawędzi

Karty graficzne z serii ATI Radeon 3800 HD to pierwsza, ale na razie jedyna rodzina akceleratorów 3D, przystosowana do obsługi nowych bibliotek graficznych DirectX 10.1.

Nie ma jeszcze gier zgodnych z DX 10.1, jedynie dema Microsoftu i ATI korzystają z tych bibliotek. Na razie są w przygotowaniu odpowiednie łaty do gier Crysis i MS Flight Simulator X, zapewniające ich zgodność z DX 10.1.

Modyfikacje wprowadzone w bibliotekach DirectX 10.1 w stosunku do DirectX 10 można podzielić na trzy grupy. Pierwszy rodzaj zmian zwiększa dokładność obliczeń związanych z generowaniem obrazu przez kartę graficzną. Drugi rodzaj to udoskonalone operacje cieniowania i nakładania tekstur, trzeci zaś służy poprawieniu antyaliasingu . W sumie ich celem jest usprawnienie obliczeń wykonywanych przez kartę podczas generowania sceny 3D, dzięki czemu możliwe będzie dodawanie do gier ciekawych efektów bez obniżania wydajności karty i jakości obrazu. Nie ma tu całkowicie nowych funkcji – wszystkie były już zaimplementowane w bibliotekach DX 10, jednak karty graficzne zgodne z DX 10 nie musiały zapewniać ich obsługi. W kartach zgodnych z DX 10.1 będzie to konieczne.

Dokładniejsze obliczenia

Najważniejsze zmiany dotyczą zwiększenia precyzji obliczeń wykonywanych podczas filtrowania tekstur. Filtrowanie tekstur to zamazywanie granic między teksturami różnej wielkości, znajdującymi się na dalszym planie trójwymiarowej sceny generowanej przez kartę graficzną. Robi się to po to, aby obraz był bardziej naturalny, a oddalone obiekty nie były sztucznie kanciaste. Im większa dokładność obliczeń, tym końcowy efekt jest lepszy. Dlatego w DX 10.1 przyjęto, że karty graficzne muszą wykonywać obliczenia z 32-bitową dokładnością, a nie – jak zwykle dotychczas – z 16-bitową.

Ograniczenia w popularyzacji DX 10 i DX 10.1

Biblioteki DX 10.1 mogą być wykorzystane tylko na komputerach z Windows Vista z zainstalowanym Service Packiem 1 oraz z kartami grafiki z rodziny ATI Radeon HD 3800 (HD 3870 X2, HD 3870, HD 3850). Wcześniejsza wersja DX 10 też jest przeznaczona jedynie do Visty, a karty obsługujące te biblioteki to dodatkowo Radeon 3600 (Radeon 3650) i Radeon 3400 (Radeon 3450). Gier zgodnych z DirectX 10.1 jeszcze nie ma na rynku; również liczba gier zgodnych z DirectX 10 nie szokuje – są już Crysis, Flight Simulator X, Hell Gate London, World in Conflict, a kolejne zapowiadane tytuły to Alan Wake, Age of Conan – Hyborian Adventures, Frontlines: Fuel of War, Marvel Universe, Far Cry 2, Chrome 2, Dead Island, Warhound.

Podobnie postąpiono w wypadku określania przezroczystości tekstur i ich fragmentów, nakładanych na scenę 3D. Jeżeli dwie bitmapy (tekstury) zachodzą na siebie, to ustala się ich przezroczystości tak, aby na obrazie obie tekstury zlały się ze sobą i połączyły w całość. Dotychczas obliczenia dotyczące „zlewania” prowadzono z 8-bitową precyzją. Teraz wszystkie obliczenia muszą być prowadzone z 16-bitową dokładnością.

Karty graficzne zgodne z DX 10.1 muszą też obsługiwać antyaliasing (wygładzanie schodkowych krawędzi na obrazie) wykonywany metodą multipróbkowania, to znaczy, muszą obliczać wartość (wygląd) wygładzanego piksela na podstawie co najmniej czterech sąsiadujących z nim pikseli. Ustandaryzowane zostały też szablony, według których wybiera się próbki pikseli wykorzystywane przy pełnoekranowym antyaliasingu FSAA. Pełnoekranowy antyaliasing polega na wygenerowaniu sceny 3D w 2-, 4-, 8- lub 16-krotnie większej rozdzielczości, np. 25 600x19 200 pikseli zamiast 1600x1200, a następnie przed jej wyświetleniem na ekranie, pomniejszeniu jej np. 16 razy (FSAA 16x). To pomniejszenie sprawia, że są „gubione” wszystkie schodkowe krawędzie na obrazie. Korzysta się tu z szablonów (masek), pobierających wartości koloru dla kilku pikseli, z których na pomniejszonym obrazie powstaje jeden interpolowany punkt.

Ponadto we wszystkich operacjach zmiennoprzecinkowych (dodawanie, odejmowanie, mnożenie, dzielenie) zwiększono dokładność zaokrąglania ostatniego miejsca po przecinku o pół wartości w górę. Dzięki temu uzyskano zgodność z normami IEEE (Instytut Inżynierów Elektryków i Elektroników) dotyczącymi dokładności zaokrąglania obliczeń. Obraz przetworzony przez każdą kartę zgodną z DX 10.1 będzie więc wyglądał tak samo.

Szybsze nakładanie tekstur

W DirectX 10.1 pojawił się nowy model cieniowania Shader Model 4.1, który zastąpił SM 4.0 z bibliotek DX 10. W SM 4.1 wprowadzono Cube Map Arrays – macierz map kubicznych. Mapy kubiczne to specjalne tekstury, które powstają z połączenia wcześniej nałożonej na obiekt tekstury z mapami środowiska, zawierającymi informacje o otaczających przedmiot obiektach. Chodzi np. o odbicia innych przedmiotów na metalowym obiekcie, cienie, źródła światła.

Macierz map kubicznych pozwala nanieść w jednym cyklu obliczeń generujących scenę 3D wiele kubicznych map, każda na inny fragment obrazu. Normalnie w jednym cyklu możesz nałożyć jedną mapę kubiczną na jeden obiekt, na drugi nakładasz kolejną mapę w drugim cyklu. Właściwość ta ma za zadanie przyspieszenie generowania sceny 3D.

Kolejną funkcją pozwalającą przyspieszyć generowanie grafiki jest określanie przezroczystości punktów osobno dla każdego obiektu na scenie 3D, dla którego nakładana jest ta sama tekstura. Nie trzeba wówczas zmieniać przezroczystości w kolejnych krokach na już nałożonych na obiekty teksturach. Tekstury o odpowiedniej przezroczystości od razu trafiają na przynależne im obiekty w jednym przebiegu procesu renderingu .

W Shader Model 4.1 jest też funkcja Gather4, w której zostały zaszyte algorytmy przewidywania obliczeń. Pozwalają one wykonać pewne obliczenia mające na celu dopasowanie stałych bloków tekstur do sytuacji na scenie z wyprzedzeniem (na przykład pomniejszenie tekstury, która ma się znaleźć na obiekcie oddalonym od obserwatora), a nie w chwili, gdy są już potrzebne. To również przyspiesza generowanie sceny.

Przyspieszenie obliczeń umożliwiają też poprawione algorytmy przesyłania danych wejściowych do shaderów (odpowiadających m.in. za generowanie kształtów obiektów na scenie) i odbierania z nich danych wyjściowych. Dodano też instrukcję LOD (Level Of Detail), która pozwala programiście określić szczegółowość filtrowania tekstur, dzięki czemu w zależności od potrzeb można zwiększyć stopień realistycznego odwzorowania obiektów albo szybkość generowania sceny.

Poprawione wygładzanie krawędzi

W bibliotekach DirectX 10.1 pojawiły się jeszcze trzy nowe funkcje służące do poprawienia wygładzania krawędzi. Po pierwsze wprowadzono obsługę bufora zapisu i odczytu danych przy wygładzaniu krawędzi, wykorzystującego multipróbkowanie. Bufor ten pozwala na przechowywanie indywidualnych wartości odczytanych dla każdego punktu (a nie, jak dotychczas, jednej wartości średniej dla wszystkich próbkowanych pikseli) i pozwala na bezpośredni dostęp do tych danych programom wykorzystywanym przez shadery generujące wygląd pikseli.

Ciekawą funkcją jest Pixel Coverage Masks. Ma ona pomóc programiście w stworzeniu własnych metod antyaliasingu, które będą realizowane przez shadery generujące wygląd pikseli. Podobną funkcję mają do spełnienia szablony używane przy antyaliasingu, które programista sam może w dowolny sposób stworzyć i modyfikować. Dzięki temu uzyskuje całkowitą kontrolę nad próbkowaniem punktów wykorzystywanych do wygładzania krawędzi, a generowany obraz może mieć znacznie lepszą jakość.


Ocena:
Oceń:
Komentarze (0)

Redakcja nie ponosi odpowiedzialności za treść komentarzy. Komentarze wyświetlane są od najnowszych.
Najnowsze aktualności


Nie zapomnij o haśle!
21 czerwca 2022
Choć mogą się wydawać mało nowoczesne, hasła to nadal nie tylko jeden z najpopularniejszych sposobów zabezpieczania swoich kont, ale także...


Artykuły z wydań

  • 2024
  • 2023
  • 2022
  • 2021
  • 2020
  • 2019
  • 2018
  • 2017
  • 2016
  • 2015
  • 2014
  • 2013
  • 2012
  • 2011
  • 2010
  • 2009
  • 2008
  • 2007
Zawartość aktualnego numeru

aktualny numer powiększ okładkę Wybrane artykuły z PC Format 1/2022
Przejdź do innych artykułów
płyta powiększ płytę
Załóż konto
Co daje konto w serwisie pcformat.pl?

Po założeniu konta otrzymujesz możliwość oceniania materiałów, uczestnictwa w życiu forum oraz komentowania artykułów i aktualności przy użyciu indywidualnego identyfikatora.

Załóż konto