DirectX 9 X-Ray
Ostatni update:
09.02.2007.
RENDER
DirectX9 X-Ray jest oparty na technice zwanej
Deffered Shading. Zamiast przerysowywaæ scenê kilkakrotnie, aby obliczaæ poszczególne efekty, jak to robi± tradycyjne silniki, X-Ray renderuje scenê tylko raz i zapisuje dodatkowe informacje pozwalaj±ce mu obliczaæ o¶wietlenie, cieniowanie i inne efekty. W praktyce oznacza to, ze gra jest w stanie obs³ugiwaæ wiêksz± ilo¶æ polygonów (do 1 000 000) i ¼róde³ ¶wiate³ ni¿ gry oparte na tradycyjnych silnikach. Równie¿ koszt koñcowej obróbki jest ni¿szy.
Deffered Shading pozwala zmniejszyæ ilo¶æ niezbêdnych plików przy generowaniu dynamicznego cieniowania. Prawda jest taka, ¿e zdecydowana wiêkszo¶æ gier jest ograniczona przez procesor, wiec zmniejszenie u¿ycia CPU by³o jednym z g³ównych powodów zastosowania Deffered Shadingu w S.T.A.L.K.E.R.ze. Inna przyczyna by³o to, ¿e dotychczasowe silniki (Doom 3 Engine, CryEngine) niepotrzebnie marnuj± zasoby na powtarzanie tej samej pracy - transformowanie vertexów, filtrowanie anizotropowe, Parallax Mapping, dekompresja normalnych map, teksturowanie szczegó³ów, itd. W przypadku S.T.A.L.K.E.R.a ograniczenia by³y stwarzane zarówno przez CPU jak i przez system przetwarzania vertexów, wiec pod³o¿e by³o niemal idealne dla Deffered Shadingu. Je¶li dodaæ do tego renderowanie wysokiej jako¶ci scen z olbrzymia ilo¶ci± polygonów i w pe³ni dynamicznym o¶wietleniem i cieniami, Deffered Shading by³ po prostu niezbêdny.
Istnieje kilka mitów zwi±zanych z Deffered Shadingiem. Jednym z nich jest stwierdzenie, ze jest on bardzo powolny na obecnej generacji sprzêtu. Gdy wszystkie obliczenia s± przeprowadzane na poziomie pikseli (tylko w ten sposób Deffered Shading mo¿e funkcjonowaæ), wydajno¶æ nie bêdzie jednak zbyt obni¿ona, gdy¿ pixel shadery o¶wietlenia dla Deffered Shadingu nie s± du¿o bardziej skomplikowane ni¿ te w zwyk³ych renderach. Jedynym dodanym procesem jest samplowanie Buforem G, ale aplikacja i tak ma mniejsze prawdopodobieñstwo bycia obci±¿on± przez CPU lub Vertex Pipe.
Inny mit: Deffered Shading jest bezu¿yteczny do renderowania kierunkowych ¶wiate³. W przypadku S.T.A.L.K.E.R.a jest to prawda dla scen z kilkoma nierzucaj±cymi cienia ¶wiat³ami kierunkowymi, ale fa³sz dla scen z choæby jednym ¶wiat³em kierunkowym tworz±cym cienie (na przyk³ad S³oñcem).
Poniewa¿ proces Deffered Shadingu rysuje ka¿dy obiekt tylko raz, konwencjonalne techniki do radzenia sobie z wieloma typami materia³ów nie spisuj± siê za dobrze. Ale poprzez wykorzystanie (dziêki DirectX9) MRT (Multiple Render Targets), mo¿na obs³ugiwaæ do 16 atrybutów materia³u podczas procesu przetwarzania przez Bufer G. Dziesiêæ z nich jest wykorzystywanych do symulowania podstawowego o¶wietlenia rozproszonego (Diffuse) i odbiæ (Specular), wiec to zostawia sze¶æ komponentów do kontrolowania funkcji ¶wiat³a. W S.T.A.L.K.E.R.ze zbiera siê w³a¶ciwo¶ci materia³u i obiektu w wolnych komponentach, oraz zdefiniowane funkcje na ka¿dym shaderze o¶wietlenia, które zale¿± od tych w³asciwo¶ci. To uwolni³o twórców od korzystania z jednego, specyficznego modelu odbiæ. Ostatecznie nastêpuje odwrotne u¿ywanie shaderów: zamiast wykorzystywaæ w³a¶ciwo¶ci ¶wiat³a do modyfikowania shaderów materia³u, wykorzystano w³a¶ciwo¶ci materia³u, aby modyfikowaæ shadery ¶wiat³a.
Deffered Shading nie wspó³dzia³a z antialiasingiem wspieranym przez sprzêt obecnej generacji. Poniewa¿ nierówne krawêdzie powstaj± w skutek niezsynchronizowanych czêstotliwo¶ci kodowego sygna³u i nieci±g³ej reprezentacji po³o¿enia pikseli, dobra alternatywa dla antialiasingu jest filtr o niskiej przepustowo¶ci, czyli po prostu rozmycie (blurr). Jest to bezp³atna w kwestii wydajno¶ci operacja w ¶wiecie konsol, gdzie ka¿dy telewizor pracuje jak filtr niskiej przepustowo¶ci, ale w przypadku PC sprawa wygl±da inaczej. Rozwi±zaniem jest zmiana czê¶ci czêstotliwo¶ci sygna³u na krawêdziach obiektów i pozostawienie reszty obrazu bez zmian. Jest to przeprowadzane w podobny sposób, co filtry Edge-Detection, u¿ywane w nie-fotorealistycznych aplikacjach. Aby naprawiæ antialiasing stosuje siê równie¿ Temporal Supersampling.
Deffered Shading jest równie¿ niezgodny z AlphaBlendingiem. Aby uratowaæ przezroczyste powierzchnie, postanowiono zastosowaæ do ich stworzenia podstawowy render (dx8) z o¶wietleniem, ale bez cieni. Niestety niezgodno¶æ z AlphaBlendingiem powoduje równie¿, ze ro¶linno¶æ (li¶cie) jest odwzorowana gorzej ni¿ przy wykorzystaniu silniku CryEngine (zarówno 2.0 jak i 1.0).
G£ÊBIA P£ASKICH POWIERZCHNI
Renderowanie powierzchni, których wszystkie detale s± wymodelowane jest obecnie niemo¿liwe lub nieop³acalne i zbyt przeci±¿aj±ce system. G³êbia jest nadawana za pomoc± iluzji, do której tworzenia stosuje siê techniki takie jak Bump Mapping, Parallax Mapping, Photonic Mapping, Offset Mapping czy Geometry Displacement Mapping.
Z wizualnego punktu widzenia istotne jest, ze:
W przypadku Bump Mappingu iluzja zachowana jest przy obserwowaniu powierzchni pod katem prostym.
W przypadku Parallax Mappingu iluzja zachowana jest przy wszystkich katach patrzenia z wyj±tkiem najbardziej ostrych.
[Parallax Mapping]
W przypadku Geometry Displacement Mappingu iluzja zachowana jest we wszystkich przypadkach i dzia³a równie¿ w kwestii kszta³tu samej powierzchni/obiektu.
[Geometry Displacement Mapping - ceg³y znajduj±ce siê na krawêdzi "wystaj±" poza rzeczywista geometrie ¶ciany]
X-Ray u¿ywa zmodyfikowanej wersji Parallax Mappingu. Oznacza to dwie rzeczy. Po pierwsze, iluzja g³êbi zachowana jest równie¿ przy bardzo ostrych katach. Po drugie, cienie padaj±ce na powierzchnie poddana dzia³aniu Parallax Mappingu s± odwzorowane poprawnie (
Virtual Position Trick) i mo¿liwy jest Self-Shadowing (cieñ powstaj±cy na obiekcie, który go rzuca). Jedyna ró¿nica w porównaniu do Geometry Displacement Mappingu jest to, ze Parallax Mapping w X-Ray nadal nie ma wp³ywu na kszta³t powierzchni/obiektu.
O¦WIETLENIE I CIENIE
X-Ray pozwala na generowanie ca³kowicie dynamicznego o¶wietlenia i dynamicznych cieni. Zastosowane s± Soft Shadows, dziêki czemu brzegi cieni zosta³y wzbogacone o realistyczny pó³cieñ zmieniaj±cy siê w zale¿no¶ci od odleg³o¶ci i nasilenia ¶wiat³a.
Dziêki zastosowaniu Deferred Shadingu mo¿liwe jest generowanie setek ¼róde³ ¶wiat³a w ka¿dej klatce animacji. Innymi efektami zwiêkszaj±cymi realizm ¶wiat³a s± Global Illumination i HDR.
Tone Mapping ma za zadanie symulowaæ reakcjê ludzkiego oka na ¶wiat³o. Najpro¶ciej mówi±c, chodzi tu o akomodacje, czyli dostosowywanie siê oka do bardzo jasnych lub bardzo ciemnych elementów otoczenia.
High Dynamic Range Lighting odpowiada za dok³adniejsze renderowanie bardzo jasnych, lub bardzo ciemnych elementów otoczenia.
ILUZJA GLOBAL ILLUMINATION
Global Illumination to skomplikowany efekt, którego celem jest branie pod uwagê nie tylko ¶wiat³a wychodz±cego bezpo¶rednio od ¼ród³a, ale równie¿ tego, które zosta³o odbite od innych powierzchni. Innymi s³owy, promienie ¶wiat³a nie zatrzymuj± siê na pierwszej powierzchni, na któr± natrafiaj±, ale odbijaj± siê, o¶wietlaj±c inne powierzchnie (przyk³ad w miarê dok³adnej symulacji Global Illumiantion na podstawie
4A Engine). Do osi±gniêcia tego efektu stosuje siê miedzy innymi Radiosity, Ray Tracing, Beam Tracing, Cone Tracing, Path Tracing, Metropolis Light Transport, Ambient Occlusion i Photon Mapping.
Obecnie Global Illumination jest zbyt skomplikowanym efektem do stosowania w obrazach generowanych w czasie rzeczywistym (mozliwy, ale zbyt obciazajacy), wiec wykorzystuje sie wybrane efekty, zeby go symulowac. W przypadku X-Ray sa to
Radiosity (jeden ze sposobów sledzenia promieni odbitych od powierzchni -
czerwona kula jest oswietlona, swiatlo od niej odbite daje w rezultacie czerwona poswiate na bialym podlozu) i
Ambient Occlusion (pochlanianie swiatla przez otoczenie).
OTWARTE PRZESTRZENIE
* X-Ray nie ma zaimplementowanego systemu dynamicznego doczytywania poziomów (znanego jako Seamless Loading, On Demand Loading lub Loading on Fly). Oznacza to, ¿e w czasie gry bêdzie siê pojawia³ napis "Loading". GSC wyklucza mo¿liwo¶æ wprowadzenia tej technologii teraz lub w pó¼niejszym terminie.
* Pojedynczy poziom mo¿e mieæ rozmiar do 4 kilometrów kwadratowych.
HARDWARE
* Zalecana konfiguracja sprzêtu to AMD Athlon 64x2 4800+ lub Intel Core 2 Duo, 1Gb RAM i karta graficzna w 100% kompatybilna z DirectXR 9.0c posiadaj±ca 256Mb RAM.
* Zalecane jest posiadanie dwu-rdzeniowego procesora (oprócz grafiki przetwarzany jest d¼wiêk, fizyka, symulacja ¿ycia, NPC, balistyka). Wiêksza ilo¶æ rdzeni nie wp³ynie na wydajno¶æ.
* Uk³ady SLI i Crossfire dobrze wspó³pracuj± z renderem DX9 wykorzystuj±c Alternate Frame Rendering. Na chwilê obecn± uk³ady te zapewniaj± zwiêkszenie wydajno¶ci do 10% w rozdzielczo¶ciach do 1024x768, lub dwukrotne zwiêkszenie wydajno¶ci w wy¿szych rozdzielczo¶ciach.
* X-Ray nie wykorzystuje kart fizycznych.
*****************************************************
Podziêkowanie za wsparcie merytoryczne (po¶rednie lub bezpo¶rednie):
Don Reba,
SNIPER-X,
Kristian Joensen &
GSC Game World