Con i fillrate moderni e il rendering differito, l'abbattimento delle occlussioni è ancora rilevante?


10

Ad esempio, mentre è l'attuale GPU top di gamma, la GTX 980 ha uno sbalorditivo 72,1 gigapixel / secondo fillrate, che con rendering back-to-front e / o controlli buffer Z, sembra quasi ridicolmente grande, forse anche a risoluzioni di 4k. Per quanto riguarda il conteggio dei poligoni, le moderne GPU possono fare decine o centinaia di milioni di triangoli testurizzati senza intoppi se vengono raggruppate e / o istanziate correttamente.

Con il rendering in avanti, la quantità di frammenti su cui verranno eseguiti gli shader può diventare rapidamente travolgente, ma con il rendering differito, il costo è generalmente più o meno costante, a seconda della risoluzione, e da tempo abbiamo superato un punto in cui la maggior parte delle ombre o gli effetti di post-elaborazione possono essere eseguiti in tempo reale a 1080p.

Ad ogni modo, i fattori limitanti al giorno d'oggi sono più comunemente il conteggio delle chiamate e i costi di ombreggiatura, entrambi i quali sono mantenuti relativamente bassi da un corretto rendering differito e un batch di geometrie, quindi tenendo presente ciò, si sta abbattendo più dei semplici backfaces e out-of- poligoni frustranti di qualche beneficio sostanziale? I costi (tempo CPU / GPU, tempo programmatore) non supererebbero i benefici, per lo più?


1080p è la nuova pixel art.
Jessy,

Risposte:


9

Sì, vale la pena cullare l'occlusione.

Come minimo, un richiamo che hai saltato a causa dell'abbattimento è un richiamo che non deve eseguire lo shader di vertice. Il conteggio dei triangoli aumenta rapidamente non appena le GPU iniziano a supportare più triangoli, perché perché no? Con le architetture unificate, i vertex shader utilizzano esattamente lo stesso hardware dei pixel shader, quindi ogni vertice che salti a causa dell'abbattimento è più tempo di calcolo per le cose che puoi vedere. Per non parlare di tutte le altre cose che stai saltando (elaborazione delle chiamate di disegno della CPU e lancio della tris abbastanza lontano attraverso la pipeline che il rasterizzatore si rende conto che non è necessario ombreggiarle).

Ci fu una grande presentazione di due studi di Ubisoft al SIGGRAPH 2015 sulla pipeline di rendering GPU-driven. In superficie si tratta di alcune delle cose che hai menzionato: raggruppamento e istanziazione, riducendo il conteggio delle chiamate di disegno. Ma uno dei maggiori vantaggi che traggono da una pipeline guidata dalla GPU è l'abbattimento dell'occlusione a grana fine incredibilmente fine: una migliore abbattimento di quanto si vedrebbe normalmente a livello di richiamo. È tutto al servizio dell'approccio asintotico all'obiettivo: elaborare solo ciò che puoi vedere, il che significa che ciò che vedi è migliore.

(Inoltre: considera console, dispositivi mobili, VR e desktop senza la più recente e grande GPU-soldi-che-puoi-comprare. Anche se tutte le tue tris scompaiono nella bocca spalancata del tuo top of the -line GPU, potresti non essere il target principale.)


Che dire di quando gli shader di vertice vengono usati per deformare le mesh? (che presumo sia possibile ... sono un principiante della programmazione grafica)
Llamageddon

Inoltre, hai qualche documento sull'abbattimento dell'occlusione supportato dalla GPU? È una funzionalità integrata delle GPU moderne o ...?
Llamageddon,

@Llamageddon Sulle moderne architetture GPU, lo shader di vertici è sempre in esecuzione ed è perfettamente in grado di deformare le mesh, trasformando i vertici in modo non rigido. Uno shader di vertici più costoso che fa più lavoro è, ovviamente, più lavoro che verrà ignorato dalla selezione. Non ho documenti sull'abbattimento dell'occlusione della GPU, il mondo accademico sembra non esserne molto affascinato. Non è una funzionalità integrata delle GPU, ma solo un uso creativo del calcolo.
John Calsbeek,

Oh, intendevo che dire delle maglie che verranno deformate? Li abbatti dopo aver eseguito i vertex shader? Sembra complicato.
Llamageddon,

@Llamageddon Generalmente li abbatti contro un volume conservatore. O diversi volumi più piccoli che si deformano con la mesh (ad esempio, quando si scuoia è possibile collegare volumi di abbattimento alle articolazioni).
John Calsbeek,

2

Dipende dallo stile di gioco da quanto è necessario l'abbattimento. Ad esempio, gli sparatutto in prima persona ne traggono molto beneficio, avendo un sacco di cose frustrate in qualsiasi momento, mentre una vista dall'alto RTS non lo fa dal momento che stai effettivamente guardando un aereo con cose su quell'aereo. Anche in un RTS, è comunque utile fare un "rendering solo in profondità" per eliminare il sovraccarico.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.