Supporto Shader Cache e correzione V-Sync nell’ultima build di Citra Canary

Il Team Citra ha da poco apportato una correzione per la sincronizzazione verticale (V-Sync) e introdotto il supporto Shader Cache nell’ultima build di Citra Canary, l’emulatore della console 3DS per PC Windows, MacOS e Linux con architettura a 64 bit.

Il developer b0b_d0e, autore delle due modifiche apportate all’emulatore, è intervenuto su Reddit spiegando il modo in cui opera la correzione V-Sync che diversamente da come si pensa, non contribuirebbe a ridurre quel tipo di effetto traballante e il crepitio dell’audio, ma si limita a cambiare il modo in cui funziona una parte fondamentale dell’emulatore.

Per poter lavorare con GPU ad alte prestazioni, devi far conoscere qualcosa come contesto grafico. Questi contesti sono specifici di un singolo thread, il che significa che per far funzionare la grafica devi eseguire tutto sullo stesso thread.

Il problema è che se si cerca di eseguire tutto su di un singolo thread, la sincronizzazione verticale potrebbe non funzionare.

Dato che stiamo utilizzando un emulatore, la console che viene emulata ha un proprio intervallo vsync interno, mentre, molto probabilmente, il monitor del PC ne ha uno diverso.

Questi due intervalli probabilmente non corrispondono, tra i monitor ad alta frequenza (il monitor si aggiorna più del gioco) e il gameplay a turbo velocità (il gioco si aggiorna più velocemente del monitor) risulta che non vogliamo che corrispondano neanche.

Con vsync attivato per quel contesto grafico, devono corrispondere o all’improvviso il gioco inizierà a rallentare un po’.

Questo approccio aggiunge un altro contesto grafico al mix. Ora, l’emulazione è in esecuzione su un contesto e la visualizzazione dell’immagine finale viene eseguita su di un altro e in questo contesto di sola visualizzazione è abilitato vsync.

L’emulatore è dunque ora libero di sfornare i fotogrammi velocemente o lentamente, e li visualizza senza strappare alla frequenza di aggiornamento dei monitor.

Lo shader è invece un programma (relativamente) piccolo che viene utilizzato principalmente per scopi grafici, come produrre la giusta quantità di luce, ombra e colore.

Questi shader sono scritti (come per qualsiasi altro programma) in un determinato linguaggio informatico, ad esempio GLSL (quello OpenGL). Questo rende più facile per gli umani implementare questi shader.

Prima che un computer possa utilizzarli, dovrà compilarli per poterli utilizzare (proprio come qualsiasi altro codice deve essere compilato o interpretato).

Compilare ogni shader ogni volta che viene rilevato (ad esempio un albero) sarebbe un uso molto dispendioso delle risorse, quindi spesso viene utilizzata una cache.

Questa cache tiene traccia degli shader già compilati e li utilizza (dopo una rapida ricerca) invece di ricompilarli (il che richiederebbe diverse magnitudini di tempo in più rispetto alla ricerca).

Come con qualsiasi altro programma, il codice dipende dall’hardware (set di istruzioni, ecc…), ecco perché l’emulatore deve compilare la cache la prima volta e solo allora può iniziare a utilizzare gli shader compilati.

Se siete interessati potrete scaricare la versione più recente di Citra Canary per tutte e tre le piattaforme da questo indirizzo cliccando su Manual download.

(Visited 1 times, 38 visits today)

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *