Nechcem pridávať na nervozite v tomto vlákne, tak budem písať iba o technickej stránke DLSS ako ju chápem ja z toho čo je napísane vo white papers k architektúre Turing. Rád by som bol keby sme sa bavili iba o tom. Podľa mňa NVIDIA robí nasledovné (ak sa v niečom mýlim, tak ma prosím opravte):
1) Vyrenderujú X obrázkov vo vysokej kvalite, ktoré sa stanú cielmi, aké má dosiahnuť deep learning algoritmus. Hovoria o tisíckach obrázkov, ktoré sa na tento účel použijú. Tieto obrazky sa zrejme nie real-time (možno na nejakom superpočítači áno) a sú vyrenderované so 64 násobným supersamplingom. Ten chápem tak, že jeden pixel je rozdelený na 8*8 subpixelov, ktoré sa následne použijú na získanie výslednej farby pixelu.
2) Potom vyrenderujú tie isté obrázky ale bez supersamplingu. Tie budú slúžiť ako vstup pre tento algoritmus.
3) Začnú trénovať DLSS algoritmus tak, že ako vstup mu dajú obrázky vyrenderované bez supersamplingu a on na ich základe sa snaží vygenerovať obrázok v kvalite, ktorá je čo najvernejšia k nim prislúchajúcim obrázkom so 64xSS. Výstup algoritmu sa porovná so skutočným 64xSS obrázkom a ak nie sú rovnaké, upravia sa váhy algoritmu tak, aby sa znížila vypočítaná rozdielnosť medzi posledným výstupom algoritmu a cielovým obrázkom. Keďže hovoria, že využívajú "raw pixels", tak počítam s tým, že pri učení zoberú farebné zložky každého pixelu, urobia lineárnu kombináciu týchto zložiek použitím ich váh a na základe výsledku vyhodnotia, ako veľmi sa líšia od cielového obrázku. Na základe vypočítanej odchýlky sa vypočítajú nové váhy tak, aby sa cost funkcia (ktorá je použitá na meranie odchýlok) priblížila k svojmu minimu. V ďalšom kroku sa zopakuje to isté s novými váhami. Táto moja predstava je v rozpore s tým čo píše Maudit ohľadom toho, že by algoritmus mal učiť klasifikovať objekty na obrázku a na základe nich upravovať výsledok. Sú aj takéto klasifikačné postupy, ale v materiáloch od NV sa píše toto:
"In this case, the goal would be to combine rendered images, based on looking at raw pixels, to produce a high-quality result—a different objective but using similar capabilities."
Takže pozerajú sa na raw pixels a nepíšu, že by hľadali objekty v týchto obrázkoch. Skôr sa snažia napodobiť čo najvernejšie tie obrázky, ktoré sú vyrenderované s vysokým supersamplingom.
4) Výstupom algoritmu sú potom naučené váhy jednotlivých farebných zložiek, ktoré sa potom použijú na rekonštrukciu obrázku vo vyššom rozlíšení.
5) Takto pripravená skupina váh sa potom môže využiť dvomi spôsobmi
a) DLSS - vyrenderuje sa obrázok v nižšom rozlíšení a váhy sa použijú na rekonštrukciu obrázku vo vyššom rozlíšení (napríklad sa vyrenderuje v 2K a dopočíta sa obraz pre 4K). Keďže sa nerobí iba klasický rovnaký filter na obrázku ako pri iných formách post-procesingových AA, tak by mal výsledný obrázok obsahovať menej artefaktov a menej blur-u. Dopočítané pixely vo vyššom rozlíšení sa proste vypočítajú ako lineárna kombinácia tých pixelov z ich okolia, ktoré poznáme a k nim prislúchajúcich váh (tým pádom by táto lineárna kombinácia nebola fixná, čo by malo zlepšiť výsledok).
b) DLSS 2X - obrázok sa vyrenderuje v nastavenom rozlíšení (a teda nie v menšom ako pri 1xDLSS). Z neho sa potom zrekonštruuje obrázok, ktorý by mal zodpovedať rovnakému obrázku ale vyrenderovanému so 64 násobným supersamplingom. To dnes nie je v žiadnom prípade možné robiť v reálnom čase.
Mne z toho vychádza, že DLSS je inteligentný upscaler, ktorý sa snaží čo najvernejšie zrekonštruovať obrázok vo vyššom rozlíšení, ktorý sa má zobraziť ako výsledok. Otázne je, či sa obidva horeuvedené módy budú používať vždy, alebo sa použije iba štandardný DLSS a DLSS 2X bude iba niekde.