Dove la GPU Passa il Suo Tempo

Se vuoi saltare il lavoro, prima devi sapere dove sta il lavoro.

La frame generation ha senso solo se capisci quali parti di un frame sono costose e quali no. L'intera strategia di DLSS, FSR, XeSS e PSSR è saltare le parti costose e ricostruire ciò che manca. Quindi questo capitolo è uno sguardo dettagliato alla struttura dei costi di un frame moderno.

Il breakdown di un tipico frame AAA

Per un gioco di generazione attuale come Cyberpunk 2077 con path tracing attivo, in 4K su una GPU di fascia alta, il timing per frame è più o meno questo:

Pass Tempo approssimativo Note
Shadow map 1–2 ms Re-render della geometria dal punto di vista di ogni luce
G-buffer (geometria) 2–4 ms Lavoro vertex + fragment, riempie depth/normal/albedo
Illuminazione ray-traced 8–25 ms Il costo dominante nei giochi path-traced
Denoising 2–4 ms Pulisce l'output ray-traced rumoroso
Riflessioni / SSR / SSAO 1–3 ms Approssimazioni screen-space
Post-processing 1–2 ms Tonemapping, bloom, motion blur, DOF
UI / HUD <1 ms Costa poco

In 4K nativo con path tracing, i pass di ray tracing e shading dominano tutto il resto. Per questo l'upscaling fare girare quei pass a, diciamo, 1080p e ricostruire a 4K dà un guadagno enorme. Stai tagliando la parte più costosa del frame di un fattore 4×.

Timeline orizzontale in stile Gantt che mostra un singolo budget di frame di 16,6 ms suddiviso in segmenti colorati: shadow map in giallo, G-buffer in ciano, ray tracing in rosso e di gran lunga il più grande, denoising in arancione, riflessi in viola, post-processing in verde, UI in grigio. Tempi etichettati in millisecondi. Titolo 'Where 16.6 ms goes   4K, path-traced'. Infografica pulita, sfondo scuro.
Dove vanno i 16,6 ms in un frame 4K path-traced ray tracing e shading dominano tutto il resto.

Il costo scala con il numero di pixel

Quasi ogni pass della lista qui sopra scala linearmente con il numero di pixel. Raddoppia la risoluzione e raddoppia all'incirca il costo e il 4K è quattro volte i pixel del 1080p. Questa è l'intuizione centrale che l'upscaling sfrutta.

Andare da 1080p a 4K significa:

  • 1920×1080 = 2.073.600 pixel
  • 3840×2160 = 8.294.400 pixel
  • 4× più pixel da shadeare, illuminare e ray-tracciare.

Se la tua modalità DLSS "Performance" renderizza internamente a 1080p e produce un output 4K, il motore sta facendo all'incirca un quarto del lavoro per pixel del 4K nativo. Il costo rimanente ricostruire i pixel mancanti è eseguito da una piccola rete neurale che gira in una frazione di millisecondo su hardware dedicato.

Diagramma a rettangoli annidati che mostra i conteggi di pixel in scala: 720p (più piccolo), poi 1080p, 1440p, 4K, 8K (più grande), ognuno etichettato con la sua risoluzione e numero di pixel. Ogni rettangolo riporta il costo come moltiplicatore di 1080p (1×, 1,78×, 4×, 16×). Infografica tecnica pulita, tema scuro, contorni al neon.
Il 4K è 4× i pixel del 1080p e il costo di shading per pixel scala di pari passo.

Quali pass scalano con la risoluzione, e quali no

Questo è importante perché la frame generation è selettiva:

  • I pass per-pixel (G-buffer, shading, ray tracing, post-processing) scalano con la risoluzione. L'upscaling aiuta qui.
  • I pass per-vertex (vertex shader, skinning, processing della geometria) scalano col numero di triangoli, non con i pixel. L'upscaling non aiuta qui.
  • Il setup e l'overhead di draw call scala col numero di draw call. Anche qui l'upscaling non aiuta.
  • La banda di memoria è condivisa da tutti ed è spesso il vero collo di bottiglia sulle GPU di fascia alta.

Per questo la modalità DLSS "Quality" (che internamente renderizza a ~67% della risoluzione di output) a volte dà solo un ~20% di guadagno in giochi CPU-bound o geometria-bound. Il renderer non era davvero limitato dai pixel.

Dove si inserisce il ray tracing

Il ray tracing hardware ha peggiorato drasticamente il problema del costo per pixel. Un singolo "primary hit" ray-tracciato può generare 2–10 raggi secondari per riflessioni, ombre e global illumination. Ogni raggio percorre una BVH (bounding volume hierarchy) un albero di box allineati agli assi cercando il primo triangolo che colpisce. Le GPU moderne hanno un RT core a funzione fissa che accelera la traversata della BVH e l'intersezione raggio-triangolo.

Anche con l'accelerazione hardware, un gioco path-traced in 4K può sparare centinaia di milioni di raggi per frame. L'output è estremamente rumoroso solo uno o due campioni per pixel e deve essere pulito da un denoiser (spesso a sua volta una piccola rete neurale o un filtro spazio-temporale calibrato a mano).

Vista schematica laterale di una scena 3D (una stanza con uno specchio e una finestra). Dalla camera, i raggi primari sparano nella scena. Ogni hit primario genera raggi d'ombra verso la luce, raggi di riflessione verso lo specchio, e raggi di rimbalzo indiretto nella stanza. Ogni raggio è disegnato come una linea sottile colorata: primari bianchi, ombre gialli, riflessi ciano, indiretti magenta. Annotato. Diagramma tecnico pulito, sfondo scuro.
Ogni raggio primario genera raggi secondari per ombre, riflessioni e rimbalzi indiretti e ogni raggio costa.

Il costo dello shading è il vero bersaglio

Sommando tutto il quadro è coerente: la cosa più costosa che una GPU moderna fa è valutare equazioni di shading per pixel, soprattutto quando queste equazioni includono il ray tracing. Geometria, ombre e post-processing sono costi minori. Il lavoro CPU animazione, fisica, AI, sottomissione delle draw call è essenzialmente indipendente dalla risoluzione.

Quindi se vuoi un interruttore magico che raddoppi o triplichi il tuo frame rate, il posto dove cercare è il costo dello shading per pixel. L'upscaling attacca quel costo renderizzando meno pixel all'origine. La frame generation lo attacca diversamente: renderizzando meno frame interi e ricostruendo i buchi.

Nel prossimo capitolo guardiamo la tecnica che ha reso possibili entrambi il temporal anti-aliasing e come ha insegnato ai motori a mescolare informazioni nel tempo.