CG é uma linguagem de shading que foi inventada pela NVidia em colaboração com a Microsoft e, surgiu para ser mais uma linguagem de alto nível para substituir o Assembly na codifcação de shadrers. Apesar dessa ligação com a NVidia a linguagem é suportada em diversas placas gráficas de diversos fabricantes.
Uma das principais vantagens de se usar CG é que ela pode ser usada em conjunto com as duas principais APIs de renderização existentes: OpenGL e DirectX
Exemplos de código
struct C2E1v_Output{ float4 position : POSITION; float3 color : COLOR; }; C2E1v_Output C2E1v_green( float2 position : POSITION ){ C2E1v_Output OUT; OUT.position = float4( position, 0, 1 ); OUT.color = float3( 0, 1, 0 ); return OUT; }
Exemplo simple de vertex shader, extraído do capítulo 1 do livro CG Tutorial. Disponível no CG Toolkit.
tipos de dados
números de ponto plutuante (precisão única) escalares e vetoriais: float, float2, float3 e float4
números inteiros escalares e vetoriais: int, int2, int3 e int4
booleanos escalares e vetoriais: bool, bool2, bool3 e bool4
Também é possível declarar matrizes destes mesmos tipos na forma:
tipoMxN,
onde tipo é o tipo de dados (float, bool e int) M e N são as dimensões (de 1 a 4).
exemplos:
float3x2, int1x4, bool3x3