fbpx
Wikipedia

Cg (lenguaje de programación)

Cg o C for Graphics es un lenguaje de alto nivel desarrollado por 0l en colaboración con Microsoft[1][2]​ para la programación de vertex y pixel shaders. Es similar al lenguaje de Microsoft HLSL.

El lenguaje está basado en lenguaje de programación C y comparte varias de sus características aunque existen diferencias notables y elementos añadidos para adaptarlos a cuestiones concretas y especiales de la programación de las GPU (Graphics Processing Unit o Unidad de Procesamiento de Gráfico).

Este lenguaje fue diseñado específicamente para las acelaradoras y es de gráficas, no es de ser utilizado como lenguaje propósito general. Por el contrario, el lenguaje : (también orientado a programación de GPU) sí puede ser utilizado para aplicaciones de propósito general.

Descripción general

En un primer momento, las aceleradoras se programaban en bajo nivel, utilizando directamente el repertorio de instrucciones de los procesadores de GPU y é . Cg surge como alternativa para facilitar la labor al programador.

El lenguaje suele consistir de dos tipos de programas completamente diferentes que interactúan entre sí. El primero es un programa de manipulación de vértices (modificar el modelo tridimensional) directamente desde la aceleradora, sin gastar recursos de la CPU principal. Por otra parte, la función del segundo tipo de programa es especificar el color de cada píxel en función de múltiples factores.

Algunas de las ventajas de usar Cg son:

  • Un lenguaje de alto nivel es más fácil de programar, aprender, leer y mantener
  • Es fácil para depurar errores.
  • Puede funcionar en un amplio rango de hardware y plataformas (Es menos dependiente del hardware concreto y sus versiones que el lenguaje assembler)
  • El compilador de Cg puede optimizar el código en función de la versión de hardware concreta y otras características disponibles en el momento de ejecutar el programa.

Detalle

Perfiles

En el lenguaje utiliza la noción de perfiles (Cg Profiles) para facilitar la portabilidad. Cada uno de ellos establece capacidades mínimas y requisitos. De esta forma, un programador puede desarrollar un programa (o varias versiones) con la seguridad de que se ejecutará correctamente en aquellos sistemas que acepten ese perfil.

El establecimiento de los perfiles es una forma de asegurar la compatibilidad sin tener que implementar estrategias más complejas como la Compatibilidad hacia atrás.

Los Tipos de datos, operadores, funciones, estructuras, entre otros varían de acuerdo al perfil que se en el que se trabaje.

Tipos de datos

C for Graphics tiene seis tipos básicos de datos, algunos específicos para la programación de las GPU:

  • float - número de 32bit en coma flotante
  • half - número de 16bit en coma flotante
  • int - número de 32bit entero
  • fixed - número de 12bit en coma fija
  • bool - valor booleano
  • sampler* - un objeto de textura

También existen algunos tipos compuestos como vectores de 3 floats y matrices como 4x4 float.

Operadores

Cg soporta un conjunto limitado de operadores comparado con C/C++ sin embargo extiende algunos de ellos para realizar operaciones entre vectores.

Funciones

Cg admite crear funciones de manera similar que en C.

Control de flujo

Se admiten estructuras de control como bucles y control de flujo. En muchos casos, es condición necesaria que los ciclos sean desenrollables (para esto se debe conocer de antemano el número de veces que se ejecutará). Por otra parte, se pide que las secuencias de control estén limitadas en cuanto a niveles de anidamiento o bien que el predicado esté formado por variables globales a todo el programa (es decir dentro del programa se sepa ya si el predicado es cierto o falso).

La biblioteca estándar Cg

Esta biblioteca contiene muchas funciones útiles para la manipulación de números en coma flotante, vectores, matrices y texturas de tal forma que operaciones relativamente complejas (desde el punto de vista de un procesador) como el cálculo de la iluminación de un punto se resuelven con sólo unas pocas operaciones.

La biblioteca Cg de ejecución

Cg tiene un amplio repertorio de funciones para interactuar con el sistema Cg dentro de la biblioteca gráfica que se esté utilizando, esta sea DirectX u OpenGL.

Un ejemplo de Cg vertex shader

 // input vertex struct VertIn { float4 pos : POSITION; float4 color : COLOR0; }; // output vertex struct VertOut { float4 pos : POSITION; float4 color : COLOR0; }; // vertex shader main entry VertOut main(VertIn IN, uniform float4x4 modelViewProj) { VertOut OUT; OUT.pos = mul(modelViewProj, IN.pos); // calculate output coords OUT.color = IN.color; // copy input color to output OUT.color.z = 1.0f; // blue component of color = 1.0f return OUT; } 

Aplicaciones y juegos que usan Cg

Otras lecturas

  • Detallada introducción al Cg-Toolkit de NVidia (en Castellano)

Véase también

Enlaces externos

  • Cg Tutorial (Free Book)
  • Cg FAQ
  • Cg home page
  • OpenGL home page el 26 de febrero de 2011 en Wayback Machine.

Referencias

  •   Datos: Q1024657

lenguaje, programación, graphics, lenguaje, alto, nivel, desarrollado, colaboración, microsoft, para, programación, vertex, pixel, shaders, similar, lenguaje, microsoft, hlsl, lenguaje, está, basado, lenguaje, programación, comparte, varias, características, a. Cg o C for Graphics es un lenguaje de alto nivel desarrollado por 0l en colaboracion con Microsoft 1 2 para la programacion de vertex y pixel shaders Es similar al lenguaje de Microsoft HLSL El lenguaje esta basado en lenguaje de programacion C y comparte varias de sus caracteristicas aunque existen diferencias notables y elementos anadidos para adaptarlos a cuestiones concretas y especiales de la programacion de las GPU Graphics Processing Unit o Unidad de Procesamiento de Grafico Este lenguaje fue disenado especificamente para las acelaradoras y es de graficas no es de ser utilizado como lenguaje proposito general Por el contrario el lenguaje tambien orientado a programacion de GPU si puede ser utilizado para aplicaciones de proposito general Indice 1 Descripcion general 2 Detalle 2 1 Perfiles 2 2 Tipos de datos 2 3 Operadores 2 4 Funciones 2 5 Control de flujo 2 6 La biblioteca estandar Cg 2 7 La biblioteca Cg de ejecucion 2 8 Un ejemplo de Cg vertex shader 3 Aplicaciones y juegos que usan Cg 4 Otras lecturas 5 Vease tambien 6 Enlaces externos 7 ReferenciasDescripcion general EditarEn un primer momento las aceleradoras se programaban en bajo nivel utilizando directamente el repertorio de instrucciones de los procesadores de GPU y e Cg surge como alternativa para facilitar la labor al programador El lenguaje suele consistir de dos tipos de programas completamente diferentes que interactuan entre si El primero es un programa de manipulacion de vertices modificar el modelo tridimensional directamente desde la aceleradora sin gastar recursos de la CPU principal Por otra parte la funcion del segundo tipo de programa es especificar el color de cada pixel en funcion de multiples factores Algunas de las ventajas de usar Cg son Un lenguaje de alto nivel es mas facil de programar aprender leer y mantener Es facil para depurar errores Puede funcionar en un amplio rango de hardware y plataformas Es menos dependiente del hardware concreto y sus versiones que el lenguaje assembler El compilador de Cg puede optimizar el codigo en funcion de la version de hardware concreta y otras caracteristicas disponibles en el momento de ejecutar el programa Detalle EditarPerfiles Editar En el lenguaje utiliza la nocion de perfiles Cg Profiles para facilitar la portabilidad Cada uno de ellos establece capacidades minimas y requisitos De esta forma un programador puede desarrollar un programa o varias versiones con la seguridad de que se ejecutara correctamente en aquellos sistemas que acepten ese perfil El establecimiento de los perfiles es una forma de asegurar la compatibilidad sin tener que implementar estrategias mas complejas como la Compatibilidad hacia atras Los Tipos de datos operadores funciones estructuras entre otros varian de acuerdo al perfil que se en el que se trabaje Tipos de datos Editar C for Graphics tiene seis tipos basicos de datos algunos especificos para la programacion de las GPU float numero de 32bit en coma flotante half numero de 16bit en coma flotante int numero de 32bit entero fixed numero de 12bit en coma fija bool valor booleano sampler un objeto de texturaTambien existen algunos tipos compuestos como vectores de 3 floats y matrices como 4x4 float Operadores Editar Cg soporta un conjunto limitado de operadores comparado con C C sin embargo extiende algunos de ellos para realizar operaciones entre vectores Funciones Editar Cg admite crear funciones de manera similar que en C Control de flujo Editar Se admiten estructuras de control como bucles y control de flujo En muchos casos es condicion necesaria que los ciclos sean desenrollables para esto se debe conocer de antemano el numero de veces que se ejecutara Por otra parte se pide que las secuencias de control esten limitadas en cuanto a niveles de anidamiento o bien que el predicado este formado por variables globales a todo el programa es decir dentro del programa se sepa ya si el predicado es cierto o falso La biblioteca estandar Cg Editar Esta biblioteca contiene muchas funciones utiles para la manipulacion de numeros en coma flotante vectores matrices y texturas de tal forma que operaciones relativamente complejas desde el punto de vista de un procesador como el calculo de la iluminacion de un punto se resuelven con solo unas pocas operaciones La biblioteca Cg de ejecucion Editar Cg tiene un amplio repertorio de funciones para interactuar con el sistema Cg dentro de la biblioteca grafica que se este utilizando esta sea DirectX u OpenGL Un ejemplo de Cg vertex shader Editar input vertex struct VertIn float4 pos POSITION float4 color COLOR0 output vertex struct VertOut float4 pos POSITION float4 color COLOR0 vertex shader main entry VertOut main VertIn IN uniform float4x4 modelViewProj VertOut OUT OUT pos mul modelViewProj IN pos calculate output coords OUT color IN color copy input color to output OUT color z 1 0f blue component of color 1 0f return OUT Aplicaciones y juegos que usan Cg EditarCrystal Space Far Cry OGRE Panda3d Unity game engine Virtools Dev Enemy Territory Quake Wars Earths Special Forces A Half Life ModOtras lecturas EditarDetallada introduccion al Cg Toolkit de NVidia en Castellano Vease tambien EditarProgramacion Computacion grafica Vertex and pixel shaders High level shader language OpenGL shading language Shader Model OpenGL DirectXEnlaces externos EditarCg Tutorial Free Book Cg FAQ Cg home page OpenGL home page Archivado el 26 de febrero de 2011 en Wayback Machine DirectX home page ShaderTech GPU Programming NeHe Cg vertex shader tutorialReferencias Editar Cg and HLSL FAQ https web archive org web 20070825020416 http www creativepro com story news 18489 html Datos Q1024657Obtenido de https es wikipedia org w index php title Cg lenguaje de programacion amp oldid 133912788, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos