2013-01-20 13 views
5

http://http.developer.nvidia.com/Cg/TessellationControlShader.htmlÈ possibile sostituire GLSL con CG?

Ho alcune domande riguardanti CG.

Quale versione di OpenGL supporta CG? Sul loro sito affermano

Requisiti funzionalità di OpenGL

OpenGL 1,0

che sembra un po 'strano per me. Per me questo significa che devo avere almeno OpenGL 1.0 per usare tutte le funzionalità OpenGL in CG. Quindi sono sporche tutte le nuove funzionalità OpenGL?

anche lo shader calcolo sembra mancare

geometry shader, PixelShader, TessellationEvaluationShader, VertexShader, FragmentProgram, GeometryProgram, TessellationControlProgram, TessellationEvaluationProgram, VertexProgram

È CG ora una valida alternativa sostituire GLSL 4.x? Posso scrivere tutti gli shader in CG che potrei scrivere in GLSL 4.3?

risposta

3

Sono abbastanza sicuro che OpenGL-1.0 è un errore di battitura. DirectX-11 riguarda il livello di funzione che si ottiene con OpenGL-4.0. Ora guarda quale tasto è giusto sotto lo sul tastierino numerico.

In effetti nessuna GPU NVidia ha mai supportato solo un profilo OpenGL a partire da OpenGL-1.0. OpenGL-1.0 risale a 20 anni.


è CG ora una valida alternativa per sostituire GLSL 4.x?

Beh, personalmente non vedo un motivo per utilizzare Cg, tranne se si desidera supportare sia OpenGL che DirectX con un set comune di shader. Ma perché vorresti una compatibilità API incrociata? Se si mira alla portabilità, OpenGL vince chiaramente su DirectX.

IMHO la ragione principale per continuare a utilizzare Cg è, se è necessario mantenere un prodotto legacy che utilizza già Cg. Ricorda che Cg è stato introdotto molto prima che OpenGL avesse un linguaggio di shading di alto livello.

Posso scrivere tutti gli shader in CG che potrei scrivere in GLSL 4.3?

Sì.

+0

Sono d'accordo, voglio solo aggiungere che non è irragionevole avere un backend directx per Windows e OpenGL per tutto il resto. Il fatto è che i driver opengl in Windows sono per lo più davvero pessimi .. una cosa che mi ha morso in sviluppo molte volte. – fscan

+0

Grazie datenwolf. Di solito userei il GLSL ma sto iniziando a imparare unity3d (motore di gioco) e usa cg per i loro shader. Perché unity usa directx sotto windows e opengl per tutto il resto. (Currenlty supporta solo opengl2.1). Sono un principiante e voglio concentrarmi su una lingua alla volta, quindi potrei diventare bravo in CG senza dovermi preoccupare di imparare anche il GLSL. (Almeno per ora) –

+1

@fscan: solo i driver Intel GPU per Windows sono di qualità OpenGL subwo IMHO. Sia NVidia che AMD/ATI offrono qualità e prestazioni OpenGL decenti in Windows. Ovviamente è necessario installare i driver ottenuti dal loro sito web. I driver forniti da Microsoft con Windows sono danneggiati. – datenwolf

4

CG ora è un'alternativa valida per sostituire GLSL 4.x? Posso scrivere tutti gli shader in CG che potrei scrivere in GLSL 4.3?

No. Mentre alcune funzioni di OpenGL 4.x, come la tassellatura, sono esposte a partire da Cg 3.1, altre no.

caratteristiche mancanti notevoli in Cg 3.1 (ed i loro nomi OpenGL) includono:

  • shaders calcolo
  • contatori atomiche
  • blocchi di stoccaggio degli shader-scrivibile (blocchi di stoccaggio dello shader)
  • Shader-scrivibile trame (caricamento immagine/negozio)
  • selezione funzione shader di runtime (subroutine shader)

In generale, Cg tende a rimanere in ritardo di due o tre anni rispetto all'ultima versione di OpenGL.

+1

Divertente come sono cambiate le cose. Era (~ 2002) che l'unico modo per accedere alle funzionalità hardware dello shader all'avanguardia sull'hardware NV in OpenGL usando un linguaggio di alto livello era attraverso Cg. A quel tempo GL rimaneva indietro di Cg di 2-3 anni, e questa era la ragione per usare Cg. Sicuramente ha battuto la scrittura degli shaders del linguaggio assembly. –

4

Cg has been end-of-lifed by NVidia so it will not be developed going forward:

Il Toolkit Cg è un retaggio di NVIDIA non è più toolkit in fase di sviluppo o di sostegno attivo. Cg 3.1 è la nostra ultima versione e mentre continuiamo a renderlo disponibile agli sviluppatori, non è consigliabile utilizzarlo in nuovi progetti di sviluppo perché le future funzionalità hardware potrebbero non essere supportate.

Quindi credo che la risposta migliore sarebbe No.