PDA

View Full Version : Domanda su OpenGL e DirectX


Roran
13-02-2013, 13:34
E' da tanto che mi faccio una domanda su queste due API,forse conosco anche la risposta,però preferisco chiedere: perchè al cambio di versione delle API c'è bisogno di cambiare l'hardware (inteso come la scheda video)? le nuove funzioni necessitano per forza di cambi di architettura? :confused:

P.S: se la sezione è sbagliata vi prego di spostare la discussione dove pensate sia più appropriato,NON ME LA CHIUDETE! :)

Roran
14-02-2013, 11:50
nessuno?:(

Kino87
14-02-2013, 15:45
Perché ogni versione nuova delle Direct3D/openGL richiede l'implementazione di determinate funzionalità (ad esempio le varianti di dx9 si differenziavano fra di loro per il supporto a varie funzionalità a livello di shader, l'innovazione più grossa delle DX10 è stato il passaggio da pixel/vertex units ad unità di elaborazione generiche che potessero fare entrambe le cose, nelle DX10.1 c'è stata una prima primitiva introduzione alla tassellazione (senza specifiche troppo precise) e nelle DX11 una definizione rigorosa della tassellazione e l'introduzione al supporto dell'uso della GPU per il calcolo generico).

Tutte queste cose, data la complessità di una moderna GPU e la necessità di prestazioni, sono implementate a livello di hardware con unità hardware dedicate; nulla impedirebbe di creare una scheda video con un'architettura estremamente flessibile e programmabile che possa nascere, per dire, compatibile con le DX10 e diventare compatibile con le 11 tramite un aggiornamento firmware/software, e se non vado errato era il caso di Larrabee della Intel, il problema è che per quanto ben fatto un processore "generico" avrà un efficienza sempre molto inferiore rispetto ad un'unità dedicata e, tanto per dire qualche numero a caso, per ottenere una potenza equivalente a quella di una moderna GPU utilizzando dell'hardware sufficientemente flessibile da poter "emulare" le funzionalità che possono cambiare di versione in versione si finirebbe per avere un chip con dimensioni (che si traduce in costi) e consumi decine di volte superiori a quelle che hanno le GPU con architettura dedicata.

Se ci pensi non è troppo diverso dalla differenza fra una CPU e una GPU e di come un tempo vi fossero solo le prime, le GPU (che hanno un'architettura molto più specializzata) sono nate nel momento in cui utilizzare un processore generico (CPU) non era più sostenibile a livello di prestazioni richieste.

Aggiungo: per funzionalità molto semplici è possibile utilizzare la CPU per emulare le funzionalità che mancano nella GPU, non ricordo come si chiama ma esiste un programmino che permette di far partire giochi su vecchio hardware teoricamente non supportato emulando le funzionalità che mancano in software: l'impatto prestazionale è notevole, però funziona (circa).

Roran
14-02-2013, 16:05
Perché ogni versione nuova delle Direct3D/openGL richiede l'implementazione di determinate funzionalità (ad esempio le varianti di dx9 si differenziavano fra di loro per il supporto a varie funzionalità a livello di shader, l'innovazione più grossa delle DX10 è stato il passaggio da pixel/vertex units ad unità di elaborazione generiche che potessero fare entrambe le cose, nelle DX10.1 c'è stata una prima primitiva introduzione alla tassellazione (senza specifiche troppo precise) e nelle DX11 una definizione rigorosa della tassellazione e l'introduzione al supporto dell'uso della GPU per il calcolo generico).

Tutte queste cose, data la complessità di una moderna GPU e la necessità di prestazioni, sono implementate a livello di hardware con unità hardware dedicate; nulla impedirebbe di creare una scheda video con un'architettura estremamente flessibile e programmabile che possa nascere, per dire, compatibile con le DX10 e diventare compatibile con le 11 tramite un aggiornamento firmware/software, e se non vado errato era il caso di Larrabee della Intel, il problema è che per quanto ben fatto un processore "generico" avrà un efficienza sempre molto inferiore rispetto ad un'unità dedicata e, tanto per dire qualche numero a caso, per ottenere una potenza equivalente a quella di una moderna GPU utilizzando dell'hardware sufficientemente flessibile da poter "emulare" le funzionalità che possono cambiare di versione in versione si finirebbe per avere un chip con dimensioni (che si traduce in costi) e consumi decine di volte superiori a quelle che hanno le GPU con architettura dedicata.

Se ci pensi non è troppo diverso dalla differenza fra una CPU e una GPU e di come un tempo vi fossero solo queste ultime, le GPU (che hanno un'architettura molto più specializzata) sono nate nel momento in cui utilizzare un processore generico (CPU) non era più sostenibile a livello di prestazioni richieste.

Aggiungo: per funzionalità molto semplici è possibile utilizzare la CPU per emulare le funzionalità che mancano nella GPU, non ricordo come si chiama ma esiste un programmino che permette di far partire giochi su vecchio hardware teoricamente non supportato emulando le funzionalità che mancano in software: l'impatto prestazionale è notevole, però funziona (circa).Più o meno è quello che pensavo anche io,per caso il programma che dici è Microsoft WARP? anche se credo sia già incluso nelle API di Windows da quanto dice qui: http://msdn.microsoft.com/en-us/library/windows/desktop/gg615082%28v=vs.85%29.aspx#introduction

Kino87
14-02-2013, 16:23
Più o meno è quello che pensavo anche io,per caso il programma che dici è Microsoft WARP? anche se credo sia già incluso nelle API di Windows da quanto dice qui: http://msdn.microsoft.com/en-us/library/windows/desktop/gg615082%28v=vs.85%29.aspx#introduction

no, quello non credo c'entri niente, mi sembra solo un rasterizer dx11.1

mi riferivo più ad una cosa tipo il 3DAnalyze ( http://www.tommti-systems.de/go.html?http://www.tommti-systems.com/main-Dateien/files.html ) ma il massimo che puoi ottenere è di far partire qualche vecchio gioco che su hardware non supportato ma con una velocità di esecuzione pessima e possibilmente glitch grafici

Roran
14-02-2013, 16:39
no, quello non credo c'entri niente, mi sembra solo un rasterizer dx11.1

mi riferivo più ad una cosa tipo il 3DAnalyze ( http://www.tommti-systems.de/go.html?http://www.tommti-systems.com/main-Dateien/files.html ) ma il massimo che puoi ottenere è di far partire qualche vecchio gioco che su hardware non supportato ma con una velocità di esecuzione pessima e possibilmente glitch graficiperò alla fine credo che nel mio caso neanche serva visto che la mia vga è dx10.1 e anche facendo una prova con unigine heaven ho visto che emula via software le dx11 :)

Kino87
14-02-2013, 16:55
però alla fine credo che nel mio caso neanche serva visto che la mia vga è dx10.1 e anche facendo una prova con unigine heaven ho visto che emula via software le dx11 :)

Non credo che vengano emulate, è che vengono disattivate le funzionalità DX11 o eseguite in modo diverso. Gli engine grafici moderni spesso e volentieri sono modulari, la maggiorparte dei giochi sbandierati come DX10 o DX11 sono in realtà costruiti su base DX9 e poi vengono aggiunti alcuni effetti grafici che fanno uso delle versioni DX successive.. se l'hardware non supporta tali effetti il più delle volte vengono disattivati ed amen. Ad oggi giochi DX10/11 completamente nativi son pochi, l'unico che mi viene in mente è Battlefield 3 e pure su quello ho qualche dubbio sinceramente.

Tecnicamente le schede video DX10.1 hanno un tassellatore, ma che io sappia non è compatibile con le funzionalità del tassellatore DX11, quindi se tanto mi da tanto puoi vedere se Unigine gira emula quelle funzionalità o meno semplicemente attivando la tassellazione e vedendo se effettivamente è attiva o meno (ti assicuro che è ben visibile visto che aumenta il dettaglio poligonale di un paio di ordini di grandezza se impostato su extreme), però anche in questo caso non puoi avere la certezza perché l'engine potrebbe rilevare hw DX10.1 e utilizzare un path alternativo per attivare la tassellazione ma usando le specifiche DX10.1. Ad ogni modo sinceramente non credo di aver capito per cosa ti serva/interessi, anche perché ad oggi mi risulta che le ultime schede DX10.1 siano quelle della serie HD4xx0/GTX2x0, e nessuna di queste schede ha potenza tale da permettere di giocare dignitosamente a titoli dx11 only o di giocare a titoli con supporto alle DX11 tenendo gli effetti dx11 attivi

Roran
14-02-2013, 17:10
Non credo che vengano emulate, è che vengono disattivate le funzionalità DX11 o eseguite in modo diverso. Gli engine grafici moderni spesso e volentieri sono modulari, la maggiorparte dei giochi sbandierati come DX10 o DX11 sono in realtà costruiti su base DX9 e poi vengono aggiunti alcuni effetti grafici che fanno uso delle versioni DX successive.. se l'hardware non supporta tali effetti il più delle volte vengono disattivati ed amen. Ad oggi giochi DX10/11 completamente nativi son pochi, l'unico che mi viene in mente è Battlefield 3 e pure su quello ho qualche dubbio sinceramente.

Tecnicamente le schede video DX10.1 hanno un tassellatore, ma che io sappia non è compatibile con le funzionalità del tassellatore DX11, quindi se tanto mi da tanto puoi vedere se Unigine gira emula quelle funzionalità o meno semplicemente attivando la tassellazione e vedendo se effettivamente è attiva o meno (ti assicuro che è ben visibile visto che aumenta il dettaglio poligonale di un paio di ordini di grandezza se impostato su extreme), però anche in questo caso non puoi avere la certezza perché l'engine potrebbe rilevare hw DX10.1 e utilizzare un path alternativo per attivare la tassellazione ma usando le specifiche DX10.1. Ad ogni modo sinceramente non credo di aver capito per cosa ti serva/interessi, anche perché ad oggi mi risulta che le ultime schede DX10.1 siano quelle della serie HD4xx0/GTX2x0, e nessuna di queste schede ha potenza tale da permettere di giocare dignitosamente a titoli dx11 only o di giocare a titoli con supporto alle DX11 tenendo gli effetti dx11 attiviHo provato con la tassellazione su normal quando ho fatto il bench e già avevo notato un calo di 10-15 fps,quindi presumo che venga emulata :confused:

Kino87
14-02-2013, 17:21
Ho provato con la tassellazione su normal quando ho fatto il bench e già avevo notato un calo di 10-15 fps,quindi presumo che venga emulata :confused:

Allora, se la scheda è quella in firma: la GTX275 è una scheda DX10 e non DX10.1 quindi NON ha un tassellatore.

Detto questo, se c'è la tassellazione, FPS o meno, te ne accorgi (questa è un immagine SENZA tassellazione http://www.legitreviews.com/images/reviews/1117/unigine_dx9a_large.jpg e questa e CON la tassellazione http://www.brightsideofnews.com/Data/2009_11_17/AMDs-Radeon-HD5970-Hemlock---Is-Wickedly-Fast/unigine%20DX11-b.png).

In secondo luogo il tassellatore nelle schede video attuali non è più un unità completamente dedicata (per nvidia non lo è mai stato, per amd lo è stato fino alla serie 6, ora non più) ma vengono utilizzati gli shader>c'è un impatto ad attivare la tassellazione in quanto tale
In terzo luogo: il tassellatore crea la geometria, questa poi va comunque renderizzata: una cosa è renderizzare una scena con 1'000'000 poligoni, un'altro è renderizzarne una con 3'000'000, l'impatto di FPS c'è ed è notevole, anche con hardware dedicato

Per darti un idea, con l'hardware in firma fra non avere la tassellazione attiva ed averla in extreme ho gli FPS più che dimezzati (e stiamo parlando di un crossfire di 7850 che oltre ad essere piuttosto potente in quanto tale è anche una configurazione che digerisce bene l'uso della tassellazione). Se mi fai uno screenshot posso dirti al volo se c'è la tassellazione attiva o meno, ma ti assicuro che non è supportata in hardware dalla scheda video quindi in caso ci sia l'effetto è perché chi ha programmato l'engine di Heaven si è inventato qualcosa per emulare la funzione (ma dubito seriamente su questa possibilità)

Roran
14-02-2013, 17:29
Allora, se la scheda è quella in firma: la GTX275 è una scheda DX10 e non DX10.1 quindi NON ha un tassellatore.

Detto questo, se c'è la tassellazione, FPS o meno, te ne accorgi (questa è un immagine SENZA tassellazione http://www.legitreviews.com/images/reviews/1117/unigine_dx9a_large.jpg e questa e CON la tassellazione http://www.brightsideofnews.com/Data/2009_11_17/AMDs-Radeon-HD5970-Hemlock---Is-Wickedly-Fast/unigine%20DX11-b.png).

In secondo luogo il tassellatore nelle schede video attuali non è più un unità completamente dedicata (per nvidia non lo è mai stato, per amd lo è stato fino alla serie 6, ora non più) ma vengono utilizzati gli shader>c'è un impatto ad attivare la tassellazione in quanto tale
In terzo luogo: il tassellatore crea la geometria, questa poi va comunque renderizzata: una cosa è renderizzare una scena con 1'000'000 poligoni, un'altro è renderizzarne una con 3'000'000, l'impatto di FPS c'è ed è notevole, anche con hardware dedicato

Per darti un idea, con l'hardware in firma fra non avere la tassellazione attiva ed averla in extreme ho gli FPS più che dimezzati (e stiamo parlando di un crossfire di 7850 che oltre ad essere piuttosto potente in quanto tale è anche una configurazione che digerisce bene l'uso della tassellazione). Se mi fai uno screenshot posso dirti al volo se c'è la tassellazione attiva o meno, ma ti assicuro che non è supportata in hardware dalla scheda video quindi in caso ci sia l'effetto è perché chi ha programmato l'engine di Heaven si è inventato qualcosa per emulare la funzione (ma dubito seriamente su questa possibilità)comunque prima mi sono sbagliato,la tassellazione non c'era,il calo di fps era dovuto ad un'altra opzione.Tornando al discorso di prima,con quel programma che mi hai linkato è possibile provare ad emulare la tassellazione? giusto per fare una prova,non che mi aspetto di giocare a qualche gioco

Kino87
14-02-2013, 17:39
comunque prima mi sono sbagliato,la tassellazione non c'era,il calo di fps era dovuto ad un'altra opzione.Tornando al discorso di prima,con quel programma che mi hai linkato è possibile provare ad emulare la tassellazione? giusto per fare una prova,non che mi aspetto di giocare a qualche gioco

No, serve solo per l'emulazione di alcune funzioni di shading dx8/9.
Non c'è nulla al momento, che io sappia, in grado di emulare una funzione come la tassellazione, anche perché al dilà dell'onere computazionale della cosa la vedo di difficile implementazione da un elemento esterno all'interno della pipeline grafica.. fa qualche ricerca ma non credo. Comunque fatti il conto che una GTX275 probabilmente ha prestazioni equiparabili a quelle di una GTX650/HD7750 che non sono esattamente fulmini di guerra in ottica di gaming DX11.

Roran
14-02-2013, 20:14
Non è possibile nemmeno emulare la opengl 4?

Kino87
15-02-2013, 10:43
Non credo, forse non ci siamo capiti.. è proprio un'idea irrealizzabile a livello concettuale, anche ammettendo che sia fattibile la modifica della pipeline grafica in modo da inserire/modificare elementi non previsti dall'hardware (cosa su cui ho qualche dubbio sulla fattibilità) quello che vorresti fare sarebbe demandare ad una CPU che ha una potenza "grezza" di un ordine di grandezza inferiore rispetto a quello di una moderna GPU di EMULARE una serie di funzioni tutt'altro che leggere.

Ora... Con dell'hardware moderno abbiamo difficoltà ad emulare il processore di una playstation2, che è essenzialmente un pezzo d'hardware vecchio di 13 anni, cosa ti fa pensare che sia fisicamente possibile emulare, seppur solo in parte, una GPU più avanzata dell'hardware usato per emularla? Se fosse così semplice non avrebbero creato DX11/oGL4 ma avrebbero implementato tali funzionalità in software

Roran
15-02-2013, 14:38
Non credo, forse non ci siamo capiti.. è proprio un'idea irrealizzabile a livello concettuale, anche ammettendo che sia fattibile la modifica della pipeline grafica in modo da inserire/modificare elementi non previsti dall'hardware (cosa su cui ho qualche dubbio sulla fattibilità) quello che vorresti fare sarebbe demandare ad una CPU che ha una potenza "grezza" di un ordine di grandezza inferiore rispetto a quello di una moderna GPU di EMULARE una serie di funzioni tutt'altro che leggere.

Ora... Con dell'hardware moderno abbiamo difficoltà ad emulare il processore di una playstation2, che è essenzialmente un pezzo d'hardware vecchio di 13 anni, cosa ti fa pensare che sia fisicamente possibile emulare, seppur solo in parte, una GPU più avanzata dell'hardware usato per emularla? Se fosse così semplice non avrebbero creato DX11/oGL4 ma avrebbero implementato tali funzionalità in softwareHo capito quello che dici ma nutro dei dubbi su quanto detto alla fine del tuo post,se non implementano tali funzionalità a livello software credo sia più per una questione di vendite,in parte sarà senz'altro così anche se le difficoltà esistono realmente...