Bueno pues despues de mis minivaciones (en la facultad) veo que aqui no se ha parado:o
Por partes. ¿Por que hay que utilizar el nuevo lenguaje creado por nVidia?. ¿Sabes lo que es el rendermonkey?.
El Cg como cualquier otro lenguaje no tiene porque ejecutarse o no en un hardware, esto va a depender del compilador. Partiendo de esta base el Cg se puede usar sobre Atis sin embargo no se va a usar, la respuesta la podeis encontrar en la forma de programar en OpenGL por ejemplo. Basicamente la forma que cada hardware implementa una misma caracteristica es distinta para cada uno y mientras en los chips de nVidia estaria optimizado en los de Ati no.
Cg no es ninguna novedad, de hecho C for graphics es una abstraccion del lenguaje c y la api OpenGL. Lo que hace Cg es lo que hicieron los de Id con el primer Quake que se programo en un lenguaje propio consistente en una sintaxis reducida de C, como veis la idea no es nueva. Cg elimina parte de la sintaxis de C para solo usar los que pueden ser utiles a la hora de programar chip graficos y se le ha añadido una serie de instrucciones que "hablan" directamente con el hardware tipo movel triangulo.
Todas las GPU con Vertex y Pixel Shaders son programables y desde el Dx8 estas funciones estan implementadas en estas librerias.
El Cg como lenguaje de programacion (C para ser exactos) es compatible con cualquier api 3D actual puesto que solo es C y por lo tanto solo necesita las correspondientes bibliotecas.
Ahora volvemos a las preguntas iniciales, ¿por que usarlo?. Este lenguaje responde a la necesidad de utilizar un lenguaje de alto nivel para programar los shaders puesto que antes habia que acceder directamente al hardware. Sin embargo que los de nVidia no quieran descubrir otra vez la rueda, esta fucnion ya la cumplia bastante antes OpenGL 2.0 desarrollado por 3DLabs para programar sus chips y que es un estandar abierto y mas tarde por DirectX que es compatible con todos los chips graficos. ¿Entonces porque iba un programador a desarrollar 2 o mas versiones de un mismo juego para usar Cg?.
Rendermonkey es la respuesta de Ati al problema de la programacion de los shaders anque en realidad va mucho mas alla al ofrecer un entorno de programacion especialmente optimizado para programar chips radeon pero que puede funcionar con cualquier otro.
Como veis esto no es mas que marketing otra vez donde nVidia nos trata de vender la rueda cuando ya estaba inventada como lo mejor para programar y realmente no es asi.
Por cierto que las compañias que lo usan son muchisimas menos de las que nVidia dice, es mas, normalmente lo van a usar las fabricantes de software 3D y poco mas, mas que nada debido a que mediante un plugin programado en este lenguaje se puede optimizar su producto para una tarjeta especifica mas facil que antes.