Přejít k hlavnímu obsahu
Novinky

Raytracing: Kresba světlem

Pavel Trousil 14.11.2018

Virtuální 3D prostředí vypadá realisticky pouze v případě, když sedí i všechny světelné efekty. Nové grafické karty toho dosahují sledováním průběhu světelných paprsků v reálném čase.

Vytvářet v počítači realisticky vypadající 3D svět je skutečně náročné. Dokonce i když grafická karta zná tvar, pozici a orientaci všech objektů, které mají být realisticky znázorněny, stále ještě není jasné, jaká část jejich povrchu bude skutečně vidět, a je potřeba to dopočítat. K vytvoření realistického obrazu existují různé přístupy s různým výpočetním úsilím. Dosavadní výkon grafických karet pro PC byl zatím dostačující pouze pro 3D rastry.

 geforce-rtx-bfv-nahled

Základ: Rasterizace polygonů

Při renderování se vypočítají všechny 3D objekty, které mají být zobrazeny jako kompozice různých polygonů, transformují se do dvourozměrného obrazu a výsledné plochy se vyplní informacemi o barvě a jasu. Při použití této jednoduché metody lze při využití výkonného hardwaru dosáhnout velice detailních obrazů. Nicméně pro zobrazení interakce mezi zobrazenými objekty, zejména pokud jde o světla, stíny a odrazy, je třeba použít různé další triky. Pomocí stínování se mění hodnoty barvy a jasu generovaných pixelů. To pak ale vede k tomu, že kvůli rovnoměrnému osvětlení je na herní scéně okamžitě možné identifikovat, že jde o scénu umělou. Nevypadá přirozeně.

 

ray-nahled

 Raytracing sleduje tok světelných paprsků, které dopadají na virtuální kameru, a vypočítávají se při něm hodnoty barev a jasu. Skutečný snímek je vytvořen v rovině snímku, kde každý pixel obdrží barvu a hodnotu paprsku, který jej protíná. Všechny nepodstatné povrchy jsou automaticky skryty, čímž se ušetří procesní výkon.

Raytracing: Sleduj světlo

Metoda nazvaná raytracing, což by se dalo přeložit jako sledování paprsku, se řídí jiným přístupem k věci. Generování obrazu začíná ze zorného bodu, tedy z pohledu virtuální kamery, nebo z oka hráče. Odtud vyzařuje každý světelný paprsek dopadající na kameru a zpět a vypočítávají se změny barvy a jasu, které paprsek způsobí při každém odrazu. Skutečná tvorba výsledného obrazu pak odpovídá obrazové rovině, která leží před virtuální kamerou, respektive okem hráče. Každý bod na této rovině získává hodnoty barvy a jasu paprsku, který zde protíná povrch obrazu. Vzhledem k tomu, že se toto vše děje z pohledu kamery, jsou všechny nerelevantní oblasti scény automaticky skryté. Tím se ušetří drahocenný výpočetní výkon. Nicméně i tak je raytracing výpočetně mnohem náročnější než rasterizace, zvláště když se vypočítávají vícenásobné odrazy. Proto byl doposud tento postup vyhrazen pro filmová studia a profesionální uživatele.

Filmové scény a speciální efekty se za využití tohoto postupu vytvářejí už poměrně dlouho a některé díky tomu vypadají opravdu realisticky. Navzdory nasazení celých farem vysoce výkonných počítačů však trvá vykreslování takovýchto scén mnohem déle, než kolik pak zabere jejich projekce. Nasazení raytracingu v interaktivních hrách a VR aplikacích na domácích počítačích proto bylo doposud v podstatě nemyslitelné.

 

recursive-raytrace-of-a-sphere-nahled

Ukázkový snímek vykreslený pomocí raytracingu znázorňuje, že v případě více odrazů vyžaduje podstatně vyšší výpočetní výkon.

Profesionální postupy na domácím počítači

Nyní je ale k dispozici dostupná nejnovější generace grafických karet Nvidia GeForce RTX. Mají dostatečný výkon pro to, aby dokázaly vypočítat scény za využití techniky raytracingu v reálném čase. Na straně hardwaru je to možné díky specializovanému raytracing enginu, stejně jako díky obecně vysokému výpočetnímu výkonu grafických karet i procesorů a rychlému přístupu k uloženým datům. Na straně softwaru je to pak možné prostřednictvím speciálního aplikačního rozhraní. Vzhledem k tomu, že Microsoft rozšířil aplikační programové rozhraní DirectX 12 o podporu raytracingu, v podstatě už nic nebrání širokému využití raytracingu v herním průmyslu.

Jedním z prvních herních titulů, které raytracing a karty GeForce RTX podporují, je multiplayerová střílečka Battlefield 5, i když pouze omezeně, například na odrazech od vodní plochy. Ukázková videa z této hry však přesto vypadají opravdu pěkně. V rozlišení Full HD běží demo hladce na grafické kartě Nvidia GeForce RTX 2080 Ti, a to při frekvenci více než 60 fps, a použitelné je dokonce i rozlišení 4K. A to je nutné přihlédnout k tomu, že na vývoj podpory raytracingu nebylo příliš času. S optimalizovaným kódem bude využití raytracingu dokonalejší.

Hybridní využití raytracingu a současně rastrování patří RTX technologii Nvidia. Náročný raytracing se využívá jen k dosažení některých efektů, které dodávají scéně na realističnosti, zatímco zbytek scény je vypočítáván tradičním postupem. Aby raytracing nezůstal proprietární technologií, vyvíjí Nvidia rozšíření vlastního multiplatformního grafického rozhraní Vulkan. Pokud bude další generace grafických karet AMD dostatečně výkonná a bude tuto technologii podporovat, může také vykreslovat realistické 3D světy. Nová generace grafických procesorů AMD se má na trh dostat na jaře příštího roku.

 nvidia-geforce-rtx-2080-ti-top-side-fans-nahled

Vývojářské platformy

Rozšiřování nových grafických technologií stojí a padá s podporou herních vývojářů. V tomto směru už je Nvidia poměrně daleko. Nabízí totiž herní vývojářský framework Nvidia GameWorks, který obsahuje herní fyziku PhysX, sbírku efektů VisualFX a nově také raytracing modul OptiX. Umožňuje zrychlení algoritmů pro raytracing, stejně jako následné zpracování obrazů, které jsou pomocí něho vytvářeny (například odstraněním šumu).

Je tedy vcelku reálné, že nadcházející počítačové hry se nebudou příliš lišit od propracovaných scén hollywoodských filmů. Pro úplné ponoření se do 3D světa by však raytracingem vymodelované scény musely být zobrazeny ve VR brýlích s hodně vysokým rozlišením. Na to ale budou muset grafické karty svůj výkon ještě zvýšit a to bude nějakou dobu trvat.

 


Máte k článku připomínku? Napište nám

Sdílet článek

Mohlo by se vám líbit








Všechny nejnovější zprávy

doporučujeme