Jak se tvořil a jak funguje nový systém nasvícení ve hrách od SCS Software?

Součástí nadcházejících aktualizací 1.40 pro American Truck Simulator i Euro Truck Simulator 2, které se aktuálně testují mezi hráči, je takřka největší grafické vylepšení od původního vydání ETS2. Vývojáři se rozhodli blíže rozepsat o tom, jak toto přepracování probíhalo a jak celý systém funguje, následující část je tedy kompletním překladem původního článku z blogu SCS Software.

Novinka 1

Budiž světlo!

Způsob, kterým náš 3D engine reprezentuje světla a barvy ve scéně (a ve vyrovnávacích pamětích pro vykreslování toho, co se nakonec zobrazí na obrazovce), byl zaveden před více než deseti lety. Byla to doba, kdy nejmodernější bylo reprezentovat všechny RGB hodnoty v číselném rozsahu 0-255, aby se vešly do jednoho bajtu. Tak byly definovány všechny hodnoty, ať už v texelu texturové mapy (což je „povrch“ 3D objektu – stromu, vozidla či oblohy) nebo v kódování intenzity světelného zdroje (od koncových světel vozidla po pouliční lampy až po intenzitu slunce) a jejich kombinace ve fázi vykreslování do pixelu; což byla opět reprezentace ve vyrovnávací paměti pro vykreslování, která se měla zobrazit na obrazovce, pouze s 256 odstíny každé základní barvy.

V poslední letech, díky rozšíření dostupné paměti 3D karet, pokroku ve výpočetní síle a flexibilitě shaderovacích jazyků pro programování operací 3D karet ve fragmentech, se otevřela cesta pro ukládání a počítání barevných a světelných hodnot s mnohem vyšší přesností a rozsahem – v číslech s pohyblivou řádovou čárkou. Namísto pouhého vrstvení operací barevného filtru, což byly v podstatě všechny triky, které jsme v éře 8 bitů na barevnou složku měli, je přechod k používání skutečných čísel docela revoluční v tom, jak herní engine může věrně zobrazovat světelné zdroje v realistických rozmezích a poměrech. Ve skutečném světě je rozdíl mezi intenzitou žárovky a slunečním zářením o mnoho řádů vyšší. Pokud dokážeme ukládat hodnoty intenzity světelných zdrojů správně, a hlavně provádět všechny operace mezi světlem a povrchem v jejich správném rozsahu hodnot, bez velké ztráty přesnosti, můžeme využít skutečného vysokého dynamického rozsahu (HDR) světla v naší grafické tvorbě. Když jsme tyto nové techniky začali před 18 měsíci zkoušet a viděli první výsledky, už nebylo cesty zpět. Věděli jsme, že tohle chceme v našem enginu.

Novinka 2 Novinka 3
Novinka 4 Novinka 5

Co je nového?

Museli jsme začít se světelnými zdroji (a na chvíli jsme doufali, že to bude stačit). Každý jednotlivý světelný zdroj je nyní definován skutečnou hodnotou získanou z měření v reálném světě (provedli jsme nespočet vzorkování pomocí expozimetru za různých stavů denního světla a počasí) a z referenčních tabulek. Skutečné prostřední je stejně jako dnešní herní svět rozjasňováno desítkami tisíc jednotek lux během dne, zatímco v noci se okolní jas blíží jen několika jednotkám lux. Založení všech hodnot světelného zdroje na realitě nám dávám mnohem větší jistotu na rozdíl od starých časů, kdy by nové světlo sotva zapadlo do systému. Už není otázkou, zdali by to mělo být 150 nebo 170 bez skutečného významu daných hodnot. Nyní známe a máme tabulky, ze kterých si můžeme vybrat hodnoty pro pouliční lampu nebo neonové světlo na čerpací stanici. Ve vzorcích pro výpočet světla nyní můžeme počítat se správnou kvadratickou atenuací, aby se světla chovala fyzikálně správným způsobem. S vyšší přesností můžeme dokonce jít tak daleko, že zavedeme malou náhodnou změnu intenzity světla do jinak identických světelných zdrojů, abychom lépe simulovali pocit z noční ulice a neměli nepřirozeně stejné lampy.

Novinka 6 Novinka 7
Novinka 8 Novinka 9
Novinka 10 Novinka 11
Novinka 12 Novinka 13

Po dokončení všech interních výpočtů světla musíme upravit výsledné hodnoty pro obrazovku emulací expozice kamery. Stejně jako moderní kamera ve vašem mobilu musíme vzít v úvahu všechny různorodé hodnoty a rozmanitost přicházejícího světla (slunce nebo stín, časné ráno, poledne, soumrak nebo hluboká noc) a tyto hodnoty „scvrknout“ nebo „rozšířit“ do rozsahu vhodného pro obrazovku. Náš systém emulace expozice má zásadní dopad na konečný vzhled a dojem ze hry – částečně je to fyzika, ale částečně také subjektivní umělecké cítění. Musí se měnit dynamicky nejen na základě přicházejícího světla z herního světa, ale také na základě rozdílu mezi světlem uvnitř a vně kabiny vozidla, aby byla čitelná přístrojová deska. Lidské oko je neuvěřitelné stvoření, schopné přizpůsobit se široké škále intenzit světla při přeostřování mezi objekty. Při analýze histogramu světla pro každý snímek i mezi snímky jsme museli použít hodně chytré matematiky, aby se všechny tyto hodnoty vešly do nevyhnutelně omezeného dynamického rozsahu i barevného gamutu a aby bylo vše, co je zobrazeno, věrohodné a rozeznatelné. Některá vylepšení byla třešničkou na dortu, jako například to, že díky vnitřímu rozsahu vyrovnávacích pamětí s pohyblivou řádovou čárkou pro krychlové mapy můžeme mít mnohem lesklejší odrazy od lesklých objektů jako jsou vodní plochy, sklo nebo lak auta. Tuto vývojovou cestu jsme šťastně následovali v malém týmu než jsme si uvědomili, že zatímco prozatímní výsledky byly slibné, nebudeme to schopni dokončit bez přepracování VŠECH existující materiálů/textur na herních objektech. Když je paprsek světla vržen na povrch jakéhokoliv předmětu, pak to, co se odráží nebo láme, závisí totiž nejen na vlastnostech přicházejícího světla, ale do značné míry na vlastnostech povrchu daného objektu. Za mnoho let vývoje jsme nashromáždili desítky tisíc textur, některé z fotografických zdrojů v různých prostředích, některé ručně kreslené, jiné procesem procedurálního generování za použití různých chytrých nástrojů. Postupem let se na tvorbě těchto zdrojů podílely různé myšlenkové směry nebo různé procesy tvorby, ale systém „starého světla“ to vše držel na uzdě pomyslnou lepicí páskou a byl ve všech případech natolik nepřesný, aby neodhalil určitou existující nerovnováhu. Nový systém emulace expozice je mnohem citlivější a jednoduše vyžaduje fyzikálně správné albedo hodnoty jasu. Náš betonový povrch už nemůže být jen jakousi šedou a strom už nemůže být jen pěkný a zelený. A právě v tento okamžik musela být drtivá většina našeho grafického týmu zapojena do zásadního přepracování.

Novinka 14 Novinka 15
Novinka 16 Novinka 17
Novinka 18 Novinka 19
Novinka 20 Novinka 21

Co se muselo změnit?

Jakmile náš malý průkopnický mezioborový tým implementoval všechny nezbytné změny kódu a grafických shaderů, museli jsme zapojit mnohem více lidí. Nejprve jsme museli přizpůsobit všechny světelné zdroje v herním světě a všechna světla vozidel novému fungování. V některých případech šlo o relativně triviální numerický převod někde v tabulce. V jiných případech to vyžadovalo, aby tvůrci mapy znovu navštívili konkrétní místo a provedli ruční úpravu. V mnoha případech to znamenalo, že herní objekty jako celá továrna nebo místo pro vykládku s předdefinovanými zdroji světla musely být znovu otevřeny, upraveny a znovu exportovány ve 3D nástrojích jako je Maya. Mluvíme o tisících a tisících takových retuší, přičemž v některých případech se nejedná pouze o několik desítek „čísel“ definujících světla, ale také o zásadní změny ve světelných mapách objektů, kde byly „zapečeny“ falešné stíny a světlené efekty pro lepší vzhled ve starém systému nasvícení. Nakonec po několik týdnů musela většina našich týmů přestat pracovat na všem, co se týkalo budoucích projektů, a znovu si projít všechny herní objekty, vegetaci, vozidla a efekty; znovu a znovu dolaďovat věci a synchronizovat s dohodnutou sdílenou referenční tabulkou pro albedo. Museli jsme se vrátit k základům mnoha podsystémů, zejména k osvětlení vozidel a žárovkám, se kterými se provádělo mnoho iterací a dolaďování, aby vypadaly dobře za různých nastavení denního světla. Máme novou sadu obloh ve vyšším rozlišení a také o něco bohatší rozmanitost počasí. Nakonec nezůstal kámen na kameni, protože jsme museli vyhodnotit a upravit každý jednotlivý prvek obou her.

Novinka 22 Novinka 23
Novinka 24 Novinka 25

Co to všechno znamená?

Nový systém nasvícení a začátek našeho nového fyzikálního světelného modelu je zásadním krokem ke kompletnímu a lepšímu fyzikálnímu modelu celého světa v našich hrách. Ještě úplně nemáme skutečné vykreslování založené na fyzice, ale aktualizace 1.40 představuje velký krok správným směrem. Vyčištění starých objektů a založení všech intenzit světel i výpočtů na fyzice konečně umožňuje budoucí systémové práce v této oblasti. Jak už to bývá s věcmi v dlouhodobém vývoji, přestože tento krok je menší revolucí, je zároveň pouze milníkem směrem k větší vizi.

Novinka 26 Novinka 27

Z pohledu grafiků (platí to ale také pro autory modifikací) zavádíme nový koncept vytváření a udržování veškerých herních objektů „pod kontrolou“ a v rovnováze se zbytkem. Materiály založené na fotkách, které se často používají jako zdroje herní grafiky, nyní musí projít procesem kalibrace, než budou použitelné, jinak nějaká může skončit s povrchem, který je buď příliš tmavý nebo příliš světlý, což ovlivňuje expozici a obecné vnímání scény. Často stojí za to prozkoumat alternativní metody vytváření materiálů, například procedurální generování s vysokým rozlišením v nástrojích jako je Substance Designer. Do vykreslovacího enginu nyní vkládáme větší důvěru, namísto předstírání a zapékání jemných stínů a světelných efektů do modelů. Kromě nového nasvícení a SSAO hraje nyní větší roli při vytváření konečného vzhledu také náš shaderový kód – výsledkem je o něco menší odpovědnost, kontrola a případně práce grafika. To může být dobře i špatně v závislosti na tom, čeho se člověk snaží dosáhnout v každém konkrétním případě.

Novinka 28 Novinka 29

Stejně jako s každou zásadní změnou se vyskytla spousta palčivých problémů, spousta slepých uliček, ze kterých je možné se poučit, a množství úsilí, kterým jsme prošli, daleko předčilo očekávání, která jsme měli před rokem. Stále máme před sebou kousek veřejného testování, abychom vyžehlili posledních pár vrásek. Ale už teď jsme přesvědčeni, že tyto změny za tu veškerou tvrdou práci stojí. Jen počkejte až v brzkých ranních hodinách pojedete s tahačem po italském pobřeží, nebo za hezkého pozdního odpoledne ve Švédsku, při mrholení ve Washingtonu, během spalujícího poledne ve Španělsku nebo při vjíždění do dobře osvětleného areálu pro vykládku za hluboké noci. Během celého procesu změn jsme se snažili, abychom nezpůsobili žádné větší zvýšení zátěže na procesor nebo grafickou kartu. Některé z nových efektů mají mírně vyšší nároky na výkon, ale celkově věříme, že změny jsou velmi dobře vyvážené nebo nabízejí rozumné kompromisy v nastavení hry, aby byl výkon přijatelný. Rozhodně nechceme přijít o hráče a fanoušky, kteří hrají naše hry bez nejnovějšího hardwaru, kvůli tomu, že příliš tlačíme na grafické efekty. Těšíme se, až vám přineseme další vylepšení a nové funkce, takže držte se svých volantů!

Máte raději seznam změn? Tak se na něj podívejme.

Zásadní interní změny:
  • Scéna je osvětlena s použitím reálných intenzit (nasvícení: desítky tisíc luxů během dne, desítky luxů v noci)
    • Abychom dostali do hry světlené poměry – vycházející slunce přemůže pouliční lampy, světlomety tahačů apod. To znamená, že jsme museli upravit všechny světelné zdroje a také upravit každý emisní materiál ve hře.
  • Máme novou funkci mapování displeje pro lepší grafickou kontrolu (expozice, kontrast, špička, rameno)
    • Potřebovali jsme tyto skutečné intenzity dostat na obrazovku počítače podobným způsobem, jako funguje expozice kamery.
  • Vylepšený a citlivější histogram pro výběr expozice
    • Kvůli tomu, že skutečná expozice je v každé scéně zvolena jinak a liší se také podle různých úrovní světla i aktuálního typu počasí.
  • Upraveny světelné zdroje (pouliční lampy, světla vozidel)
    • Přepnuli jsme světelné zdroje na fyzikálnější atenuace (inverzní kvadratický pokles).
    • Přecházíme na konfiguraci založenou na fyzikální jednotce pro omezení odhadů.
Ale také mnoho menší vizuálních úprav:
  • Proměnlivé odrazy
    • Odrazy v oknech obchodů a na hladkých površích lépe odpovídají denní době a počasí.
  • Vylepšené chování odrazů
    • Na laku tahačů, v oknech a na skle obecně.
  • Stín slunečného obzoru
    • Viditelný při východu nebo západu slunce.

A nespočet dalších drobných vylepšení, oprav a úprav.

Jak už si asi dokážete představit – všechno tohle bylo pro náš tým obrovské množství práce. Počáteční jasná jiskra (zamýšlená slovní hříčka), která toto všechno umožnila, pocházela od malého týmu programátorů a specialistů na vizuální efekty (vyfoceni níže). Pokračovali v hackování, iterování a plánování, dokud to celý tým neměl „snadné“ a zbývalo už jen vrhnout mnoho dalších let člověkohodin práce, aby se vše přizpůsobilo novému systému.

Novinka 30
Novinka 31 Novinka 32

Nový systém nasvícení, stejně jako implementace zvukového enginu FMOD, je stále ještě ve vývoji, leštění a ladění. A stále je před námi ještě hodně práce. V tomto okamžiku však již cítíme, že je v reprezentativním stavu, a můžete si ho vyzkoušet sami v právě probíhajícím veřejném testování na Steamu.

Novinka 33 Novinka 34
Novinka 35 Novinka 36

Pokud jste článek dočetli až sem, jsme rádi, že jeho překlad našel využití i mezi našimi čtenáři. Nezapomeňte se s námi podělit v komentářích o vaše postřehy, případně připomínky a dotazy.

17 komentáře

  1. A eslipak si autoři už ráčili povšimnout, že světlomety protijedoucích aut jsou nepřirozeně slabý, jen malý bílý tečky bez náznaku zářivosti a případnýho oslnění, ale silnice před nima je jakoby zázrakem osvícená dost…
    Kdo na ně máte kontakt a umíte EN, napište jim to…
    (vím, že SCS je český studio, ale komunikujou vůbec česky? dyk ani nemaj českou verzi stránek, v tom jsou pro mě děsný šmejďáci a ignoranti naší národnosti)

      1. Hellforce: ano něčem máš pravdu ale taky se v něčem na omylu zkus v ATS najít chyby pač stejné chyby jsou od lidi ze scs i ETS místo toho aby se autoři za měřili na chyby ve hře tak vytvářej další chybí a už to dost lidi sere , ale ty budeš jen je obhajovat jak jsou dokonali zkus se taky porozhlédnout ve hře po chybách a pak si myslím že budeš nadávat taky !

        další věc je ta že když už něco prezentuji na yt a jsou tam dva idioty tak proč jeden nemluví anglicky a druhy český aby rozuměli i ty co anglicky neumí ? myslíš si že některé děti co hraji ETS a ATS umí anglicky ? Česka firma a neumí to mluvit český !!

        1. ad1: Pokud chceš mermomocí češtinu, tak se prosím tě nauč nejprve psát česky, protože číst to po tobě to je utrpení

          ad2: Proč nadáváš lidem do idiotů jen kvůli tomu že mluví na streamu anglicky, když je určen pro všechny hráče obou her a mezinárodním jazykem je prostě angličtina. Nehledě na to že čeští, potažmo slovenští hráči opravdu nejsou naprostá většina všech hráčů co to hrají. A aby tam bylo to že jeden mluví anglicky, druhý česky, tak to je absolutní hloupost. Jednak by se to zbytečně natahovalo, druhak by se pak mohli ozvat hráči co mluví německy, francouzsky, rusky, rumunsky, čínsky atd atd proč tam nemluví jejich jazykem taky. Uvědom si konečně že i když je SCS „české“ studio, tak už dávno je mezinárodním útvarem, jejich produkt má mnohem větší dosah za hranicema naší kotliny a tak je logické že „úředním jazykem“ je prostě angličtina.

          ad3: Nikdo neříká že tam nejsou chyby, ale dej mi prosím tě příklad alespoň 3 chyb, které tam jsou dlouhodobě a nic s nima nedělají. Mimochodem nespokojení lidé jsou vždy mnohem hlasitější než ti spokojení, tak to bylo, je a bude.

  2. Moc pěkná práce vývojářů! Smekám a děkuji!!
    Na nějaké přepracování světla jsem už nějakou chvíli čekal. Bohužel nemám v poslední době mnoho času na hraní, avšak jamile se chvilka objeví, budu to muset vyzkoušet. Osobně doufám, že zejména noční jizda bude mnohem větší požitek, než doposud. V reálu se mi líbí zejména pás svítících odrazek patníků (v ČR různě barevné) nebo koncová světla vozidel jako barevné svítící korálky.
    Doposud ve hře světlo odrážely jen patníky v některých zemích (Dánsko, …) a zadní světla vozidel relativně rychle (brzy) slábnou.

Napsat komentář