Vývojářský deník – UFO: Aftermath 08

Miroslav Žák – 18/06/2017

Budiž světlo

Těsně před tím, než šel tento díl deníčku do tisku, došlo v naší situaci k zásadní změně: konečně se nám podařilo sehnat vydavatele. Tím se stala vám jistě dobře známá společnost Cenega Publishing, která bude UFO: Aftermath distribuovat po celém světě a samozřejmě i v České republice. Podrobnosti z truchlivého procesu shánění vydavatele očekávejte v příštím pokračování, nyní se věnujme původnímu obsahu tohoto dílu – otázce osvětlení.

Pozorní čtenáři si možná vzpomenou, že na starosti s počítáním lightmap, tedy osvětlení jednotlivých míst ve hře, jsme si postěžovali již dříve. Aby ne! Zpočátku nám vypočítání odpovídajícího osvětlení zabíralo příliš mnoho času, takže jsme se obávali, že nebude možné spočítat dostatečně rychle změny osvětlení v reálném čase. To by ale znamenalo velké problémy zejména s nečitelnými předměty. Například každý dřevěný plot obvykle vrhá stín, ale zničený plot už by stín vrhat neměl. Pokud by nebylo možné vypočítat nové osvětlení v reálném čase, museli bychom připravit předpočítané osvětlení pro každý předmět ve hře! Takové řešení by také znamenalo, že nemůžeme používat světlice nebo je omezit jenom na hardwarová světla. Co jsou hardwarové světla zač?

Když grafická karta zobrazuje polygon neboli trojúhelník – základní element každé trojrozměrné scény – provádí jeho tzv. „stínování“ (shading), musí vzít v úvahu několik věcí. Nejdůležitější z nich je textura, tedy „obrázek“ toho, co bude na polygonu zobrazeno. Na každém polygonu může být více textur, ale popis jejich vzájemného vlivu přesahuje možnosti tohoto článku, takže si ho necháme na některé příští pokračování.

Jako další na řadu přichází výpočet osvětlení. Kartě je možné „říct“, že tady někde se nachází světelný zdroj, s takovou a takovou silou, barvou, natočením apod. Grafická karta pak vezme v úvahu relativní pozici polygonu a spočítá odpovídající osvětlení. To je právě hardwarové světlo.

Zásadní vlastností hardwarových světel je, že jimi osvětlené předměty nevrhají stíny (ani na sebe samotné). I když je polygon ukrytý za jiným polygonem, karta to ignoruje a osvětlí oba. Tyto případy musí ošetřit programátor, který pro polygon ve stínu hardwarové světlo vypne. Problém se ale vyskytne hned, jakmile je některý polygon zakrytý jen částečně a měla by po něm vést hranice stínu, neboť hardwarové světlo není možné vypnout a zapnout během kreslení polygonu – zde mohou pomoci tzv. „pixel shadery“, ale většina lidí místo toho používá lightmapy neboli textury, do kterých jsou stíny předem namalované. Hardwarová světla jsou používána pouze pro ty objekty, kde lightmapu použít nelze, buď proto, že relativní pozice vůči světelnému zdroji nemůže být spočítána předem (v UFO: Aftermath jsou to například pohybující se vojáci), nebo protože jsou samy světelným zdrojem (třeba letící raketa).

Od začátku vývoje ale naši programátoři udělali pořádný kus práce, protože výpočet lightmap řádově zrychlili tak, že osvětlování je možné počítat v reálném čase. Teď už se lze kochat pohledem na světlice reálně osvětlující okolí, které vrhá působivé stíny. Vypadá to výborně!

Martin Klíma

Miroslav Žák

České a slovenské hry sbírám od roku 2001. Více než o samotné hraní se zajímám o vývoj a archivaci. Mojí hlavní zbraní je motivace.

Komentáře

Sdělte nám svůj názor

Zatím žádný komentář.