|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#21 | |
|
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
Quote:
Tornando al discorso OpenGL, non ho ancora capito se questo linguaggio ad alto livello che sara' introdotto e' sintatticamente compatibile con HLSL o meno, se non lo fosse, allora sarebbe il momento di lanciare queste tue critiche sull'allontanamento dallo standard verso chi sta standardizzando OpenGL: sarebbero azzeccatissime. x Massimo, si', e' vero quello che dici, il 3DMark usa i pixel shader a 32 bit sull'NV30 quindi i risultati non sono assolutamente paragonabili. Un altro motivo per reputare i benchmark perfettamente inutili e poco indicativi. Ciao
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
|
|
|
|
|
|
#22 | |
|
Senior Member
Iscritto dal: Jul 2000
Messaggi: 1189
|
Quote:
HLSL è un linguaggio di programmazione Microsoft per GPU in DirectX9 che supporta la costruzione degli shaders con una sintassi simile al C. HLSL è stato sviluppato come l'OpenGl 1.5 di cui tratta questo articolo per lo sviluppo degli shaders in real time su moderne GPU. HLSL è limitato solo alle piattaforme Microsoft, OpenGl è open platform. Il cg di nvidia NON E' come dici tu un compilatore che riceve in input codice HLSL. Il compilatore cg riceve in input un sorgente che deve essere scritto con una sintassi ad alto livello per gli shader sviluppata da NVIDIA. In pratica io sviluppatore devo scrivere codice con una sintassi proprietaria nvidia passarlo ad un compilatore di alto livello per trasformarlo in codice compatibile OpenGL 1.4 (o superiore) oppure DirectX8.0 (o superiore) Scusa tanto ma io il mio codice me lo scrivo direttamente senza passare da questo "compilatore per il compilatore" che mi genera, e qui stà l'arroganza di nvidia, un sorgente che dovrei far girare su tutte le schede, anche quelle ATI, con ovvie perdite di performance. all'età di 11 scrissi un Assemblatore in Basic su uno ZX spectrum che mi portò mio padre dall'Inghilterra, in Italia non era ancora uscito. Ero un bambino ma mi resi conto già allora (più di 20 anni fa) dei limiti dei linguaggi ad alto livello, limiti che evidentemente tu non riesci a capire. |
|
|
|
|
|
|
#23 | |||
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Quote:
Quote:
Quote:
1) Il "compilatore" delle DirectX 9 e il Cg debbono comunque accedere in qualche modo alle informazioni sull'architettura, per cui dovrebbe essere possibile anche per un programmatore 2) Gli shader in genere sono degli algoritmi abbastanza semplici da implementare, per cui un programmatore abbastanza esperto non dovrebbe avere difficoltà nello scrivere codice per la GPU target, per quanto possa sembrare complicata la sua architettura. 3) Più è lungo il codice degli shader, più tempo sarà necessario per la sua esecuzione (ovvio), per cui è sempre meglio limitarne la dimensione (altrimenti si finisce come con Tomb Raider 4
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|||
|
|
|
|
|
#24 | |
|
Senior Member
Iscritto dal: May 2002
Messaggi: 830
|
Quote:
...ma non mi piace quando il discorso diventa: "io so fare questo e quest'altro ho fatto questo e quest'altro ed allora la mia opinione conta di più..." perchè di opinioni si tratta... se a te da fastidio che nVidia abbia fatto il Cg è una tua rispettabile opinione come quella di un'altro... ovviamente se sei una persona coerente se ti irrita che nVidia possa fare il Cg similmente ti irrita che faccia dei driver appositi per le sue schede grafiche... è arrogante anche li vero? o forse non sei coerente? ...e vi ricordo che il Cg è stato il primo tra i 'linguaggi ad alto livello' dedicati agli shaders ad essere uscito e nessuno obbliga nessuno ad utilizzarlo.... ricordando anche che gli shader introdotti dalle DX8 in poi (NV20) sono 'brevetto' nVidia... non vedo la sua arroganza nel fornire uno strumento opzionale a disposizione di chi lo desidera... NB: vorrei anche ricordarvi che il Cg è utilizzato anche per programmare l'Xbox compilando il codice in modo da sfruttare/avvalersi della sua architettura.
__________________
![]() |
|
|
|
|
|
|
#25 | |
|
Senior Member
Iscritto dal: May 2002
Messaggi: 830
|
Quote:
non è che un programmatore non può accedervi... anche se certe spec. potrebbero essere celate... in generale però in questo modo (con il compilatore) cambiando chip o anche tramite driver dando nuove spec/ottimizzazioni su uno stesso chip ricompilare senza modifiche il codice porta a dei benefici poichè il compilatore si assume la responsabilità di ottimizzare andando ad esempio a sfruttare nuovi registri ecc... altrimenti un programmatore se vuole fare queste ottimizzazioni deve modificare il codice.
__________________
![]() |
|
|
|
|
|
|
#26 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
E' lo stesso discorso delle SSE2 sui P4... Il compilatore Intel genera quasi sempre codice migliore di quello programmato direttamente in assembler perchè "conosce" la sequenza migliore di istruzioni per avere il minor numero di wait state...
Non so se avete visto il codice SSE2 generato dal compialtore Intel... E' di una complessità assurda eppure è comunque più veloce di quello scritto a mano proprio perchè può sfruttare tutte le possibilità di ottimizzazione... |
|
|
|
|
|
#27 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Se poi ATi rende bene anche su codice non ottimizzato per ATi (come è stato detto precedentemente), mentre nVidia rende al massimo su codice generato da Cg...allora perchè non sfruttare Cg per generare codice che funzioni bene su entrambe le architetture ?
In fondo a chi scrive il codice dovrebbe interessare solamente che si ottenga un prodotto che funzioni bene su qualsiasi scheda video ed ottenerlo nel minor tempo possibile...e Cg mi sembra che faccia questo |
|
|
|
|
|
#28 | ||||
|
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
Quote:
Il compilatore Cg e' in grado di compilare codice HLSL ed accetta anche una sintassi estesa dettata da nvidia. E' come un compilatore C++ che compila codice scritto in C++ ma accetta eventualmente estensioni al linguaggio dettata dal produttore (i primi esempi che mi vengono in mente sono il VC.net di Microsoft e il CodeWarrior di Metrowerks). Non per questo si dice che Microsoft e Metrowerks stiano producendo compilatori per i loro linguaggi Quote:
Quote:
Qui c'e' una considerazione interessante da fare: il compilatore Cg e' open source, sono disponibili i sorgenti, quindi qualunque produttore puo' in teoria estenderlo per produrre codice specifico per la propria piattaforma. ATI ha preferito non percorrere questa strada ed uniformarsi al compilatore standard Microsoft. Una scelta che personalmente condivido. Per riassumere, lo sviluppatore scrive il suo shader in HLSL e puo' compilarlo con il compilatore fornito con le DX9. Se vuole spremere qualche ciclo in meno alle piattaforme nvidia, puo' compilare lo stesso codice non modificato con il compilatore Cg fornito con il toolkit nvidia. Se vuole spremere ancora qualcosina puo' usare le estensioni al linguaggio nvidia che gli permettono di avere piu' controllo sulla dimensione delle variabile (16 o 32 bit). Quote:
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
||||
|
|
|
|
|
#29 | ||
|
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
Quote:
Il programmatore e' teoricamente in grado di accedere alle informazioni sull'architettura di una GPU esattamente come il compilatore. Come hai scritto giustamente tu in seguito, entrambi lavorano sullo stesso hardware e software. Ma c'e' un problema: queste informazioni non sono pubblicate dagli hardware vendor (nvidia o ati), sono coperte da copyright e interne, per ragioni ovvie. Anche se teoricamente posso scrivere lo stesso codice di un compilatore e, spendendoci molto tempo, codice anche migliore, in pratica io non conoscero' mai quei dettagli sull'architettura e di fatto non saro' mai in grado di scrivere quel codice. Chi scrive il compilatore, in realta' per precisione dovrei dire chi scrive la porzione di codice che emette le istruzioni assembly, e' un dipendente nvidia o ati quindi ha accesso a quelle informazioni e puo' usarle, anzi, le usa Quote:
2) si', gli algoritmi non sono particolarmente complicati, ma la loro scrittura in assembly spesso diventa piuttosto rognosa, soprattutto la gestione dei registri temporanei che come ho scritto prima non e' un'operazione che il cervello umano gestisce comodamente. Paradossalmente e' piu' facile per un compilatore ottimizzare un algoritmo semplice (ma direi meglio specifico) di uno complicato perche' su un algoritmo semplice ha bisogno di fare meno "speculazioni" e gli e' piu' facile avvicinarsi al pensiero del programmatore. Il modello di programmazione degli shader e' piuttosto semplice e specifico (non e' un linguaggio generico), quindi il compilatore gioca in casa 3) verissimo... e ti assicuro che e' molto piu' veloce e comodo scriverlo in HLSL C'e' una cosa interessante da dire sul discorso assembly contro hlsl: scrivo il mio shader in assembly, funziona, e' stra ottimizzato, sono felicissimo, dopo un mese devo modificarlo leggermente perche' ho bisogno di qualcosa di leggermente diverso, guardo il codice in assembly e penso: "che e' sta roba qui?"
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
||
|
|
|
|
|
#30 |
|
Senior Member
Iscritto dal: Jul 2000
Messaggi: 1189
|
Allora fek è meglio che metti le cose in chiaro per non confondere (volutamente?) le cose.
Correggimi se sbaglio ..... Ultima modifica di pg08x : 04-08-2003 alle 20:01. |
|
|
|
|
|
#31 |
|
Senior Member
Iscritto dal: Jul 2000
Messaggi: 1189
|
E' vero o no che cg è un "layer", uno strato al di sopra di directX (se uno vuole usare DirectX) o di OpenGl (se uno vuole usare OpenGl) ?
Vuoi forse negare che non rimpiazza affatto DirectX oppure OpenGl ma anzi l'output del compilatore contiene di queste chiamate ? Anche quello di decidere se usare 16 o 32 bit non è forse vero che lo standard directx9 prevede 24bit di precisione e che usando 16 bit avresti una perdita qualitativa (a 16 bit uno shader dovrebbe non essere directX9 compliant ? e che se cg me lo lascia fare, e solo su piattaforma nvidia, è una truffa bella e buona ?) Non è forse vero che del codice cg ha performance PEGGIORI su schede ati di un codice che fa le stesse cose scritto dallo stesso programmatore impiegando lo stesso tempo senza utilizzare cg ? Non è forse vero che anche se hlsl compatibile cg ti spinge a programmare in cg ? Ultima modifica di pg08x : 04-08-2003 alle 19:55. |
|
|
|
|
|
#32 |
|
Senior Member
Iscritto dal: Jul 2000
Messaggi: 1189
|
E' ben diverso dal discorso delle SSE2 di Intel.
In quel caso il codice assembler generato ha una corrispondenza diretta con il set di istruzioni SSE2 di Intel (codice macchina dei p4). Mentre quello che compili per sfruttare le SSE2 lo fai girare solo su piattaforme Intel la presunzione di nvidia è quella che l'output del compilatore cg ti dicono di farlo girare su qualsiasi gpu directX 8 oppure opengl 1.4 compatibile portando solo svantaggi sui prodotti della concorrenza !!! Ultima modifica di pg08x : 05-08-2003 alle 20:44. |
|
|
|
|
|
#33 |
|
Senior Member
Iscritto dal: Jul 2000
Messaggi: 1189
|
In pratica l'output di CG su schede ati non porta benefici, anzi peggiora le performance, mentre su schede nvidia contiene del codice specifico per quelle gpu, codice che può essere utilizzato ad esempio per avere la precisione a 16 bit (contro lo standard che è 24) ed ottenere quindi performance migliori.
Ultima modifica di pg08x : 05-08-2003 alle 20:44. |
|
|
|
|
|
#34 | |
|
Senior Member
Iscritto dal: Jul 2000
Messaggi: 1189
|
Quote:
Mentre tu parli del 'primo tra i linguaggi ad alto livello dedicati agli shaders', dall'altra parte fek si ostina a sostenere che questo cg è ne più ne meno di un compilatore per il linguaggio HLSL (linguaggio di Intel, standard per la programmazione degli shaders in directx). Morale della storia e sei libero di credermi oppure no, nvidia esercita una grossa influenza "commerciale" cui chi sviluppa software per il 3d non può sottrarsi per non rischiare ad esempio di fare la fine dei programmatori di madonion che si sono presi delle botte di incompetenti da quelli di nvidia solo perchè in madonion volevano un bench imparziale. Nvidia ha bisogno di codice fortemente ottimizzato per stare al passo con ATI e dato che ci sono un gran numero di schede nvidia nelle case dei gamers questo fatto non può essere ingorato. Ultima modifica di pg08x : 04-08-2003 alle 19:40. |
|
|
|
|
|
|
#35 | |
|
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
Quote:
Lo standard DX9 prevede i 24 bit, l'architettura dell'NV30 e' in grado di gestire i pixel shader a 16 o 32 bit (quindi e' perfettamente in linea con lo standard): il programmatore puo' scegliere la soluzione che preferisce per raggiungere il desiderato bilanciamento fra velocita' d'esecuzione e qualita' visiva. Non ci vedo alcuna truffa. Il compilatore Cg produce codice ottimizzato per piattaforme nvidia; anche questo mi sembra perfettamente naturale come e' naturale che ATI scelga di non volere implementare il backend che produrrebbe codice ottimizzato per il suo hardware, nonostante ne abbia la possibilita' (il compilatore Cg e' fornito con i sorgenti ed e' di pubblico dominio). Ovviamente usare le estensioni proprietarie porta dei benefici altrimenti non esisterebbero.
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
|
|
|
|
|
|
#36 | ||
|
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
Quote:
Quote:
No alla prima e No alla seconda. L'output del compilatore e' lo shader in codice assembly, visto che e' un compilatore e come tutti i compilatori traduce da un linguaggio ad alto livello ad uno a basso livello Credo tu ti stia probabilmente confondendo fra il compilatore Cg (che e' una cosa) e la libreria runtime che viene fornita assieme al compilatore (che e' tutta un'altra cosa).
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
||
|
|
|
|
|
#37 | |
|
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
Quote:
Non capisco il motivo di tanto astio.
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
|
|
|
|
|
|
#38 |
|
Senior Member
Iscritto dal: Jul 2000
Messaggi: 1189
|
fek dici che cg non opera come un layer sopra OpenGl
Does Cg replace OpenGL?
No, Cg operates as a layer above OpenGL. Cg Compilers output assembly code in the formats defined by OpenGL extensions such as ARB_vertex_program, ARB_fragment_program and NV_vertex_program, and in the format defined by OpenGL 1.4. Fonte nvidia Ultima modifica di pg08x : 05-08-2003 alle 09:26. |
|
|
|
|
|
#39 |
|
Senior Member
Iscritto dal: Jul 2000
Messaggi: 1189
|
fek dici che cg non opera come un layer sopra DirectX
Does Cg replace DirectX?
No, this language operates as a layer above the DirectX vertex and pixel shader APIs, and creates the shader code necessary to run standard vertex and pixel shaders for DirectX 8.0 and DirectX 9.0. Fonte nvidia Ultima modifica di pg08x : 05-08-2003 alle 09:27. |
|
|
|
|
|
#40 | |
|
Senior Member
Iscritto dal: Jul 2000
Messaggi: 1189
|
Quote:
Le specifiche del cg per quanto riguarda l'implementazione degli shaders sono compatibili HLSL ma da questo a dire che il cg è solo un compilatore HLSL mi sembra un po RIDUTTIVO e sarebbe il male minore. Non si tratta affatto di astio ma per favore smettila di prenderci in giro facendo disinformazione. Ultima modifica di pg08x : 04-08-2003 alle 22:26. |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 13:54.




















