Minecraft con ray tracing è uno spettacolo. L'abbiamo provato

Abbiamo provato la mod che introduce il ray tracing in Minecraft, e per l'occasione abbiamo intervistato anche il suo creatore, Sonic Ether.

Avatar di Marco Pedrani

a cura di Marco Pedrani

Managing Editor

Minecraft è gioco che tutti voi avete sentito nominare almeno una volta, ne siamo sicuri. La prima versione è stata lanciata ormai 10 anni fa da Markus “Notch” Persson, lo sviluppatore che poi - insieme a Jakob Porser - ha dato vita a Mojang.

Nel 2014 la casa di sviluppo è stata acquistata da Microsoft, ma già nel 2011 il progetto era passato in mano a Jens Bergensten, dopo le dimissioni di Notch.

Oggi Minecraft è ancora sviluppato attivamente e conta un numero decisamente grande di giocatori, oltre 91 milioni. Questa longevità però non è del tutto merito di Microsoft e Mojang.

Anche la community e, soprattutto, i così detti “modder”, si sono dati un bel da fare per inserire all’interno del gioco nuovi oggetti, meccaniche, mostri e perfino un sistema di quest.

Il lavoro di tutti gli appassionati ha portato ad avere un sandbox con un numero ancora più grande di possibilità, che offre al giocatore tutti i mezzi necessari per vivere ogni volta un’avventura unica nel suo genere e per creare un mondo impossibile da riprodurre con la versione “base” di Minecraft.

Oltre a queste mod, ottime per donare varietà e longevità al gameplay, la community ha sviluppato anche pacchetti di texture in alta definizione per mascherare la “bassa” qualità grafica e pacchetti shader per migliorare in maniera importante luci e ombre dell’ambiente.

Proprio in ambito “shader pack” qualche giorno fa è uscita una notizia relativa ad un pacchetto shader che introdurrebbe nel titolo Microsoft nientemeno che il ray tracing.

Il pacchetto shader in questione è stato creato da Sonic Ether, all’anagrafe Cody Darr, sviluppatore indipendente autore del famoso shader pack SEUS. La versione che introdurrebbe il ray tracing è denominata SEUS PTGI.

SEUS PTGI (da “Path Traced Global Illumination”) è una versione sperimentale di SEUS che include un’implementazione software del ray tracing completamente personalizzata, che non necessita di una scheda grafica RTX per funzionare.

Non servono dunque gli RT core, ma se da un lato questo porta ad avere una più ampia compatibilità (anche se dovrete comunque avere una scheda Nvidia, la piena compatibilità con GPU AMD è in via di sviluppo) dall’altro influirà negativamente sulle prestazioni.

Qui sotto vi lasciamo una carrellata di screenshot, con e senza pacchetto shader. La differenza è decisamente notevole e il pack rende tutta l’ambientazione molto più gradevole e suggestiva, sia all’esterno che all’interno degli edifici. Lo sviluppatore ha incluso anche dei riflessi in stile ray tracing, come vedete dall’effetto delle torce sull’acqua.

Il pack influisce molto sulle prestazioni, ma c’era da aspettarselo. Durante la nostra prova il framerate medio, a risoluzione Full HD, si aggirava intorno ai 150-200 FPS, ma attivando gli shader è crollato a 20-30 FPS. Se volete giocare a Minecraft sfruttando il pacchetto SEUS PTGI vi servirà quindi un PC decisamente potente.

Siamo rimasti sorpresi dal lavoro di Cody, così abbiamo deciso di fargli qualche domanda riguardo lo sviluppo del pack, Minecraft e il ray tracing in generale.

Quanto ti ci è voluto per sviluppare questo Shader pack?

Ho scoperto il metodo per accedere e salvare arbitrariamente i dati dei blocchi (di gioco, ndr) sulla GPU a metà 2018. Dopo alcuni test, ho iniziato a lavorare su SEUS PTGI a dicembre dello scorso anno. Da quel momento non mi sono concentrato su altro.

Quale linguaggio di programmazione hai utilizzato per creare la mod?

Essendo un pacchetto shader da utilizzare con la mod OptiFine, è scritto per la maggior parte in GLSL (OpenGL Shading Language), un codice che viene eseguito sulla GPU ma che include alcune istruzioni speciali per definire alcuni comportamenti della CPU che influenzano la mod OptiFine. Fatta eccezione per queste poche istruzioni, OptiFine gestite tutto quello che è lato CPU, quindi non c’è bisogno di utilizzare Java.

È possibile ottimizzare le prestazioni, magari sfruttando tutti i core della CPU oppure più schede grafiche?

Dal momento che chi crea pacchetti shader per la mod OptiFine non ha molto controllo sulla CPU, sta a noi ottimizzare al massimo il codice che scriviamo per la GPU. Gli shader che compiliamo non hanno bisogno di dire alla GPU come gestire il multi-thread, il che è ottimo. Tuttavia non siamo in grado, almeno per il momento, di trarre vantaggio dall’accelerazione hardware per il ray tracing presente sulle nuove Nvidia RTX.

Quali sono le principali difficoltà che hai incontrato durante lo sviluppo della mod?

La parte più difficile dello sviluppare il pack SEUS PTGI è stata sicuramente lavorare entro i limiti imposti dalla funzionalità di shader della mod OptiFine. Non potevo né renderizzare nell’ordine che volessi né salvare i dati in una texture a scelta. Potevo solo renderizzare le cose in un determinato ordine e in una certa maniera, avendo solo una certa quantità di memoria in cui salvare i dati intermedi. Queste limitazioni non hanno solamente reso difficile lo sviluppo del ray tracing in sé, ma anche complicato l’ottimizzazione.

Cosa ne pensi del ray tracing? È davvero il “piatto forte” del mercato dei videogiochi dei prossimi anni?

Sicuramente! C’è però ancora molta strada da fare. Il pack SEUS PTGI dimostra che alcuni effetti di luce realistici non possono essere ottenuti senza sfruttare il ray tracing. La rasterizzazione ci ha portato fino a dove siamo oggi, ma il ray tracing permetterà di ottenere immagini davvero fotorealistiche per i videogiochi, quantomeno una volta che hardware e software saranno in grado di supportare la tecnologia.

Minecraft è famoso per offrire prestazioni abbastanza scadenti, principalmente a causa del suo linguaggio di programmazione che si affida quasi totalmente alla CPU. Cosa ne pensi? Credi che ci sia un modo per sfruttare meglio tutto l’hardware del PC?

Non sono molto esperto riguardo la programmazione della CPU, ma per quanto ne so credo che Minecraft funzionerebbe meglio se utilizzasse un codice con meno overheard rispetto a Java. Penso anche però che i problemi di prestazioni siano meno legati al linguaggio utilizzato rispetto a quanto pensino le persone. La tecnologia alla base di Minecraft è decisamente complessa, basti pensare che in un chunk 16 x 16 ci sono 65536 voxel (la controparte tridimensionale del pixel, ndr) e che ognuno di questi può contenere uno di centinaia di tipi di blocchi. Questo è solo un esempio della gran quantità di dati che viene generata, archiviata e che può essere manipolata in Minecraft. Sicuramente il codice al centro del gioco può essere migliorato, ma quando guardo la situazione da questo punto di vista rimango impressionato dalle prestazioni.

Credi ci siano possibilità di vedere il tuo shader pack su console?

Non per il momento. Il “Super Duper Graphics Pack” annunciato all’E3 del 2017 potrebbe però aprire la strada per l’utilizzo di altri pacchetti grafici, relativi principalmente alle texture. Sono però tutte speculazioni, nessuno sa con sicurezza quando il pack annunciato sarà terminato e cosa porterà effettivamente al gioco una volta distribuito. Immagino che non ci resti che aspettare.

In chiusura vi lasciamo un video, creato dall'utente Hodilton, che mostra le caratteristiche del pack. Se siete interessati a provarlo sappiate che è disponibile solamente per chi supporta Cody tramite il suo Patreon, ma la versione finale sarà disponibile pubblicamente.