Documente Academic
Documente Profesional
Documente Cultură
Search
El
Herramientas para Desarrolladores Documentacin DirectX OpenGL GPU C omputing de mano Events C alendar
Decimoquinto Tutorial
El Decimoquinto Tutorial est disponible ahora, aqu, en lnea. Usted puede comprar una versin bellamente impresa de este libro , y otros en la serie, en un acto de cortesa de descuento 30% de InformIT y AddisonWesley. Por favor visite nuestra Documentos Recientes pgina para ver todos los ltimos documentos tcnicos y presentaciones de conferencias que pueden ayudarle con sus proyectos.
Captulo 1. Introduccin
Este captulo tiene las siguientes cuatro secciones: "Qu es el Decimoquinto?" introduce el lenguaje de programacin por ordenador. "Vrtices, fragmentos, y el canal de grficos" , describe el flujo de datos de hardware grfico moderno y explica cmo el Decimoquinto encaja en este flujo de datos. "Desarrollo Histrico de CG" proporciona algunos antecedentes sobre cmo se desarroll el Decimoquinto. "El centro de gravedad para el Medio Ambiente" , explica cmo las aplicaciones van sobre el uso de los programas de C g travs del tiempo de ejecucin del C G y las interfaces de programacin de aplicaciones (API) de 3D e xistente.
C omentarios
1.1 Qu es el Decimoquinto?
http.developer.nvidia.com/CgTutorial/cg_tutorial_chapter01.html 1/38
09/01/14
Este libro te ensea cmo utilizar un lenguaje de programacin llamado C G. El lenguaje Decimosexto hace posible para que usted pueda controlar la forma, el aspecto y el movimiento de los objetos dibujados usando hardware de grficos programables. Se casa el control de programacin de estos atributos con la velocidad y las capacidades de los procesadores grficos de hoy en da increble. Nunca antes los profesionales grficos de ordenador, si los artistas o programadores, tenan tanto control sobre las imgenes en tiempo real que generan. Decimosexto proporciona a los desarrolladores una plataforma de programacin completo que es fcil de usar y permite la creacin rpida de los efectos especiales y experiencias de calidad cinematogrfica en tiempo real en mltiples plataformas. Al proporcionar un nuevo nivel de abstraccin, el Decimoquinto elimina la necesidad de los desarrolladores programar directamente con el lenguaje grfico de ensamblado, y por lo tanto ms fcilmente se dirigen a OpenGL, DirectX, Windows, Linux, Macintosh OS X, y las plataformas de consolas como la Xbox. C G fue desarrollada en estrecha colaboracin con Microsoft C orporation y es compatible tanto con la API de OpenGL y Microsoft de Alto Nivel Shading Language (HLSL) para DirectX 9.0. C g significa "C para los grficos." El lenguaje de programacin C es un lenguaje de propsito general muy popular inventado en la dcada de 1970. Debido a su popularidad y el diseo limpio, C proporciona la base para varios lenguajes de programacin posteriores. Por ejemplo, C + + y Java basan su sintaxis y la estructura en gran medida de C . El C g se apoya sobre el lenguaje C tambin. Si est familiarizado con C o uno de los muchos idiomas derivados de C , entonces C G ser fcil de aprender. Por otro lado, si usted no est familiarizado con C o incluso lenguajes de programacin en general, sino que disfrute de grficos por ordenador y quieres aprender algo nuevo, leyendo de todos modos. Programas C g tienden a ser cortas y comprensibles. Gran parte de este captulo es de fondo que proporciona un contexto valioso para comprender el Decimoquinto y utilizarla con eficacia. Por otra parte, usted puede encontrar el Decimoquinto es ms fcil de aprender haciendo. Sintase libre para saltar al captulo 2 en cualquier momento si se siente ms cmodo buceo justo en el tutorial.
09/01/14
de textos en el Decimoquinto. En cambio, el Decimoquinto apunta la posibilidad de controlar mediante programacin la forma, el aspecto y el movimiento de los objetos prestados utilizando hardware de grficos. En trminos generales, este tipo de lenguaje se llama un lenguaje de sombreado . Sin embargo, el Decimoquinto puede hacer algo ms que sombras. Por ejemplo, los programas de C g pueden realizar la simulacin fsica, composicin y otras tareas nonshading. Piense en un programa de GC como una receta detallada para cmo hacer que un objeto mediante el hardware de grficos programables. Por ejemplo, puede escribir un programa C g para hacer una superficie aparece lleno de baches o para animar un personaje virtual. Ms adelante, en la Seccin 1.3, usted aprender ms sobre la historia de los lenguajes de sombreado y donde el Decimoquinto encaja en esta historia.
09/01/14
C PUs son, por diseo, propsito general. C PUs ejecutan aplicaciones (por ejemplo, procesadores de texto y paquetes de contabilidad) escritos en lenguajes de propsito general, como C + + o Java. Debido al diseo especializado de la GPU, es mucho ms rpido en tareas grficas, tales como la prestacin de escenas 3D, que una C PU de propsito general sera. Nuevas GPUs procesan decenas de millones de vrtices por segundo y rasterizan cientos de millones o incluso miles de millones de fragmentos por segundo. GPUs futuro sern an ms rpido. Este es abrumadoramente ms rpido que la velocidad a la que una C PU puede procesar un nmero similar de vrtices y fragmentos. Sin embargo, la GPU no puede ejecutar las mismas, programas de propsito general arbitrarias que una lata de la C PU. La naturaleza especializada y de alto rendimiento de la GPU es la razn por el Decimoquinto existe. Lenguajes de programacin de propsito general son demasiado abierta para la tarea especializada de vrtices de proceso y fragmentos. Por el contrario, el lenguaje C G est totalmente dedicado a esta tarea. Decimosexto tambin proporciona un modelo de ejecucin abstracto que coincide con el modelo de ejecucin de la GPU. Usted aprender acerca del modelo de ejecucin nica del GPU en la Seccin 1.2.
09/01/14
necesitamos tanto la C PU y capacidades grficas orientado especializados de la GPU. Ambos son necesarios para hacer que las escenas en las tasas interactivos y estndares de calidad que los usuarios de las aplicaciones 3D y de la demanda de juegos. Esto significa que un desarrollador puede escribir una aplicacin o un juego 3D en C + + y luego usar C g para aprovechar al mximo la potencia de grficos adicional de la GPU.
09/01/14
hardware de grficos programables, que no tena sentido en la prestacin de un lenguaje de programacin para ello. Ahora que ese tipo de hardware est disponible, existe una clara necesidad de que sea ms fcil para programar este hardware. C g hace que sea mucho ms fcil de programar las GPU de la misma manera que C hace que sea mucho ms fcil de programar C PUs. Antes de que existiera el Decimoquinto, abordando las capacidades programables de la GPU era posible slo a travs del lenguaje ensamblador de bajo nivel. La sintaxis crptica instruccin y la manipulacin manual de registro de hardware requerido por idiomas, tales como montaje de DirectX 8 vertex y pixel shaders y algunos hechos a extensiones OpenGL es una tarea dolorosa para la mayora de los desarrolladores. C omo la tecnologa GPU hizo programas en lenguaje ensamblador ms complejas ya y posible, la necesidad de un lenguaje de alto nivel se hizo evidente. La extensa programacin de bajo nivel que se haba requerido para lograr un rendimiento ptimo podra ahora ser delegada a un compilador, que optimiza la salida de cdigo y se ocupa de la planificacin de instrucciones tedioso. La figura 1-1 es una pequea parte de un complejo programa de fragmento de lenguaje de ensamblaje utilizado para representar la piel. C laramente, es difcil de comprender, en particular con las referencias especficas a los registros de hardware.
http.developer.nvidia.com/CgTutorial/cg_tutorial_chapter01.html
6/38
09/01/14
M u l XH 1 . x y z ,H 1 ,{ 0 , 1 5 ,0 , 1 5 ,1 , 0 ,0 , 0 } ; M O V XH 0 . w ,H 1 . w ; T E XH 1 ,H 1 ,T E X 7 ,C U B O ; T E XH 3 ,f[ T E X 3 ] ,T E X 2 ,1 D ; M u l XH 3 . w ,H 0 . w ,H 2 . w ; M u l XH 3 . x y z ,H 3 ,H 3 . w ; ... Por el contrario, bien comentado cdigo C G es ms portable, ms legible, fcil de depurar, y ms fcil de reutilizar. Decimosexto le da las ventajas de un lenguaje de alto nivel como C al tiempo que ofrece el rendimiento de cdigo ensamblador de bajo nivel.
09/01/14
adecuado para el tipo de operaciones necesarias para grficos. Por ejemplo, la biblioteca estndar incluye un Decimosexto r e f l e j a rla funcin para el clculo de vectores de reflexin. Programas C g ejecutan en un relativo aislamiento. Esto significa que el procesamiento de un vrtice o fragmento particular tiene ningn efecto sobre otros vrtices o fragmentos procesados al mismo tiempo. No hay efectos secundarios a la ejecucin de un programa de GC . Esta falta de interdependencia entre los vrtices y fragmentos hace que los programas C g extremadamente bien adaptados para la ejecucin de hardware por hardware altamente segmentado y paralelos.
09/01/14
efectos de renderizado convincentes. Otra de las razones para limitar el tamao del programa y el alcance es que los ms pequeos y ms eficientes sus programas C g son, ms rpido se ejecutar. Grficos en tiempo real es a menudo sobre el equilibrio de una mayor complejidad de la escena, las tasas de animacin, y un mejor sombreado. As que siempre es bueno para maximizar la eficiencia de la prestacin a travs de la programacin Decimosexto juiciosa. Tenga en cuenta que las restricciones impuestas por los perfiles son realmente limitaciones de GPUs actuales, no C g. El lenguaje C G es lo suficientemente potente para expresar tcnicas de sombreado que an no son posibles con todas las GPUs. C on el tiempo, la funcionalidad de la GPU va a evolucionar lo suficiente para que los perfiles C g ser capaz de ejecutar programas C g increblemente complejas. C G es un lenguaje para ambas GPUs actuales y futuras.
http.developer.nvidia.com/CgTutorial/cg_tutorial_chapter01.html
9/38
09/01/14
Innovacin Hardware Figura 1-2 Fuerzas conduccin Grficos La segunda fuerza es la gran cantidad de clculos necesarios para simular el mundo que nos rodea. Nuestros ojos se consumen y nuestros cerebros comprenden imgenes de nuestro mundo en 3D a una velocidad asombrosa y con una agudeza sorprendente. Es improbable que lleguemos a alcanzar un punto en los grficos por ordenador se convierte en un sustituto de la realidad. La realidad es demasiado real. Sin desanimarse, los profesionales grficos por ordenador siguen la altura del desafo. Por suerte, la generacin de imgenes es un problema embarazosamente paralelos. Qu queremos decir con "vergonzosamente paralelas" es que los diseadores de hardware de grficos en varias ocasiones pueden dividir el problema de la creacin de imgenes realistas en ms pedazos de trabajo que son ms pequeos y ms fciles de abordar. Entonces los ingenieros de hardware pueden organizar, en paralelo, el cada vez mayor nmero de transistores disponibles para ejecutar todos estos diversos pedazos de trabajo. Nuestra tercera fuerza es el deseo sostenido que todos tenemos que ser estimulados y entretenidos visualmente. Esta es la fuerza que "conecta" la fuente de nuestro continuo redoblar de los recursos de hardware del equipo a la tarea de aproximar la realidad visual cada vez ms realista que antes. C omo ilustra la Figura 1-2, estos conocimientos nos permiten predecir con confianza que el hardware de grficos de ordenador se va a poner mucho ms rpido. Estas innovaciones ir abriendo el apetito colectivo de experiencias 3D ms interactivas y atractivas. Satisfacer esta demanda es lo que motiv el desarrollo de la lengua C G.
09/01/14
A mediados de la dcada de 1990, el hardware de grficos ms rpido del mundo consista en mltiples chips que trabajaron juntos para hacer que las imgenes y las mostrar en una pantalla. Los sistemas ms complejos de grficos por ordenador consistan en docenas de fichas, repartidas en varias juntas. C omo pasaba el tiempo y la tecnologa de semiconductores ha mejorado, los ingenieros de hardware incorporan la funcionalidad de complicados diseos multichip en un nico chip de grficos. Esta evolucin dio lugar a enormes economas de integracin y escala. Es posible que se sorprenda al saber que la GPU supera ya la C PU en el nmero de transistores presentes en cada microchip. C antidad de transistores es una medida aproximada de la cantidad de material informtico se dedica a un microchip. Por ejemplo, Intel lleno su 2.4 GHz Pentium 4 con 55 millones de transistores, NVIDIA utiliza ms de 125 millones de transistores en la GPU GeForce FX originales. NVIDIA introdujo el trmino "GPU" a finales de 1990 cuando el trmino legado "controlador VGA" ya no era una descripcin exacta del hardware de grficos en un PC . IBM haba introducido Array (VGA) de hardware de grficos de vdeo en 1987. En ese momento, el controlador VGA era lo que ahora llamamos un frame buffer "tonto". Esto significaba que la C PU fue el responsable de la actualizacin de todos los pxeles. Hoy en da la C PU rara vez se manipula pixeles directamente. En lugar de ello, los diseadores de hardware de grficos construyen los "smarts" de las actualizaciones de pxeles en la GPU. Observadores de la industria han identificado cuatro generaciones de evolucin de la GPU hasta ahora. C ada generacin aporta mejores prestaciones y evolucin de programacin del conjunto de caractersticas de la GPU. C ada generacin tambin influye e incorpora la funcionalidad de los dos principales interfaces de programacin 3D, OpenGL y DirectX. OpenGL es un estndar abierto para la programacin en 3D para las computadoras de Windows, Linux, UNIX y Macintosh. DirectX es un conjunto en evolucin de las interfaces de programacin de multimedia de Microsoft, incluyendo Direct3D para la programacin 3D.
09/01/14
grficos por ordenador, pero debido a que eran tan caros, que no lograron el xito de mercado masivo de las GPUs de un solo chip diseado para PC s y consolas de videojuegos. Hoy en da, las GPU son mucho ms poderosas y mucho ms barato que cualquier sistema anterior.
09/01/14
modos no son lo suficientemente potente como para ser considerado verdaderamente programable. Debido a que estas GPUs compatibles con la programabilidad de vrtices, pero carecen de verdadera capacidad de programacin de pxeles, esta generacin es de transicin. DirectX 8 y el multivendor A R B _ v e r t e x _ p r o g r a m extensin OpenGL exponen programacin a nivel de vrtice a las aplicaciones. DirectX 8 pixel shaders y varias extensiones OpenGL especficas del proveedor exponen configurabilidad nivel fragmento de esta generacin.
Tabla 1-1. Caractersticas y Evolucin de rendimiento de las GPU NVIDIA seleccionada, por generacin
Nombre Antialiasing Polgono del Proceso Transistores Tasa de Nota Cambio producto relleno
Generacin
Ao
Primero
RIVA TNT
0,25 m
7M
50 M
6M
[1 ]
Primero
0,22 m
9M
75 M
9M
[2 ]
Segundo
0,22 m
23 M
120 M
15 M
[3 ]
Segundo
Principios GeForce2 de 2000 Principios GeForce3 de 2001 Early 2002 Principios GeForce4 Ti GeForce
0,18 m
25 M
200 M
25 M
[4 ]
Tercera
0,15 m
57 M
800 M
30 M
[5 ]
Tercera
0,15 m
63 M
1.200 M
60 M
[6 ]
C uarto
http.developer.nvidia.com/CgTutorial/cg_tutorial_chapter01.html
0,13 m
125 M
2.000 M
200 M
[7 ]
13/38
09/01/14
de 2003 Notas
FX
La tabla utiliza los siguientes trminos: Proceso -la dimensin mnima de elemento en micras ( m , millonsimas de metro) para el proceso de semiconductor que se utiliza para fabricar cada microchip Transistores -una medida aproximada, en millones (M), de diseo de los chips 'y la complejidad de fabricacin Antialiasing tasa de relleno -a la capacidad de la GPU para rellenar los pxeles, en millones (M) de pxeles RGBA de 32 bits por segundo, en el supuesto de dos muestras antialiasing; nmeros en cursiva indican las tasas de relleno que se-clasificar De porque el hardware no tiene verdadera representacin de suavizado Tasa Polgono -a la capacidad de la GPU para dibujar tringulos, medida en millones (M) de tringulos por segundo Las notas destacan las mejoras ms significativas en cada diseo. Las tasas de rendimiento pueden no ser comparables con diseos de otros fabricantes de hardware. GPUs futuras generalizar an ms los aspectos programables de GPUs actuales, y C G harn de esta programacin adicional fcil de usar.
http.developer.nvidia.com/CgTutorial/cg_tutorial_chapter01.html
14/38
09/01/14
Figura 1-4 Tipos de primitivas geomtricas C ada vrtice tiene una posicin, sino tambin por lo general tiene varios otros atributos tales como un color, una secundaria (o especular de color), uno o mltiples conjuntos de coordenadas de textura, y un vector normal. El vector normal indica qu direccin se enfrenta a la superficie en el vrtice, y se suele utilizar en los clculos de iluminacin.
Vertex Transformacin
Transformacin Vertex es la primera etapa de procesamiento en la tubera de hardware de grficos. Transformacin Vertex realiza una secuencia de operaciones matemticas en cada vrtice. Estas operaciones incluyen la transformacin de la posicin de vrtice en una posicin de la pantalla para el uso de la impresora de trama, la generacin de coordenadas de textura para el texturizado, y encendiendo el vrtice para determinar su color. Vamos a
http.developer.nvidia.com/CgTutorial/cg_tutorial_chapter01.html 15/38
09/01/14
09/01/14
pensar en un fragmento como un "pixel potencial." Si un fragmento pasa las diferentes pruebas de rasterizacin (en la etapa de operaciones de trama, que se describir en breve), el fragmento actualiza un pxel en la memoria intermedia de trama.
Operaciones Raster
La operaciones de trama etapa realiza una secuencia final de las operacionespor fragmento inmediatamente antes de la actualizacin de la memoria de vdeo. Estas operaciones son una parte estndar de OpenGL y Direct3D. Durante esta etapa, las superficies ocultas se eliminan a travs de un proceso conocido como pruebas de profundidad . Otros efectos, tales como mezcla y sombreado basado en la plantilla, tambin se producen durante esta etapa. Las operaciones de trama etapa cheques cada fragmento basado en una serie de pruebas, incluyendo la tijera, alfa, plantilla, y pruebas de profundidad. Estas pruebas implican el color del fragmento final o profundidad, la ubicacin de pxel, y los valores por pxel, tales como el valor de profundidad y el valor de la plantilla del pxel. Si alguna prueba falla, esta etapa descarta el fragmento sin actualizar el valor del color del pxel (aunque puede ocurrir una operacin de estarcido escritura). Aprobar el examen de profundidad puede reemplazar el valor de profundidad del pixel con la profundidad del fragmento. Despus de las pruebas, una operacin de mezcla combina el color final del fragmento con valor de color del pxel correspondiente. Por ltimo, una operacin de buffer de escritura marco sustituye el color del pxel con el color mezclado. La Figura 1-5 muestra esta secuencia de operaciones.
http.developer.nvidia.com/CgTutorial/cg_tutorial_chapter01.html
17/38
09/01/14
Figura 1-5 estndar OpenGL y Direct3D operaciones de trama La figura 1-5 muestra que la etapa de operaciones de trama es en realidad s misma una serie de etapas de canalizacin. De hecho, todas las etapas descritas anteriormente se pueden desglosar en subetapas tambin.
http.developer.nvidia.com/CgTutorial/cg_tutorial_chapter01.html
18/38
09/01/14
Figura 1-7 El C anal de grficos programables La Figura 1-7 muestra ms detalles que la figura 1-3, pero lo ms importante, muestra el procesamiento de vrtices y el fragmento roto a cabo en unidades programables. El procesador de vrtices programables es la unidad de hardware que se ejecuta sus programas de vrtice C g, mientras que el procesador fragmento programable es la unidad que dirige sus programas de fragmentos de C g. C omo se explica en la seccin 1.2.2, los diseos de la GPU han evolucionado, y el vrtice y los procesadores de fragmentos dentro de la GPU han hecho la transicin de ser configurable para ser programable. Las descripciones en las dos secciones siguientes presentan las caractersticas funcionales crticas de vrtices programables y procesadores de fragmentos.
09/01/14
resultado registros de salida contienen el vrtice recin transformado. Despus de la configuracin de tringulos y la rasterizacin, los valores interpolados para cada registro se pasan al procesador de fragmentos.
Figura 1-8 Diagrama de flujo programable Vertex Procesador La mayor procesamiento de vrtices utiliza una paleta limitada de las operaciones. Operaciones matemticas vectoriales sobre vectores en coma flotante de dos, tres o cuatro componentes son necesarios. Estas operaciones incluyen sumar, multiplicar, multiplicar-sumar, producto escalar, mnimo y mximo. El soporte de hardware para la negacin del vector y swizzling componente racional (la capacidad de cambiar el orden de los componentes del vector arbitrariamente) generaliza estas instrucciones vector matemticas para proporcionar negacin, resta y productos cruzados. C omponente sabia escribir enmascaramiento controla la salida de todas las instrucciones. C ombinando cuadrados operaciones de raz recprocas y recprocos con la multiplicacin de vectores y productos de punto, respectivamente, permite la divisin de vectores por escalares y vectoriales normalizacin. Aproximaciones exponenciales, logartmicas y trigonomtricas facilitan la iluminacin, la niebla y los clculos geomtricos. Instrucciones especializadas pueden realizar funciones de iluminacin y de
http.developer.nvidia.com/CgTutorial/cg_tutorial_chapter01.html 20/38
09/01/14
atenuacin ms fcil de calcular. Ms funcionalidad, como direccionamiento relativo de constantes y de apoyo de control de flujo de la ramificacin y de enlace, tambin est disponible en los procesadores de vrtices programables ms recientes.
http.developer.nvidia.com/CgTutorial/cg_tutorial_chapter01.html
21/38
09/01/14
http.developer.nvidia.com/CgTutorial/cg_tutorial_chapter01.html
22/38
09/01/14
Figura 1-10 Fuentes de Patrimonio Tecnologa de C G La figura 1-11 muestra los idiomas para fines generales de programacin, interfaces de programacin de aplicaciones en 3D y los lenguajes de sombreado que inspiraron el desarrollo de C G.
Figura 1-11 Inspiraciones para el Desarrollo de C G Anteriormente mencionamos cmo el Decimoquinto aprovecha la sintaxis y la semntica de C . A lo largo de este libro, usted encontrar que el Decimoquinto mayora hace lo que esperan que los
http.developer.nvidia.com/CgTutorial/cg_tutorial_chapter01.html 23/38
09/01/14
programadores de C . Decimosexto difiere de C en situaciones donde la especializacin de cualquiera C G para las GPU o rendimiento justifique un cambio.
rboles de sombra
La inspiracin para el RenderMan Shading Language vino de una idea
http.developer.nvidia.com/CgTutorial/cg_tutorial_chapter01.html 24/38
09/01/14
anterior llamado rboles de sombra . Rob C ook, a continuacin, en Lucasfilm Ltd., que ms tarde se separ de Pixar, public un documento de SIGGRAPH sobre rboles de sombra en 1984. Un rbol de sombra organiza diversas operaciones de sombreado como nodos dentro de una estructura de rbol. Figura 1-12 muestra un rbol de sombra para renderizar una superficie de cobre. Los nodos hoja son entradas de datos al rbol de sombra. Los nodos no hoja representan operaciones de sombreado simples. Durante el proceso de representacin, el procesador evala el rbol de sombra asociado con una superficie dada para determinar el color de la superficie en la imagen renderizada. Para evaluar un rbol de sombra, un procesador realiza la operacin de sombreado asociado con el nodo de nivel superior en el rbol de sombra. Sin embargo, para evaluar un nodo dado, el procesador debe primero evaluar nodos hijos del nodo. Esta regla se aplica de forma recursiva para evaluar el rbol de sombra en su totalidad. El resultado de una evaluacin de rboles de sombra en un punto dado en una superficie es el color de dicho punto.
Figura 1-12 A Shade Tree ejemplo, de la original de papel SIGGRAPH de Rob C ocinar Los rboles de sombra surgi de la constatacin de que un nico modelo de sombreado predefinido nunca sera suficiente para que todos los objetos y escenas que se podra querer hacer. Diagramas de rbol de sombra son ideales para la visualizacin de un flujo de datos de las operaciones de sombreado. Sin embargo, si los rboles de sombra son complejos, sus diagramas se convierten en difciles de manejar. Investigadores de Pixar y en otras partes reconocieron que cada rbol de sombra es un tipo limitado de programas. Esta toma de conciencia proporcion el
http.developer.nvidia.com/CgTutorial/cg_tutorial_chapter01.html 25/38
09/01/14
impulso para un nuevo tipo de lenguaje de programacin conocido como un lenguaje de sombreado.
09/01/14
Hanrahan, comenzaron la construccin de un lenguaje de sombreado diseado especficamente para las GPU de segunda generacin y tercera generacin. Este lenguaje, conocido como el de Stanford en tiempo real Shading Language (RTSL), podra compilar shaders escritos en RTSL en una o ms OpenGL pases. La investigacin en Stanford inspir el propio esfuerzo de NVIDIA para desarrollar un lenguaje de sombreado en hardware susceptibles de calidad comercial. Bill Marcos se uni a NVIDIA en 2001 para liderar el esfuerzo por definir y aplicar el lenguaje de sombreado que ahora llamamos el Decimoquinto. Durante este tiempo, NVIDIA ha colaborado con Microsoft para acordar una sintaxis del lenguaje comn y el conjunto de caractersticas.
http.developer.nvidia.com/CgTutorial/cg_tutorial_chapter01.html
27/38
09/01/14
OpenGL
A principios de 1990, Silicon Graphics ha desarrollado OpenGL en coordinacin con una organizacin llamada la Arquitectura Junta de Revisin de OpenGL (ARB), que comprenda todos los principales proveedores de sistemas de grficos por ordenador. Originalmente, OpenGL slo funcionaba en potentes estaciones grficas UNIX. Microsoft, un miembro fundador de la ARB, a continuacin, implementa OpenGL como una manera de apoyar a los grficos 3D para su sistema operativo Windows NT. Microsoft agreg ms adelante soporte OpenGL para Windows 95 y todos los sistemas operativos de escritorio de Microsoft. OpenGL no se limita a un solo sistema operativo o de ventanas. Adems de apoyar a las estaciones de trabajo UNIX y Windows PC , OpenGL es apoyado por Apple para sus ordenadores personales Macintosh. Los usuarios de Linux pueden utilizar la implementacin de cdigo abierto Mesa de OpenGL o una implementacin acelerada de hardware, tales como driver de OpenGL de NVIDIA para Linux. Esta flexibilidad hace OpenGL mejor interfaz de programacin multiplataforma de la industria para grficos 3D. Durante la ltima dcada, OpenGL ha evolucionado junto con hardware de grficos. OpenGL es extensible, lo que significa que los ejecutores de OpenGL pueden aadir nuevas funcionalidades a OpenGL de una manera gradual. Hoy, decenas de extensiones OpenGL permiten el acceso a todas las ltimas caractersticas de la GPU. Esto incluye extensiones estandarizadas-ARB para vrtice y fragmento de programacin. A medida que se establecieron las extensiones, a menudo se enrollan en el estndar OpenGL ncleo de modo que el estndar en su conjunto avances. En el momento de escribir esto, la versin actual de OpenGL es de 1.4. Los trabajos en curso para evolucionar OpenGL est en marcha en varios grupos de trabajo OpenGL ARB. Este trabajo incluye tanto a nivel de reunin y de interfaces programables de alto nivel. Debido a que el Decimoquinto opera como una capa por encima de tales interfaces, que seguir funcionando con las futuras revisiones de OpenGL de una manera compatible.
Direct3D
Microsoft comenz a desarrollar el interfaz de programacin de Direct3D sobre 1995 como parte de su iniciativa multimedia DirectX. Direct3D es una de las interfaces de programacin que componen DirectX. Microsoft introdujo DirectX y Direct3D para poner en marcha el mercado de consumo para grficos 3D, especialmente los juegos, en PC s con Windows. C onsola de juegos Xbox de Microsoft tambin es compatible con Direct3D. Direct3D es el ms popular de
http.developer.nvidia.com/CgTutorial/cg_tutorial_chapter01.html 28/38
09/01/14
la API de grficos para juegos en Windows, debido a su historia de hacer coincidir estrechamente las capacidades de hardware de grficos disponibles. C ada ao, ms o menos, Microsoft ha actualizado DirectX, incluyendo Direct3D, para mantenerse al da con el rpido ritmo de la innovacin de hardware de PC . La versin actual de DirectX en el momento de escribir este documento es DirectX 9, que incluye HLSL, la implementacin de Microsoft de la misma sintaxis del lenguaje y de las construcciones que se encuentra en el Decimoquinto.
09/01/14
Direct3D. Luego, su aplicacin transfiere el OpenGL o Direct3D traduccin de su programa de C g para la GPU usando el OpenGL apropiado o comandos Direct3D. El driver de OpenGL o Direct3D realiza la traduccin final en el hardware ejecutable formar su GPU requiere. Los detalles de esta traduccin dependen de las capacidades combinadas de la GPU y la interfaz de programacin de 3D. C mo un programa Decimosexto compila su forma intermedia OpenGL o Direct3D depende del tipo y la generacin de GPU en su computadora. Puede ser que la GPU no es capaz de soportar un programa Decimosexto vlida particular, debido a las limitaciones de la propia GPU. Por ejemplo, su programa de fragmentos C G no se compilar si el programa accede a ms unidades de textura a la que admite GPU objetivo.
09/01/14
C gD3D, pero no tanto, porque la mayora de las aplicaciones utilizan ya sea OpenGL o Direct3D, no ambos. En comparacin con la biblioteca en tiempo de ejecucin Decimosexto ncleo que contiene el compilador de C g las bibliotecas C gGL y C gD3D son relativamente pequeos. Su trabajo consiste en hacer que el OpenGL o Direct3D apropiada requiere configurar programas C g para su ejecucin. Estas llamadas se transfieren de un programa Decimosexto traducida al controlador apropiado que se traducir an ms el programa en una forma de la GPU puede ejecutar. En su mayor parte, las bibliotecas C gGL y C gD3D tienen rutinas similares. Las rutinas de la biblioteca C gGL comienzan con c g G L; las rutinas de la biblioteca C gD3D comienzan con c g D 3 D.
09/01/14
tener una manera de agrupar toda la informacin necesaria para hacer un modelo 3D, incluido su programa de QG asociada.
Lo Proporciona CgFX
C gFX es un formato de archivo estndar para la representacin de efectos completos y apariencias. C omo lo hicieron con C g, Microsoft y NVIDIA colaboran para desarrollar el formato C gFX. Archivos C gFX son basado en texto, con una sintaxis que es un superconjunto del Decimosexto de, y puede contener cualquier nmero de programas de C g. La . f xsufijo identifica los archivos C gFX. Un archivo de C gFX describe el estado render completa para un efecto particular: mltiples pasadas, estados de textura, y cualquier nmero de programas de vrtice y de fragmentos individuales se pueden definir para crear una apariencia completa o efecto. Se proporciona un conjunto de herramientas de desarrollo de acompaamiento para el uso y anlisis de los archivos C gFX. El kit de herramientas expone ganchos de interfaz de usuario para alojar aplicaciones, por lo que las aplicaciones C gFX-aware puede suministrar automticamente controles significativos y la semntica para los usuarios y desarrolladores por igual. Programas C g describen el vrtice o fragmento de procesamiento que tiene lugar en un nico paso de representacin, pero algunos algoritmos de sombreado complejos requieren mltiples pases de representacin. C gFX ofrece un formato para codificar efectos complejos de pasadas mltiples, incluida la designacin de qu programa C G se utiliza para cada paso de representacin. Ms especficamente, C gFX admite tres funciones adicionales ms all de lo que es compatible con el ncleo del lenguaje C G: 1. C gFX proporciona un mecanismo para especificar los pases de renderizado mltiples y mltiples implementaciones opcionales para un solo efecto. 2. C gFX le permite especificar los estados de renderizado no programables, como los modos de alfa-prueba y filtrado de texturas. La configuracin de estos hacen que los Estados pueden adoptar la forma de expresiones simples, que se evalan en la C PU cuando se inicializa el efecto. 3. C gFX permite anotaciones que se aaden a los shaders y parmetros de sombreado. Estas anotaciones proporcionan informacin adicional a las aplicaciones, incluidas las aplicaciones de creacin de contenido. Por ejemplo, una anotacin puede especificar el rango permitido de valores para
http.developer.nvidia.com/CgTutorial/cg_tutorial_chapter01.html 32/38
09/01/14
un parmetro de sombreado.
http.developer.nvidia.com/CgTutorial/cg_tutorial_chapter01.html
33/38
09/01/14
Figura 1-14 aplicaciones de creacin de contenido digital que usar C g y C gFX Antes de C gFX, no haba forma estndar para una aplicacin de DC C para exportar el contenido en 3D con todo el conocimiento de sombreado asociado necesario para representar el contenido en tiempo real. Ahora las principales aplicaciones DC C utilizan C gFX en su proceso de creacin de contenidos y apoyan el formato de archivo C gFX. Esto significa que C gFX puede mejorar significativamente el flujo de trabajo artstico de aplicaciones DC C para juegos en tiempo real y otras aplicaciones 3D. Usando C gFX, los artistas pueden ver y modificar shaders C g y contenidos 3D asociada para ver, desde el interior de la herramienta DC C de su eleccin, el aspecto que tendr su trabajo en un juego o una aplicacin 3D.
http.developer.nvidia.com/CgTutorial/cg_tutorial_chapter01.html
34/38
09/01/14
1.5 Ejercicios
Los ejercicios al final de cada captulo ayudarle a revisar sus conocimientos y desarrollar habilidades prcticas de programacin. 1. Responde a esta: Nombre dos interfaces de programacin 3D estndar para el que puede compilar programas C g. Qu sistemas operativos cada soporte de la interfaz de programacin? 2. Responde a esta: C ules son las principales etapas del pipeline de grficos? En qu orden se disponen las etapas? 3. Responde a esta: Dnde encajan los programas de vrtice y fragmento en la tubera? 4. Responde a esta: Qu es un vrtice? Qu es un fragmento? Distinguir un fragmento de un pxel. 5. Pruebe usted mismo: No hemos comenzado a escribir programas C g todava (vamos a llegar muy pronto en el prximo captulo), as que tome un descanso y ver una buena largometraje de animacin de grficos por ordenador, como Monsters, Inc.
http.developer.nvidia.com/CgTutorial/cg_tutorial_chapter01.html 35/38
09/01/14
09/01/14
El sistema de grficos OpenGL: Una especificacin documenta la interfaz de programacin de OpenGL 3D. El mejor tutorial para aprender programacin OpenGL es la Gua de programacin OpenGL: La Gua Oficial de Aprendizaje OpenGL, tercera edicin (AddisonWesley, 1999), de Mason Woo, Jackie Neider, Tom Davis, y Dave Shreiner. El www.opengl.org sitio Web sirve mucha ms informacin sobre OpenGL. Documentacin para la interfaz de programacin de Direct3D est disponible de Microsoft msdn.microsoft.com sitio Web. NVIDIA ofrece ms informacin sobre el tiempo de ejecucin C g C gFX, y el propio C G en su sitio Web Developer en developer.nvidia.com / CG .
Derechos de autor
Muchas de las denominaciones utilizadas por los fabricantes y vendedores para distinguir sus productos se consideran marcas comerciales. C uando esas designaciones aparecen en este libro, y Addison-Wesley tena conocimiento de una reclamacin de la marca, las designaciones se han impreso con letra inicial mayscula o en todas las capitales. Los autores y el editor han cuidado en la preparacin de este libro, pero hacer ninguna garanta expresa o implcita de ningn tipo y no asumimos ninguna responsabilidad por errores u omisiones. No se asume responsabilidad por daos incidentales o consecuentes relacionados con o que surjan de la utilizacin de la informacin o programas contenidos en el presente documento. El editor ofrece descuentos en este libro cuando se pide una cantidad para compras al por mayor y ventas especiales. Para obtener ms informacin, pngase en contacto con: EE.UU. C orporativo y Ventas Gobierno (800) 382-3419 corpsales@pearsontechgroup.com Para ventas fuera de los EE.UU., pngase en contacto con: Ventas Internacionales international@pearsontechgroup.com Visita Addison-Wesley en la Web: www.awprofessional.com Library of C ongress C ontrol Number: 2002117794 C opyright 2003 NVIDIA C orporation Imagen de la portada 2003 por NVIDIA C orporation Todos los derechos reservados. Ninguna parte de esta publicacin puede ser reproducida, almacenada en un sistema de recuperacin, o transmitida de
http.developer.nvidia.com/CgTutorial/cg_tutorial_chapter01.html 37/38
09/01/14
ninguna forma, ni por ningn medio, ya sea electrnico, mecnico, fotocopia, grabacin, o de otra manera, sin el consentimiento previo del editor. Impreso en los Estados Unidos de Amrica. Publicado simultneamente en C anad. Para informacin sobre cmo obtener el permiso para el uso del material de este trabajo, por favor enve una solicitud por escrito a: Pearson Education, Inc. Derechos y C ontratos 75 Arlington Street, Suite 300 Boston, MA 02116 Telfono: (617) 848-7047 Texto impreso en papel reciclado en el RR Donnelley C rawfordsville en C rawfordsville, Indiana. 8 9 10111213 DOC 09 08 07 8 impresin, noviembre de 2007 Derecho de Autor, Dedicatorias y Prlogo Captulo 1. Introduccin C aptulo 2. Los Programas ms simple C aptulo 3. Parmetros, texturas, y las expresiones C aptulo 4. Transformaciones C aptulo 5. Iluminacin C aptulo 6. Animacin C aptulo 7. Las tcnicas de mapeo de entorno C aptulo 8. Bump Mapping C aptulo 9. Temas avanzados C aptulo 10. Perfiles y Performance Apndice A. Procedimientos iniciales con C g Apndice B. El tiempo de ejecucin de C G Apndice C . El C gFX Formato de Archivo Apndice D. C g Palabras clave Funciones Apndice E. C G Standard Library Lminas a C olor
http.developer.nvidia.com/CgTutorial/cg_tutorial_chapter01.html
38/38