Perché oggi dovresti utilizzare il rendering software rispetto al rendering hardware?


13

A differenza del rendering di CPU o software, suppongo?

Generalmente tutto il rendering attuale non sarebbe basato su GPU, visto che utilizzeresti OpenGL o Direct X?

Qualcuno potrebbe darmi alcune informazioni qui, non riesci a trovare risposte adeguate?

Risposte:


7

Come già sai chiaramente cos'è il rendering GPU ... lasciami rispondere a quello che sembra stia chiedendo.

Tradizionalmente, il rendering hardware ha comportato una stigmatizzazione molto complessa. Ciò è stato in gran parte dovuto alla progettazione delle interfacce di programmazione dell'applicazione (API) che non sono state ben adattate per nascondere la complessità; cioè, la curva di apprendimento è stata ripida. In parte è stato anche dovuto alla comprensione del fatto che la scrittura di applicazioni 3D, per le quali queste API sono fortemente orientate, è molto più complessa rispetto alla scrittura di applicazioni 2D. Per quanto riguarda la complessità dell'interfaccia, mi riferisco a interfacce come OpenGL e DirectX. Per quanto riguarda 3D vs 2D, mi riferisco alla matematica e alla geometria che vanno alla costruzione di scene 3D, rispetto alla semplicità con cui la mente non allenata può affrontare i problemi 2D.

Tuttavia, negli ultimi anni, non solo il materiale didattico è diventato molto più disponibile, ma anche molte biblioteche che avvolgono le complessità sottostanti di queste interfacce sono diventate disponibili e hanno abbassato le barriere all'ingresso. Tutto ciò è ricondotto a un ciclo di crescente interesse che era già presente a causa della crescente importanza della visualizzazione, delle interfacce utente intuitive e delle prestazioni su dispositivi a bassa potenza.

Pertanto, il rendering software e il rendering 2D sono stati buoni punti di ingresso e aree di interesse per coloro che non conoscevano la grafica e / o desideravano creare un prodotto in cui il rendering non richiedeva troppo tempo disponibile in un progetto. Almeno per quanto riguarda il 2D, questo vale ancora; la tecnologia ha ampiamente colmato il divario nel portare il rendering 2D alla GPU.


20

Ci sono alcune risposte davvero buone qui, quindi solo per completarle.

Una delle principali forze trainanti dietro il rendering del software è la capacità. Questo è stato toccato in una delle risposte, ma ho intenzione di fare un punto opposto: il rendering del software può effettivamente essere più capace del rendering hardware, non di meno.

Con l'hardware sei generalmente limitato alle capacità dell'hardware stesso, anche se OpenGL per uno è in grado di emulare software di molte cose che potrebbero non esistere nell'hardware. Ciò significa che se si tenta di utilizzare la funzione X ma l'hardware non lo supporta, si verificherà una delle due cose: o si tornerà all'emulazione del software (il tipico scenario OpenGL) o non si arriva a usalo affatto (il tipico scenario D3D).

Con il rendering del software puoi scrivere tu stesso il codice. Puoi manipolare le cose e avere il pieno controllo su ciò che accade fino al livello dei pixel. Per dare un esempio di un tuffo nel passato, Quake aveva implementato i pixel shader nel software nel 1996, in un momento in cui le schede 3D (allora non erano chiamate "GPU") potevano a malapena rasterizzare alcune dozzine di triangoli strutturati.

Questo è più vero anche con le GPU attuali, ma ci sono ancora parti significative della pipeline grafica che sono esposte come funzionalità fisse (o addirittura non esposte affatto).

Il rendering del software può ridimensionarsi meglio. È solo relativamente recente che abbiamo visto che le configurazioni multi-GPU diventano realmente praticabili, ma il software può scalare su molti core della CPU in molti server. È possibile disporre di intere server farm dedicate a questo e le farm di rendering professionali continueranno a utilizzare il rendering software.

Il software può esporre diversi paradigmi di rendering. L'hardware attuale è molto focalizzato attorno al paradigma triangolo / vertice / frammento / rasterizzazione; si tratta di scegliere una cosa e ottimizzarla fino a quando non grida pietà. Le GPU sono ancora una cattiva scelta, ad esempio per il ray tracing, che è più comunemente implementato nel software.

Ovviamente, quando si tratta di un confronto diretto da mele a mele, una GPU batterà il software in qualsiasi giorno della settimana, a condizione che stiamo confrontando aree in cui le GPU sono più forti. Ma questo non vuol dire che sono più forti in ogni area. Nonostante ciò, e ai fini di questo sito SE, l'utilizzo dell'hardware è generalmente la strada da percorrere, ma basta essere consapevoli del fatto che ci sono casi d'uso in cui è anche possibile utilizzare il software.


8
+1 per "il rendering del software può effettivamente essere più capace del rendering hardware, non di meno".
concept3d

10

Il rendering di hardware o GPU è, come hai indovinato, utilizzando l'unità di elaborazione grafica (aka scheda video) per il rendering di un'immagine. Il contrario è il rendering del software in cui viene utilizzata la CPU.

Il rendering del software viene solitamente utilizzato come fallback quando non è disponibile una GPU (adatta). Tuttavia, poiché la GPU è un ordine di grandezza più veloce, i rendering software non sono quasi mai utili poiché una CPU di solito non sarà in grado di eseguire il rendering delle immagini in tempo reale. Il rendering del software è utile quando è necessaria un'alta precisione se sono necessarie formule estremamente complicate per il rendering dell'immagine. Poiché le CPU hanno uno scopo più generale rispetto alle GPU e quindi hanno più capacità. Tuttavia, questo argomento sta diventando sempre meno valido poiché le GPU al giorno d'oggi possono gestire attività sempre più complesse e non sono più limitate a soli float a 32 bit per rappresentare i numeri.


2

Penso che questa sia davvero una bella domanda.

Quello che posso immaginare è:

  • La VRAM è più limitata della memoria RAM generale. In caso di rendering GPU - ogni trama è più un problema. Puoi memorizzare in media da 4 a 8 volte più dati nella RAM di VRAM. Naturalmente questo scenario presuppone che non vi sia alcun sistema responsabile della liberazione / invio di trame non utilizzate / richieste da / a RAM / VRAM

  • In termini di multithreading è molto più semplice quando si lavora con il rendering del software - non è necessario condividere contesti

  • Se stai realizzando grafica 2D - di solito la maggior parte dei framework porta avanti l'implementazione della valutazione dei rettangoli sporchi - ciò che risolve molti problemi di prestazioni.

Tuttavia, il rendering con OGL / D3D offre molte più prestazioni e possibilità. Gli shader possono fare cose davvero incredibili, quasi impossibili con il rendering del software.

Ma tecniche come il blitting, l'uso dei colorkey, hanno la loro sensazione di essere al livello base, l'origine del mondo della computer grafica.

Penso che sia almeno buono conoscere il rendering del software. È davvero un mondo molto eccitante, senza contare che è la radice di tutto ciò che vediamo oggi.


1
Non è necessaria l'accelerazione hardware per eseguire shader. OS X 10.9 viene fornito con un'implementazione software completa di GL4. Le prestazioni sono incredibilmente buone per il rendering del software; non è al punto in cui puoi giocare realisticamente a giochi sofisticati (per essere onesti, né le GPU con cui Apple spedisce i loro prodotti) ma è molto più pratico che usare qualcosa come il rasterizzatore di riferimento Direct3D. In realtà è qualcosa che potresti spedire utilizzando software funzionante.
Andon M. Coleman,

@ AndonM.Coleman Non tutti usano Apple e non conosco i renderer software che supportano shader su Linux e Windows.
luke1985,

1
Non era quello il mio punto però. Esistono implementazioni di OpenGL in cui shader completamente funzionanti funzionano completamente sulla CPU. Il fatto che Apple sia lo sviluppatore è in gran parte irrilevante. La tua risposta ha dato l'impressione di aver pensato di avere una GPU per eseguire shader moderni in OpenGL.
Andon M. Coleman,

@ AndonM.Coleman E questo è quasi corretto, perché nell'80% dei casi devi farlo.
luke1985,

2
Gli shader possono essere facilmente implementati tramite il rendering del software, infatti anche Tomb Raider 1 e Quake 1 avevano pixel shader. È esattamente l'opposto, una CPU offre un controllo maggiore rispetto alla pipeline di vertici / frammenti limitanti delle GPU attuali.
lama12345,
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.