Cg (lenguaje de programación)


Cg (abreviatura de C para gráficos ) y High-Level Shader Language (HLSL) son dos nombres dados a un lenguaje de sombreado de alto nivel desarrollado por Nvidia y Microsoft para programar sombreadores . Cg/HLSL se basa en el lenguaje de programación C y, aunque comparten la misma sintaxis central, se modificaron algunas características de C y se agregaron nuevos tipos de datos para hacer que Cg/HLSL sea más adecuado para programar unidades de procesamiento de gráficos . [1] [2]

Existen dos ramas principales del lenguaje Cg/HLSL: el compilador Nvidia Cg (cgc) que genera DirectX u OpenGL y Microsoft HLSL que genera sombreadores de DirectX en formato de código de bytes. [3] [4] El cgc de Nvidia quedó obsoleto en 2012, sin desarrollo ni soporte adicional disponible. [5]

Los sombreadores HLSL pueden habilitar muchos efectos especiales en gráficos de computadora 2D y 3D . El lenguaje Cg/HLSL originalmente solo incluía soporte para sombreadores de vértices y sombreadores de píxeles , pero también se introdujeron gradualmente otros tipos de sombreadores:

Debido a los avances técnicos en el hardware de gráficos, algunas áreas de la programación de gráficos 3D se han vuelto bastante complejas. Para simplificar el proceso, se agregaron nuevas funciones a las tarjetas gráficas, incluida la capacidad de modificar sus canalizaciones de renderizado utilizando sombreadores de vértices y píxeles.

Al principio, los sombreadores de vértices y píxeles se programaban a un nivel muy bajo con solo el lenguaje ensamblador de la unidad de procesamiento de gráficos. Aunque el uso del lenguaje ensamblador le dio al programador un control completo sobre el código y la flexibilidad, fue bastante difícil de usar. Se necesitaba un lenguaje portátil de nivel superior para programar la GPU, por lo que se creó Cg para superar estos problemas y facilitar el desarrollo de shaders.

Cg tiene seis tipos de datos básicos. Algunos de ellos son los mismos que en C, mientras que otros se agregan especialmente para la programación de GPU. Estos tipos son: