Intel vstupuje do ray tracingové grafiky. Vydal vlastní AI denoiser, je open source

30. 1. 2019

Sdílet

 Autor: Redakce

Vykreslování počítačových her pomocí ray tracingu (přes DXR, součást DirectX) bude patrně hlavním GPU tématem letošního roku díky tomu, že Nvidia loni na podzim vypustila grafiky GeForce RTX s architekturou Turing, uvádějící tuto technologii. Zdá se, že s ray tracingem počítá také Intel, který vstoupí na trh samostatných GPU – snad včetně výkonných herních modelů – příští rok. A firma nyní představila vlastní řešení jedné z komponent, kterou „RTX“ u Nvidie využívá.

Touto komponentou je odšumovač neboli denoiser. Odšumovací filtr je totiž dnes trik, používaný k zvýšení výkonu ray tracingu, jenž je neobyčejně žíznivý na výpočetní prostředky. Pokud nemáte pro rozlišení výstupního obrazu dost výkonu, aby se na každý pixel analyzovalo větší množství paprsků, trpí totiž obraz chybami projevujícími se jako zrnitost, vizuální šum (viz článek o uvedení karet GeForce RTX). Protože by zvýšení počtu paprsků, které by tento efekt potlačilo, stálo příliš mnoho výkonu, požívá Nvidia trik. A sice odšumovací filtr, který odstraňuje (či možná lépe řečeno vyhlazuje či maskuje) šum. Je to podobné jako denoising videozáznamu nebo fotografie. Výsledný obraz sice nemá tolik detailů, jako by měl při „nativním“ plném rozlišení, ale neobsahuje rušivé artefakty a tudíž vypadá dobře.

AI denoiser pro ray tracing od Intelu

A právě takovýto filtr nyní představil Intel pod označením Open Image Denoise Library. Jeho úlohou je taktéž vyhlazování zašuměných ray tracingových snímků a lze se domnívat, že eventuálně by mohl rovněž skončit jako součást implementace ray tracingu v počítačových hrách v reálném čase. Stejně jako u Nvidie jde přitom o „AI“ filtr na bázi neuronových sítí. Nejde tedy o nějaký konkrétně definovaný algoritmus, ale o natrénovanou neuronovou síť, která využívá toho, že umělé inteligence tohoto typu se dají vycepovat k řešení nejasně definovaných úloh tohoto typu. Trénování je patrně stejné jako u Nvidie: pomocí korpusu tvořeného páry kvalitních obrazů a jejich horší zašuměné verze. Síť se učí odvodit z nekvalitní verze výsledek, který se podle nějakých metrik co nejvíce blíží ideálnímu kvalitnímu snímku. Hotová síť se pak aplikuje při reálném použití na aktuální výstup ray tracingového rendereru.

Obrázek z demo galerie Intel Open Image Denoise

Pokud si chcete udělat představu o tom, jaký efekt má filtr, má Intel pěknou interaktivní galerii, kde lze porovnat zašuměný vstup a filtrem vylepšený výstup. Údaj o „spp“ znamená, kolik vzorků bylo pomocí ray tracingu vypočítáno pro jeden pixel hotového obrázku. Scéna Art Deco na konci tedy používá 2048 paprsků na bod a přesto trpí šumem.

Práce pro AVX-512 a mnohajádrová CPU

Rozdíl u Intelu je, že pro běh filtru nejsou použity speciální akcelerátory jako tensor jádra u Nvidie, byť jejich zapřažení v budoucnu asi není vyloučené. Uvidíme, třeba Intel také integruje nějakou „NPU“ do svých budoucích CPU a GPU, má pro to technologie v podobě IP MovidiusNervana. Intel Open Image Denoise místo toho teď běží na CPU. Využívá pro akceleraci SIMD (vektorová) rozšíření AVX2 a dokonce AVX-512, které by tak touto cestou mohly být využity ve hrách. A tento filtr by asi také dokázal dát práci velkému množství jader CPU. Neuronové sítě by totiž měly být vysoce paralelizovatelnou úlohou.

Minimálním požadavkem jsou podle Intelu alespoň instrukce SSE4.2 (které umí CPU od Nehalemu a u AMD od Bulldozeru), které ale neposkytnou tolik výkonu. V popisu softwaru je uvedené, že jsou podporovány procesory architektury „Intel 64 a kompatibilní“, takže by tento denoiser měl fungovat i na procesorech AMD (případně VIA/Zhaoxin).

ICTS24

Open source

Důležité zde je ještě jedno: jedná se o open source kód, který tedy bude možné vylepšovat, případně na něm stavět další projekty tohoto typu. Intel jej uvolňuje pod permisivní licencí Apache 2.0; zda či jak jsou uvolněné také korpusy dat pro nezávislé vytrénování koeficientů sítě (bez nichž nemůžete trénování sami přesně zreplikovat), ovšem nevím. Open Image Denoise také jinak staví na komponentě Intel Math Kernel Library for Deep Neural Networks (MKL-DNN), i ta je otevřena pod licencí Apache 2.0. Momentálně je kód denoiseru ve verzi 0.8.0 odpovídající stádiu beta. Intel jinak tento filtr oznámil již před časem v kontextu Hollywoodského filmového ray tracingování s knihovnou Intel Embree, ale až nyní vydaná verze 0.8.0 je první, která byla uvolněna veřejně.

Momentálně asi tento software bude používán spíše pro offline rendering a vizualizace, ostatně Intel ještě aspoň rok do výkonné herní grafiky nezasáhne. Až se tak ale stane, bude možná Open Image Denoise nebo jeho evoluce ve hrách použita k implementaci DXR – uvidíme.