Una tecnologia per ghermirli e nel buio incatenarli
Ci siamo. Bloomberg sta tuonando con informazioni sempre più precise. Oramai manca solo che si unisca Digital Foundry ai rumor e poi possiamo dire che Switch Pro sia in dirittura di arrivo.
Però fino alla conferma effettiva, si susseguiranno speculazioni di ogni tipo, dalle persone più disparate. In questo pezzo di Sotto la Scocca più che speculazione, voglio tornare su argomenti già trattati per rispiegarli nella giusta ottica. La tecnologia del DLSS è un gamechanger così importante e così rivoluzionario che bisogna approcciarne la spiegazione dal giusto punto di vista.
Perché una revisione o successore di Switch non può non farne a meno? Perché questo sistema è in grado da solo di cambiare la percezione e l’utilizzo di Nintendo Switch. Dobbiamo partire da lontano ed affrontare per bene il tema o si rischia di arrivare a conclusioni affrettate e sbagliate. Partiamo quindi dalla base. Il concetto di campionamento di un segnale.
![](https://www.nintendon.it/wp-content/uploads/2021/03/Aliasing-1024x546.jpg)
Esistono due modi per descrivere la realtà matematicamente. Un modo continuo, ed un modo discreto. Un sistema continuo è costituito da elementi infiniti tra di loro contigui. Un sistema discreto è costituito da un numero finito di elementi singoli tra di loro non contigui. Il problema avviene quando devo rappresentare il primo con il secondo.
Prendiamo la nostra età e la sua variazione. Noi invecchiamo continuamente, in una successione infinita di elementi che aumentano. Però, siamo soliti definire la nostra età cronologica in anni e li contiamo uno alla volta, sfruttando per l’occasione una festa di compleanno. Quindi noi “all’improvviso” passiamo da 28 a 29 anni, ma nel corso dell’anno in realtà invecchiavo continuamente. Ma se mi trovo a metà strada? Ecco che contare la mia età in soli anni non basta. Ho pochi campioni della mia grandezza età per poterla stimare in modo più corretto.
Meno male ho fatto ingegneria
Per capire più precisamente la mia età, posso aumentare il campionamento, la risoluzione, del mio strumento di misura. Io sono vivo da 28 anni, 6 mesi, 4 giorni, 2 ore 15 minuti e 41 secondi. Decisamente più preciso di prima, ma potenzialmente posso andare ancora più a fondo.
Solo che quanto tempo impiego per capire di quanti yoctosecondi sono vecchio? È pratico per l’uso che ne voglio fare?
![](https://www.nintendon.it/wp-content/uploads/2021/03/Campionamento-1024x577.jpg)
I videogiochi soffrono in maniera intrinseca di un problema di sotto campionamento. Le risoluzioni alle quali girano sono basse e per ogni pixel del quale devo scegliere un colore ho 1 solo campione. Immaginate il mondo di gioco come la realtà. Questa è continua, senza interruzioni, fatta di poligoni. Quando decido di vedere nel mondo di gioco, posso campionarlo solo con la mia risoluzione di rendering, quella alla quale eseguo il calcolo grafico. È la mia porta verso il mondo.
Questo porta a numerosi errori di Aliasing, che si mostrano come jaggies, spatial noise e flickering. Considero i termini inglesi un po’ più precisi di traduzioni nostrane, ma è bene descrivere cosa siano.
I Jaggies sono le scalettature che si notano ai bordi degli oggetti. Dovuti alla presenza di pixel che appartengono a due oggetti contemporaneamente, pertanto il loro colore viene scelto in modo errato, creando l’effetto a scala. Il flickering è lo sfarfallio, che si presenta quando non riesco a risolvere temporalmente il colore di pixel che cambia velocemente tra un frame e l’altro, causando appunto il fenomeno. Lo spatial noise è semplice rumore dello spazio, quando il mondo di gioco ha errori nella sua visualizzazione.
Una vita a mettere le pezze
Per anni sono state sviluppate tecniche per risolvere il problema senza incorrere in un aumento eccessivo del carico computazionale. La soluzione ovvia è quella di aumentare la risoluzione. Ma raddoppiare la risoluzione su ogni asse porta ad un aumento di quattro volte del numero di pixel da processare. Tecniche come il MSAA riuscivano ad aumentare la risoluzione solo in prossimità dei bordi dei poligoni, riuscendo a sfruttare meglio la potenza a disposizione.
![](https://www.nintendon.it/wp-content/uploads/2021/03/divinity2-anti-aliasing.jpg)
Tecniche purtroppo non stabili temporalmente, ovvero non risolvevano i problemi di aliasing derivanti dalla visualizzazione di frame successivi, ma solo del singolo frame statico. Inoltre sono tecniche che erano eseguite durante la fase di costruzione dell’immagine, processo diventato troppo pesante nei giochi dalla settima generazione in poi per cambi nei motori di rendering.
Oggigiorno si fa largo uso del TAA che sfrutta la risoluzione temporale del sistema di gioco. Usa le informazioni di frame tra di loro successivi, mediandole per generare un’immagine stabile sia spazialmente che temporalmente. Ovviamente nessun sistema è perfetto ed il TAA porta con se alcuni artefatti, considerati di importanza minore rispetto a non adoperarlo ed oggigiorno la stragrande maggioranza dei motori per i giochi AAA sono pensati per funzionare sempre con il TAA.
Il problema del sotto campionamento è esacerbato quando per questioni di performance si è costretti a lavorare a risoluzioni più basse di quella nativa del monitor, andando a perdere una mappatura dei pixel 1:1. Questo comporta l’uso di algoritmi atti a ricostruire un’immagine con più pixel partendo da meno pixel. Capite che la mancanza di informazione può portare a effetti decisamente spiacevoli.
![](https://www.nintendon.it/wp-content/uploads/2021/03/MOBILE_001-1-1024x576.jpg)
Chi ha giocato a Xenoblade Chronicles 2 in portatile su Switch sa l’effetto che ha una risoluzione molto bassa che cerca di essere compensata con un filtro di sharpening, usato per aumentare il contrasto mal calibrato. Il recente Apex Legends invece soffre di un problema più basilare: la bassa risoluzione rende i nemici lontani grandi solo pochi pixel, donando un enorme vantaggio a chi può vederli più chiaramente su console più potenti negli scontri a distanza.
IA HAS ENTERED THE BATTLEFIELD
Ecco quindi che entra in scena il DLSS 2.0. L’idea è quella di prendere il concetto base del TAA, quindi l’usare informazioni accumulate su più frame per avere velocemente ed a basso costo computazionale un elevato numero di campioni ed andare a sostituire il punto debole del TAA con la cosa al momento più performante che conosciamo. Le euristiche del TAA, le logiche che determinano come interpretare i dati ottenuti dalle immagini sono rimpiazzate dal machine learning.
Una rete neurale viene allenata offline, guardando migliaia e migliaia di immagini ad altissima risoluzione per poi cercare di capire come arrivarci partendo da una bassa risoluzione. In questo modo crea una logica sempre migliore che migliora nel tempo e nettamente più performante di quanto possono fare metodi generati a mano dall’uomo. Il risultato è ad oggi la possibilità di generare un’immagine in 4k partendo da una in 1080p con una qualità finale migliore del 4k nativo con TAA. E questo sistema è compatibile con ogni motore grafico che utilizza il TAA.
![](https://www.nintendon.it/wp-content/uploads/2021/03/DLSS-Statement.jpg)
Non c’è per forza bisogno di avere come punto di arrivo il 4k. Io personalmente ho goduto nel giocare Control in 2560×1080 con RT attivo ed a 60fps partendo da una risoluzione nativa di 1476×624, un terzo dei pixel, senza una perdita di qualità dell’immagine tale da essere rilevante.
Questo algoritmo però non è democratico. Richiede un hardware specifico per poter essere eseguito nel modo più efficiente possibile. Le schede grafiche dalla generazione Volta in poi di Nvidia sono equipaggiate con Tensor Core, unità di elaborazione specializzate per eseguire calcoli da machine learning. In questo modo il calcolo non ruba spazio alle unità dedicate ad eseguire il solito calcolo grafico.
Hardware specializzato
Per capire come questo può beneficiare Switch, c’è da fare un piccolo calcolo sul costo hardware che i Tensor core hanno sulla struttura della scheda grafica. In linea di massima, la potenza grezza di una scheda grafica può essere vista come una relazione di quante unità di calcolo riesco a mettere in una data area. Maggiore è l’area, più è potente, ma allo stesso modo più è densa e più è potente. Ora, lasciamoci andare in un esempio numerico ideale, che credo sia in grado di spiegare meglio il concetto.
Immaginiamo di avere una scheda grafica con 1000 unità di calcolo. Che fa girare un gioco in 4k a 30fps, quindi impiega 33ms per calcolare ogni frame. Bene. Immaginiamo di volere i 60fps. Per farlo, la linea logica sarebbe quella di raddoppiare le unità di calcolo, così da eseguire i calcoli in 16ms. E se vi dicessi che c’è un’altra via? Che posso farlo riducendo le unità di calcolo?
All’interno delle GPU della serie Turing ed Ampere i Tensor core occupano circa il 10% dell’area della GPU. Quindi, riprendendo la nostra GPU ideale, potremmo ricostruirla come una scheda da 900 unità e 10 Tensor Core. In 4k nativi ora quelle 900 unità impiegherebbero 36ms, portandomi a 27fps. Abbassando la risoluzione di rendering dal 4k al 1080p, riduco il carico di 4 volte, impiegando per ogni frame 9ms. Ovvero a 111 fps.
Il calcolo dei Tensor core è fisso in base alla risoluzione che voglio costruire. Assumiamo che quei 10 Tensor impieghino 7ms per eseguire il calcolo, così da far quadrare i conti, stiamo ragionando in modo ideale solo per spiegare il concetto. Ecco che il risultato finale è un 4k60fps partendo da un 1080p. Il tutto diminuendo il numero di unità di calcolo della scheda ideale. Utilizzando lo stesso spazio e lo stesso consumo, ho raddoppiato le performance avendo una qualità visiva di output notevole.
Ovviamente un sistema ideale è molto più complesso ed ha numerosi colli di bottiglia, ma il concetto di fondo rimane lo stesso.
Ecco quindi che Switch, da buona console ibrida, ha tantissimo da guadagnare da una soluzione del genere. Ad oggi, Switch aumenta le proprie frequenze operative per ovviare all’aumento di risoluzione così da non sfigurare su uno schermo TV. Questo potrebbe non essere più un problema. Invece di aumentare la propria potenza, le basterebbe generare con il DLSS un’immagine finale adeguata allo schermo ad essa collegata. Una transizione fluida tra portabile e fisso, migliorando notevolmente sia l’efficienza che la resa effettiva del sistema.
Anche l’uso in portatile ne beneficerebbe. Fissando l’output a 720p, la risoluzione interna potrebbe scendere notevolmente con una perdita di qualità inferiore rispetto alle tecniche odierne. Il prossimo passo per il DLSS è quello di incorporare un buffer d’ingresso a risoluzione variabile.
![](https://www.nintendon.it/wp-content/uploads/2021/03/Aumentomassivo10804kdlss.jpg)
Le tecnologie di machine learning diventeranno sempre più comuni nel futuro e potrebbero cambiare radicalmente intere pipeline di produzione, permettendo di ottenere risultati che fino a qualche anno prima pensavamo impossibili. Ritengo questa tecnologia come estremamente importante per lo sviluppo del media videoludico. Se su piattaforme ad alta potenza il suo vantaggio si trova più nell’abilitare l’uso di ray tracing, in piattaforme mobili può essere usata per aumentare l’efficienza a dismisura.
Nintendo farà effettivamente questo passo su Switch Pro? O sul successore? Non avendo la sfera di cristallo, nessuno può dirlo con certezza. Quel che è più certo è che una Switch Pro così equipaggiata spaccherebbe davvero i culi a tutti.