Lista Artículos Lista Editoriales Enlaces Juegos en Línea Noticias Tienda J por Amazon(com)
J de Juegos.com
PC
AYUDA   |   BUSCAR x CLAVE   |   
Buscar con GOOGLE >>>
 
Escríbenos! Galardones. Juegos Recientes.
Preguntas Frecuentes - Galerías - Códigos - Descargas - Enlaces - TOP 10
| ACCIÓN | | AVENTURA | | CARRERAS | | DEPORTES | | ESTRATEGIA | | JUEGOS DE ROL | | SIMULADORES |
El Cg de NVIDIA, un Nuevo Lenguaje de Programación
x Webmaster
 
Con la pompa exagerada de siempre NVIDIA --la mayor productora de tarjetas de aceleración gráfica del momento (la serie GeForce)-- anunció, el pasado 13 de Junio, su nuevo lenguaje de programación de alto nivel, el Cg, o 'C para Gráficos' (C for Graphics). Según la nota de prensa este lenguaje revolucionaría la industría del software que tenga algo que ver con la presentación o manipulación de gráficos, sea directa o indirectamente. En principio a los que más les incumbe esto es a los productores de juegos y a los encargados de desarrollar software de asistencia para dibujo mecánico, técnico, animación, edición de vídeo, etcétera.

El nuevo lenguaje cuenta con una cercana colaboración por parte de personal de Microsoft. Tal y como lo ponen en la nota: "el Cg presenta a los desarrolladores --de software-- con un nuevo nivel de abstracción, removiéndolos de la necesidad de programar directamente en el hardware gráfico. La común y familiar sintáxis tipo lenguaje C permite el rápido desarrollo de alucinantes sombreados en tiempo real y efectos visuales para plataformas gráficas, además es compatible con el recientemente anunciado Lenguaje de Sombreado de Alto Nivel presente en el DirectX 9.0" (traducción semi-literal de un fragmento de la nota oficial).

En breve, la idea es la siguiente. El lenguaje de programación C, por ejemplo, permite desarrollar software general de forma mucho más rápida y eficiente que si tuvieramos que realizar todo en assembler (lenguaje ensamblador), el lenguaje más básico humanamente entendible de aquel utilizado por una computadora o, en general, por un CPU. Pues bien, Cg viene a ser la versión para procesadores gráficos (los GPU de las tarjetas aceleradoras) de esta idea.

Analicemos un poco el asunto. Un computador trabaja con instrucciones escritas en código binario (ceros y unos) cada CPU tiene una serie de instrucciones básicas codificadas en hardware, es decir, en/con los transistores que conforman su estructura. Todavía continua el debate sobre si es mejor tener más instrucciones o menos codificadas en el hardware, la eterna batalla entre las arquitecturas RISC (menos instrucciones) y CISC (más instrucciones). Para el ser humano escribir las instrucciones en ceros y unos sería prácticamente imposible, por ello existe el lenguaje ensamblador que representa las ordenes entendidas por un CPU a través de términos cortos más comprensibles para un ser humano. Por ejemplo: MOV, ADD, PUSH, POP. Cada instrucción suele tener un par de atributos de salida y entrada que utilizan los registros del CPU (pequeñas memorias de acceso rápido), no voy a entrar en mayores detalles porque el artículo no trata de esto. El caso es que para, por ejemplo, sumar dos números hay que escribir una serie de líneas de código que incluyen un montón de factores a tomar en cuenta, no es algo tan simple como poner a=b+c. Aquí es donde entran en acción los lenguajes de programación de mediano y alto nivel.

Lenguajes de programación de alto nivel son el Delphi, Visual Basic o el C++. De nivel intermedio lo es el C, o mejor el ANSI C. La diferencia entre uno y otro es un pequeño detalle técnico sobre que tan amigables con el programador son, versus con el CPU. Un lenguaje como el Delphi es muy sencillo para quien lo use, pero existe sobrecarga en las instrucciones al momento de compilar el programa (compilar es convertir las instrucciones humanamente entendibles en código binario con las instrucciones del CPU). El C, al ser de nivel intermedio, es menos sencillo para el usuario pero más eficiente en su compilación, es decir, su código binario (o assembler) es más rápido. Por otro lado lenguajes de alto nivel suelen tener restricciones de plataforma (por uno u otro motivo), es decir, ciertas características en sus instrucciones utilizan capacidades no presentes en todos los tipos de CPU (no olvidemos que a pesar de todo INTEL no es el único productor de chips para PC), por ello se dice que el código resultante no es 100% transportable. La ductilidad del C, y en  particular del ANSI C, le hacen el lenguaje de programación general más transportable del mercado actual --siempre y cuando tengamos el compilador apropiado para la plataforma respectiva.

Con lenguajes de mediano y alto nivel ya es posible escribir a=b+c, el conjunto de instrucciones subyacente en assembler ya no es de nuestro interés, el código se escribe con mucha mayor claridad, optimización y velocidad. Quienes hayan programado alguna vez en assembler entenderán muy bien a que me refiero. Pues bien, NVIDIA con su Cg piensa promover este tipo de evolución para los procesadores gráficos de sus tarjetas en particular y de las de cualquiera en general. En teoría basta encontrar un compilador compatible con los GPU de otras compañías para crear los mismos efectos o unos equivalentes.

Para los que estén dudando, el DirectX es un API --un conjunto de instrucciones predefinidas que devuelven valores o resultados preestablecidos. Su mayor característica es ser independiente de la plataforma, es decir, sin importar que tarjeta o equipo tengo el API hace lo mejor que puede para presentar lo mismo. Sin embargo esta limitado a trabajar con hardware que le sea compatible, de ahí todos los problemas con tener controladores al día y compatibles con la última versión del DirectX al igual que hardware que sea capaz de interpretar sus instrucciones. Para cualquier efecto, u afin, que el DirectX no tenga instrucciones hay que utilizar assembler y conocer a fondo las características del hardware a utilizar, ya de plano esto hace a un software en particular no tan independiente de la plataforma, a menos que los desarrolladores inviertan el tiempo necesario en codificar sus efectos para tanto hardware como sea posible. Por otro lado el DirectX hace uso de instrucciones más complejas (muchas dependientes del CPU, no así del GPU), por lo que al momento de crear efectos en tiempo real sufre de mayores retrasos que una codificación directa en ensamblador, en este tipo de situaciones los milisegundos valen oro.

Es para llenar el vacío citado al final del párrafo precedente que NVIDIA saca el Cg. Por otro lado esta es claramente una estrategia de mercadeo, no hay que olvidar que un GPU tiene su propio conjunto de instrucciones enfocadas exclusivamente al procesamiento de imágenes (de hecho de pixeles y polígonos), en el caso de los chips de NVIDIA las novedades son muchas y no todas llegan a ser implementadas en DirectX (más bien, en el Direct3D) por el asunto ese de la independencia del hardware; o sea, con el Cg un programador va ha poder explotar una gama de efectos, manipulaciones gráficas (a nivel pixel o polígono) y afines --en tiempo real-- nunca antes vista, todo codificando de manera simple, familiar, clara y sin tener que romperse el cerebro aprendiendo los secretos, funciones y características de las instrucciones en assembler del GPU. Toda una revolución.

Al final resulta que tampoco es pura pompa la afimación de NVIDIA, ciertamente este lenguaje --si llega a ser lo suficientemente abierto, estándar y cuenta con el apoyo necesario-- puede llegar a cambiar toda la perspectiva de programar efectos ultra sofisticados con un control directo del GPU instalado en una PC. Dicho sea de paso que Cg tiene todo el respaldo de Microsoft y va ha poder ser utilizado desde las plataformas de programación más conocidas como el Delphi, Visual Basic o C++ (o el Visual Studio). Por lo pronto, mientras esperamos por su inclusión en los citados entornos de desarrollo de software, NVIDIA ya ha sacado un conjunto de herramientas básicas --un toolkit-- del Cg que viene con un compilador avanzado, librerías estándar (el conjunto de instrucciones de alto nivel), un presentador (browser), el formato de archivo CgFX, y una colección predefinida de efectos, como para ir familiarizándonos con el lenguaje y sus características.

Artículo basado en información oficial presentada por NVIDIA. Pueden encontrar más detalles sobre el Cg en el sitio Web oficial de la compañía: www.NVIDIA.com.

( - de -) SIGUIENTE >>
Sobre J de Juegos | Información Copyright | Contacto [ 28/Junio/2002 ]