Home / The Unreal Engine has the solution for shader intermittency.

The Unreal Engine has the solution for shader intermittency.

06/02/2025 00:04:17
Unreal Engine 5.2 introduce un nuovo sistema di pre-caching PSO (Pipeline State Objects) per ridurre lo stuttering degli shader nei giochi. Lo stuttering degli shader si verifica quando un gioco deve compilare uno shader in tempo reale, causando ritardi e interruzioni visive. I PSO combinano shader e impostazioni di rendering per essere preparati in anticipo, ma il numero enorme di combinazioni possibili può essere difficile da gestire. Il nuovo sistema di pre-caching analizza i materiali e le impostazioni del gioco durante il caricamento per determinare i PSO necessari, preparandoli in anticipo per ridurre i ritardi percepibili. Questo sistema si applica solo a alcuni shader al momento, ma Unreal Engine continua a lavorare per risolvere completamente questo problema.
The Unreal Engine has the solution for shader intermittency.

Unreal Engine 5.2 ha introdotto un nuovo sistema di precaricamento degli Oggetti Stato Pipeline (PSOs) per aiutare a ridurre l'interruzione causata dalla compilazione degli shader nei giochi. Questo alleggerisce l'interruzione degli shader, che è un enorme problema nei giochi per PC in questo momento.

La compilazione degli shader (anche nota come stuttering degli shader) si verifica quando un gioco deve preparare uno shader proprio prima che possa essere visualizzato, causando ritardi evidenti e lo shader che appare in modo evidente. Questo ritardo si verifica perché la conversione del codice di alto livello dello shader in codice macchina comprensibile da diverse schede grafiche è complicata.

Le moderne API grafiche come DirectX 12 e Vulkan hanno introdotto i PSO (Pipeline State Object) per migliorare le prestazioni. I PSO combinano shader e impostazioni di rendering in modo da poter essere preparati in anticipo. Tuttavia, il numero enorme di combinazioni possibili di PSO può essere travolgente nei giochi complessi con molti materiali e opzioni di rendering diversi. Metodi precedenti, come la "Bundled PSO Cache" di Unreal Engine, non sono riusciti a tenerne dietro. Questa cache richiedeva molte risorse per il monitoraggio e era difficile da gestire.

Il nuovo sistema di pre-caching PSO di Unreal risolve alcuni problemi precedenti. Durante il caricamento, esamina materiali, mesh e impostazioni generali per determinare quali PSO (Pipeline State Objects) sono probabilmente necessari. Questi vengono preparati durante uno schermo di caricamento o poco prima che vengano richiesti. Se gli oggetti entrano in gioco successivamente, possono attendere che i PSO siano pronti o utilizzare un materiale base. Questo aiuta a ridurre ritardi percepibili.

È fantastico che i motori di elaborazione stiano lavorando per risolvere questo problema. Ciò che è interessante è che questo problema esiste solo a causa dei miglioramenti tecnologici. In passato, i giochi venivano forniti con codice shader precompilato, che il driver grafico convertiva durante l'esecuzione del gioco. Questo funzionava bene per i giochi più semplici, ma sono emersi problemi di prestazioni quando gli shader sono diventati più complessi e le schede grafiche si sono migliorate.

Tieni presente che la gestione delle modifiche dei materiali è un lavoro in corso e attualmente si applica solo a alcuni shader. Ad esempio, gli shader globali (usati per effetti come il blur di movimento) vengono gestiti in modo diverso e continueranno a presentare problemi. Tuttavia, ci sono piani per migliorare questo aspetto in futuro.

Nonostante questo, sembra che Unreal stia guidando la carica per risolvere questo problema per i giocatori. Spero che una soluzione permanente faccia diventare il stuttering degli shader un ricordo del passato.

Potrebbe interessarti