PDA

View Full Version : domandona per gli esperti


alexlionheart
30-10-2005, 12:39
scusate a tutti ma avevo questo dubbio che mi affligge da parecchio tempo oramai. volevo sapere , in un ' applicazione 3d tipo un videogioco o altro qual' e' il componentedel pc che si ocupa di creare la scena tridimensionale ovvero i poligoni nudi e crudi,non ho mai capito se e' il processore o la scheda video?
scusate ancora per la banalita' della domanda

maso87
30-10-2005, 18:24
Interessante
Mi iscrivo in attesa di risposte

la_piaga
30-10-2005, 18:28
Dipende dalle operazioni effettuate sulla geometria e dalle politiche implementative, comunque in linea di messima possiamo dividere il processo di rendering in due fasi: operazioni geometriche (calcolo illuminazione, prospettiva ed eventuali operazioni accessorie come skinning e volume shadows) ed operazioni raster (il calcolo del colore assunto da ogni pixel miscelando mappe ed illuminazione giacenti sulla superficie che si va a rendere). Per quanto riguarda la prima fase è possibile dividere i calcoli tra cpu e gpu anche se ultimamente, con le strabordanti performances dei processori grafici sui vertex shaders, diviene sempre meno conveniente, soprattutto per via del fatto che tutto ciò che deve essere uploadato via agp o pci-e dalla ram alla ram video costituisce un un collo di bottiglia. La seconda fase è invece a totale carico della gpu, ne consegue che in linea di massima, nel solo processo di generazione della scena e rendering la cpu ha un ruolo teoricamente marginale anche se in pratica diviene poi (siccome alcune operazioni non possono essere effettuati via vs e devono passare quindi, come d'altronde l'organizzazione genreale del processo di rendering, per la cpu che spedisce poi il risultato alla scheda video, con le conseguenze sopra descritte) in alcuni casi decisamente importante.

Zimmemme
30-10-2005, 19:41
scusate a tutti ma avevo questo dubbio che mi affligge da parecchio tempo oramai. volevo sapere , in un ' applicazione 3d tipo un videogioco o altro qual' e' il componentedel pc che si ocupa di creare la scena tridimensionale ovvero i poligoni nudi e crudi,non ho mai capito se e' il processore o la scheda video?
scusate ancora per la banalita' della domanda


Parli di rendering puro?
Se è così la scheda video non c'entra quasi per nulla.
E' tutto lavoro di cpu e ram!
A meno che la scheda video, tramite driver appositi, non si sobbarchi parte del render.
La scheda video entra in gioco quando modelli, ruoti il pezzo, fai lo zoom ecc.

maso87
30-10-2005, 19:58
A meno che la scheda video, tramite driver appositi, non si sobbarchi parte del render.
ecc.
Dove posso approfondire questa cosa? Mi sembrava di aver letto quelcosa dulle Nvidia

la_piaga
30-10-2005, 20:08
Dove posso approfondire questa cosa? Mi sembrava di aver letto quelcosa dulle Nvidia
Ci sono schede dedicate al rendering classico (alla vray per intenderci) via hardware, trattasi di coprocessori matematici che con appositi drivers possono fare girare algoritmi ray tracing o radiosity alleggerendo parzialmente o totalmente il lavoro della cpu.
Essendo ormai a tutti gli effetti le gpu dei processori completi alla nVidia hanno ben pensato di avvalersi delle loro caratteristiche, sia specifiche che genral purpose, per accelerare un rendering di qualità superiore a quello totalmente real time. Trattasi di Gelato

http://film.nvidia.com/page/gelato.html

Comunque, senz'ombra di dubbio alexlionheart si riferisce al rendering puramente real time (l'oggetto della mia riosposta sopra stante), di giochi come half life2, doom3, far cry etc.

maso87
30-10-2005, 20:54
Ho guardato il link, ma non è che abbia capito molto.

Si tratta di semplici driver da installare, di programmi o altro?

Su che software si utilizzano?
Io uso maya ad esempio, come posso sfruttarli?

Grazie :)

alexlionheart
30-10-2005, 21:34
esatto essendo un appassionato di videogiochi volevo saperne di piu'

la_piaga
30-10-2005, 22:05
Ho guardato il link, ma non è che abbia capito molto.

Si tratta di semplici driver da installare, di programmi o altro?

Su che software si utilizzano?
Io uso maya ad esempio, come posso sfruttarli?

Grazie :)
Premetto che io non uso gelato, anche se ho spulciato per curiosità a suo tempo la documentazione. Si tratta di un motore di rendering scritto in modo da avvalersi della gpu come coprocessore per accelerare sensibilmente il rendering.
Si integra perfettamente con maya essendo l'unico pacchetto supportato direttamente (anche ad esempio 3ds max è supportato ma devi procurarti il plug in separatamente) via "mango".
La nota dolente è che per funzionare necessita della prosenza di una scheda video quadro serie FX.

Zimmemme
31-10-2005, 00:52
Da profanissimo e soprattutto da non programmatore provo a rispondere.

Quello che tu vedi nei tuoi videogiochi 3d non sono altro che un sacco di immagini renderizzate sparate a velocità superiore ai 30fps in modo da ingannare l'occhio umano.
Il procedimento pare sia quello del double buffering cioè mentre ti visulaizzo un'immagine in background ne ho già renderizzata un'altra che prontamente swappo con la vecchia.

Ora... per il processo di rendering interviene la scheda video mentre per i movimenti del personaggio è tutto lavoro di ram e cpu.

Il processo di rendering è inteso anche come gestione texture, colori vertici poligoni e tutte quelle altre cose del tipo pixel shader ecc. ecc.

Il movimento personaggio include camminare, correre, sparare, ruotare ecc. ma anche la gestione delle locazioni, rumori, intelligenza artificiale ecc. ecc.

Ciao.

P.s. Se ho sbagliato o tralasciato qualcosa correggetemi pure.

alexlionheart
31-10-2005, 11:49
non riesco a capire ognuno ha le sue idee.per farvi un esempio pratico seguite il seguente link (http://www.tomshw.it/graphic.php?guide=20040414&page=feforce_6800-41)
e notate come al cambiare della scheda grafica aumentino considerevolmente i fps medi mentre il valore minimo rimane sempre quello o cambia di un nonnulla eppure le due schede sono di una generazione di differenza

la_piaga
31-10-2005, 12:42
non riesco a capire ognuno ha le sue idee.per farvi un esempio pratico seguite il seguente link (http://www.tomshw.it/graphic.php?guide=20040414&page=feforce_6800-41)
e notate come al cambiare della scheda grafica aumentino considerevolmente i fps medi mentre il valore minimo rimane sempre quello o cambia di un nonnulla eppure le due schede sono di una generazione di differenza
Hai fatto un piccolo errore di valutazione: prendendo le 2 nvidia vorrei che tu notassi come nel primo test gli fps, sia medi che minimi siano molto più bassi rispetto al secondo e nel contempo la differenza di fps fra le due schede sia molto meno marcata; se fai una botta di conti, medi nv40/medi nv38 e minimi nv40/minimi nv38 ti rendi conto di come nel secondo test, come dici tu la 6800 non porti un grosso beneficio sui minimi ma nel primo test, al contrario il beneficio sia maggiore sui minimi rispetto ai medi!!
Questa analisi numerica, avendo in mente il tipo di scenario nel quale si svolgono i due tests (indoor vs outdoor) ti fa capire come nel primo test ci si trovi in condizioni in cui il rendering è rimesso quasi totalmente alla scheda video (pochi oggetti e shaders molto complessi) mentre nel secondo la cpu assume un ruolo più importante (scene più complesse, calcoli fisici più importanti ecc..). Quindi, nel primo test il divario prestazionale tra le 2 schede video , essendo l'onere computazionale spostato notevolmente sulla gpu, diviene tanto più marcato quanto più aumenta il peso mentre nel secondo, assumendo la cpu un rolo più importante, al crescere del peso della scena, il vantaggio apportato dalla gpu più veloce tenderà a calare in proporzione, inquanto parzialmente vanificato dalla invariate performance della cpu.
Considera che la generazione di un fotogramma richiede un certo tempo cpu ed un certo tempo gpu che vanno parzialmente sommati (dico parzialmente perchè buona parte delle operazioni possono essere eseguite in parallelo); questi tempi dipendono dalla complessità della scena ed il rapporto tra questi tempi dipende dalle politiche implementative e dal tipo di scena che vai a rendere, quindi, anche a parità di engine può succedere che in alcuni casi la gpu si fermi ad attendere la cpu ed in alcuni il contrario.

alexlionheart
31-10-2005, 13:11
io ultimamente ho cambiato quasi completamente pc e ho notato alcune cose.sono passato da una 6600gt ad una 7800gtx lasciando invariato il procio per scoprire che l' unica differenza nei giochi era che potevo aumentare i filtri.su giochi come doo 3 half life 2 e far cry passavo da niente aa e anisotropico ad aa4x e aniso 16x senza problemi tuttavia laddove in alcuni punti i giochi mi scattavano(scattare per me vuol dire scendere sotto i 60 fps) qunado avevo la 6600gt mi scattavano ugualmente passando alla 7800gtx(es:uscita dalla stazione in half life 2, prima panoramica dell' isola di far cry, scenari all' aperto di doom3; ovvero stranamente tutti scenari di una certa grandezza e quindi una maggior mole di poligoni.poi ho cambiato procio(amd 64 4000+) e le cose sono migliorate sensibilmentea parte far cry, che ci siano dei punti mal programmati dove neanche un super pc dei prossimi anni riusciranno a farlo girare decentemente?

pirulo
31-10-2005, 16:53
Secondo me nei videogame il maggior sforzo lo compie la scheda video, tant'è vero che sostituendo una scheda video con una piu' potente, la velocità e la qualita' di gioco cambiano nettamente a vista d' occhio.
Per le applicazioni 3d è tutto il contrario, Ram e MHZ a volontà per la renderizzazione delle strutture 3d e movimenti nella scena 3d.
Nei videogame è già tutto renderizzato, bisogna solo mettere in movimento qualcosa che già esiste.
Nelle applicazioni 3d è ancora tutto da elaborare, la scheda video c'entra poco e niente, difatti sostituendo la vga non si notano miglioramenti in applicativi 3d (tipo maya, 3ds....)

Zimmemme
31-10-2005, 18:47
Nei videogame è già tutto renderizzato, bisogna solo mettere in movimento qualcosa che già esiste.


Non penso proprio.

Se una stanza ha un punto luce cosa ne sa il pc o la scheda video o altro se l'omino si avvicinerà alla luce e da che lato e con che velocità ecc. ecc.

Nei videogames non è renderizzato nulla, al limite il modello è già pronto tutto texturizzato ma per il resto...ciccia!

Ovviamente il render dei videogames non ha nulla a che fare col render dei programmi3D.
Il render di un videogames è qualcosa di molto complesso e di solito il tutto è gestito dal famoso "motore grafico" il quale, se ben fatto, fa lavorare al massimo la scheda video perchè interagisce direttamente con essa.
Ma ricordiamoci sempre che è la cpu a gestire il motore grafico quindi se ne deduce che:
la miglior scheda grafica del mondo ed un processore mediocre faranno andare il nostro Quake 4 a scatti mentre invece una combinazione media di skvideo e cpu fornirebbe risultati migliori.

la_piaga
31-10-2005, 20:38
io ultimamente ho cambiato quasi completamente pc e ho notato alcune cose.sono passato da una 6600gt ad una 7800gtx lasciando invariato il procio per scoprire che l' unica differenza nei giochi era che potevo aumentare i filtri.su giochi come doo 3 half life 2 e far cry passavo da niente aa e anisotropico ad aa4x e aniso 16x senza problemi tuttavia laddove in alcuni punti i giochi mi scattavano(scattare per me vuol dire scendere sotto i 60 fps) qunado avevo la 6600gt mi scattavano ugualmente passando alla 7800gtx(es:uscita dalla stazione in half life 2, prima panoramica dell' isola di far cry, scenari all' aperto di doom3; ovvero stranamente tutti scenari di una certa grandezza e quindi una maggior mole di poligoni.poi ho cambiato procio(amd 64 4000+) e le cose sono migliorate sensibilmentea parte far cry, che ci siano dei punti mal programmati dove neanche un super pc dei prossimi anni riusciranno a farlo girare decentemente?
Non fa una piega, significa che i giochi in questione, con impostazioni grafiche medie sono cpu bound, ovvero è la cpu che "tira il freno a mano". Per meglio dire la gpu è più rapida (o ha meno cose da fare, mettila come vuoi) di conseguenza attende la cpu, quindi puoi riempire i tempi morti della gpu facendole calcolare filtri e compagnia bella senza intaccare le performances. Con il 4000+ hai spostato il bilanciamento e molto probabilmente in alcuni punti ti ritroverai gpu bound (ovvero la cpu attende la gpu), te ne puoi rendere conto se ottieni sensibili miglioramenti disattivando i filtri.

Comunque, siamo ormai arrivati a livelli di performances per quanto riguarda le gpu veramente notevoli, credo sinceramente che l'impennata evolutiva tenderà un po' a smorzarsi da qui in avanti; al contrario, appena si comincerà a ben digerire il molti threading ci sarà da divertirsi a vedere l'esplosione di nuove generazioni di fisica ed AI, ed a quel punto le cpu multi core saranno un must assoluto, e come al solito la potenza ed il parallelismo non basteranno mai...

Zimmemme
31-10-2005, 20:49
Siamo già nel futuro... multi cpu (dublecore) multi gpu (sli).

la_piaga
31-10-2005, 20:56
Siamo già nel futuro... multi cpu (dublecore) multi gpu (sli).
Ah davvero? Mi devo essere perso qualcosa...

Scherzi a parte, certo che già ci sono cpu dual core ma non ci sono ancora engines che se ne avvalgono a dovere, per megli dire sviluppati in un'ottica multi core.
Per quanto riguarda le gpu in sli è un'altro discorso: il loro principio di funzionamento le rende concettualmete molto distanti da un sistema multi thread; detta barbaramente si tratta di due sistemi isolati che possono contribuire alla stessa causa.

la_piaga
31-10-2005, 20:58
La discussione è molto interessante ma purtroppo devo proprio andare ora, ne riparliamo magari domani se riesco a ripigliarmi :p