Máster Oficial:
Máster en Informática Gráfica, Juegos y Realidad Virtual

Máster Oficial:
Máster en Informática Gráfica, Juegos y Realidad Virtual

Procesadores Gráficos y Aplicaciones en Tiempo Real

 

portada_web

 


Información

Normativa

Temario

Materiales

Blog

Introducción

Normativa

Temario

Transparencias

Blog

Audiencia

Evaluación

Proyectos

Enunciados

Noticias

Profesores

Guía docente

Ejercicios prácticos

Artículos interesantes

Sugerencias

Objetivos

 

Google Calendar

Bibliografía

 

NOVEDADES

 

 

Recursos complementarios

 

 

 

 

Enlaces de interés

 

 

RESUMEN:

PRESENTACIÓN:

Los procesadores gráficos modernos, que podemos encontrar en las tarjetas gráficas para PC y en las consolas, tienen arquitecturas muy sofisticadas que explotan las ideas de paralelismo de una forma innovadora y poco convencional. Con múltiples procesadores especializados y un extraordinario ancho de banda son capaces de mantener velocidades de cálculo sostenidas al menos un orden de magnitud por encima de las CPUs más avanzadas. Las prestaciones y funcionalidad de las GPUs crecen a un ritmo superior al marcado por el incremento de la densidad de integración de la ley de Moore.

Aunque su aplicación principal es la representación tridimensional de escenas en tiempo real y este incremento les ayuda a dar vida a entornos cada vez más realistas y complejos, sus capacidades los hacen muy atractivos en otros campos como potentes coprocesadores de bajo coste (cálculo científico, imagen médica, visión artificial…).

Para poder obtener el mejor rendimiento en nuestras aplicaciones (gráficas) es necesario conocer en cierto detalle la arquitectura de las plataformas en las que se vayan a ejecutar. Los profesionales más valorados (en parte por su escasez) son aquellos que saben conjugar la facilidad de análisis y desarrollo con el buen uso de los recursos, ya que esta suele ser la llave para un producto de éxito.

En esta asignatura se estudiará la arquitectura de los chips gráficos y el resto de elementos de la tarjeta gráfica, su evolución como cauce clásico y las nuevas tendencias en la arquitectura unificada. El planteamiento es eminentemente práctico, por lo que las clases teóricas, en las que se explicarán los fundamentos hardware que sirven de pilares a esta tecnología, se complementan con multitud de ejercicios y prácticas en el laboratorio, en los que se ilustrará cómo se programan estos chips para sacar partido de toda su capacidad potencial.

Además, los alumnos tendrán la oportunidad de poner en práctica sus conocimientos y adquirir un primer contacto en el campo de la investigación mediante la realización de un proyecto aplicado con un fuerte carácter en arquitectura.

El mundo de tarjetas gráficas está en constante cambio y evolución, por ello en la asignatura se pretende dar una visión práctica, además de estimular el espíritu crítico de los alumnos, que tendrán que seguir al día en estos temas durante su carrera profesional.

AUDIENCIA:

Esta asignatura está orientada hacia aquellos alumnos que tengan curiosidad o necesidad de profundizar en la arquitectura de procesadores gráficos, su programación a bajo nivel y su aprovechamiento tanto en la representación de complejos efectos 3D en tiempo real como en su utilización para cálculo intensivo.

Se ha procurado que el material y su presentación sean adecuados para personas con una procedencia multidisciplinar, si bien el nivel exigido corresponde a una asignatura de postgrado de Informática que sigue el planteamiento del EEES.

Se recomienda haber cursado Gráficos 3D y Realidad Virtual e Interacción, así como tener soltura en lenguaje C, OpenGL y matemáticas básicas (Álgebra Lineal…).

 

PROFESORES:

  • Alberto Sánchez
    • Despacho: 2011A (segunda planta) Extensión del Rectorado
    • Dirección de contacto: alberto.sanchez |arroba| urjc.es
    • Horario de tutorias: X (12h30-13h30h)

OBJETIVOS:

La primera parte de la asignatura nos sirve para introducir el estado actual de la tecnología en tarjetas gráficas. Este primer contacto nos ayudará a orientarnos en el contexto de un mundo muy cambiante. También se hace un breve recorrido a lo largo de los distintos modelos de programación paralela y la forma en la que se enfoca el diseño de algoritmos y sistemas a gran escala.

El segundo bloque de la asignatura es mucho más amplio. En él se profundiza en la implementación hardware del cauce gráfico clásico y en su programación desde el punto de vista gráfico.

En la tercera parte de la asignatura se aprenderá a reestructurar el diseño de los algoritmos y aplicaciones para que aprovechen las ventajas de los multiprocesadores. Veremos las causas que han dado origen a la arquitectura unificada y se estudiara a muy bajo nivel para poder explotar su potencial en aplicaciones GPGPU.

El cuarto bloque didáctico pretende dar una visión mas amplia del futuro a corto plazo en este tipo de tecnologías: la inmediata evolución de los procesadores manycore, el uso de procesadores gráficos para la síntesis de imagen tridimensional de una manera en la que inicialmente no estaban diseñados (lo que nos permite ir más allá del cauce gráfico convencional), etc.

En este último módulo también se estudiará cómo los sistemas gráficos pueden conformar sistemas más complejos: centros de supercomputación y granjas de render, con un coste y prestaciones muy competitivos.

Para completar la asignatura, los alumnos que elijan lcursar la asignatura completa deberán realizar un proyecto de carácter aplicado en el que se ponga en práctica lo aprendido de estas arquitecturas.

 

NORMATIVA:

  • Clases teóricas
    • Las clases presenciales no son obligatorias, si bien se recomienda la asistencia encarecidamente, ya que los temas tratados en la asignatura son bastante avanzados y sólo una pequeña fracción de lo explicado en clase se recoge en las transparencias.
    • Es posible asistir a las clases teóricas de la asignatura en calidad de lector aunque se haya convalidado o no se curse la asignatura siempre que se esté matriculado del Máster Oficial de Informática Gráfica, Juegos y Realidad Virtual ó se estén cursando asignaturas afines en los másteres que permiten doble y triple titulación con éste. También es posible visitar el laboratorio en el horario en el que se imparten la clases prácticas aunque sin hacer uso de los recursos del laboratorio.
    • Aquellas charlas y conferencias que se consideren de gran interés podrán ser objeto de preguntas en el examen teórico y fuente de ideas para los proyectos. Como comprendemos que no todos los alumnos de la asignatura podrán asistir a las mismas, se habilitarán los recursos necesarios para registrarlas y que los alumnos las puedan ver de forma diferida cuando les sea más cómodo.
  • Laboratorios
    • No se guardarán las notas de prácticas de un año para otro.
    • El criterio más importante es la funcionalidad: un programa que funciona siempre tiene más posibilidades de llevarse una buena puntuación; no se valorarán aquellos programas que no funcionen. Una práctica o proyecto modesto será evaluada mucho más favorablemente que un "proyecto" ambicioso que sólo da core-dumps. El siguientes criterios que se tendrán en cuenta (y que hay que cuidar al realizar las prácticas) son:
      • La manera de resolver el problema con el programa
      • Estructuras de datos y diseño de los algoritmos
      • Claridad y documentación en el código
      • Eficiencia y elegancia en la implementación.
    • ¡Por favor, no hagáis trampas! Se procura alentar el diálogo y el trabajo en equipo, pero por favor trabajad de forma independiente (a menos que el trabajo sea en grupos). Trabajos muy similares serán considerados como copias, a menos que la naturaleza lo pedido sea tan restrictiva que justifique las similitudes. Y una copia implica el suspenso automático. Simplemente piénsalo de esta manera: hacer trampas dificulta el aprendizaje y la diversión de conseguir hacerlo.

Es vuestra responsabilidad proteger vuestro trabajo y aseguraros que no se convierte en el de otro.

    • Si se utiliza (o mejora) código fuente u otro material obtenido a través de internet, la biblioteca... debe darse el crédito a los autores y pedir permiso de ser necesario (si tiene una licencia restrictiva). Tomar código de un libro o de internet sin tener en cuenta estas consideraciones será considerado copia.
    • Está terminantemente prohibido la práctica de técnicas de overclocking en las tarjetas gráficas del laboratorio, así como desbloquear los procesadores de vértices y fragmentos de los chips gráficos. Este tipo de acciones pueden dañar físicamente el equipo del laboratorio y los alumnos responsables serán amonestados severamente.
    • El laboratorio estará abierto y accesible en las horas de tutoria grupal para que todos los alumnos puedan trabajar y preguntar dudas
    • Los monitores de laboratorio tendrán acceso a las instalaciones y enunciados de forma preferente, a cambio de ayudar un poco a sus compañeros durante los periodos en los que esté abierto el laboratorio.
  • Contenido de los tests sorpresa

Abarcan todo lo visto en clase, tanto la parte presencial como la no presencial (lecturas, videos y tutoriales de las actividades semanales). El objetivo principal es fomentar que los alumnos lleven al día el estudio de la asignatura, de modo que se favorezca una dinámica que mejore la comprensión de los conceptos presentados en clase.

Los tests se realizarán sin previo aviso. NO son pruebas reevaluables, de modo que si un alumno no asiste ese día a clase, no podrá obtener la nota correspondiente a dicha prueba de evaluación. La única excepción será la relativa a alumnos que hayan solicitado previamente la dispensa académica.

Contenidos del examen de final de semestre
  • En el examen se evaluarán lo explicado en clase de forma teórica, los conocimientos adquiridos en la realización de los ejercicios prácticos, así como lo aprendido a través de las actividades semanales (lecturas, videos y ejercicios complementarios)

 

El segundo semestre conlleva un carga de trabajo notablemente superior a la del primero, por ello se ha buscado una forma alternativa que permita hacerlo más asequible a la vez que se ofrece un breve itinerario de especialización.
Así, Procesadores Gráficos forma parte de un grupo de 3 asignaturas del segundo semestre que siguen una dinámica conjunta en cuanto a la distribución de contenidos didácticos y pruebas de evaluación. Junto con Animación Avanzada y Rendering Avanzado se da la opción de cursar una de ellas de forma completa (parte obligatoria + parte opcional), y en las otras dos sólo se exigen los contenidos y pruebas de la parte obligatoria.

En general, la asignatura que se elija como completa, además de contenidos más avanzados y prácticas extras, requiere la realización de un proyecto de investigación parcialmente guiado en el contexto de la asignatura elegida. Este trabajo puede adecuarse a los intereses del alumno de modo que suponga un primer paso en el Proyecto de Fin de Máster.

 

 

CÓDIGO DE HONOR

El código que se entregue en las prácticas debe contener únicamente: código escrito sólo por ti y tus compañeros de grupo, código escrito por tí en prácticas previas, y el código de las librerías permitidas para cada una de las prácticas. En el caso del proyecto de investigación de la asignatura se pueden utilizar librerías externas con el consentimiento previo de los profesores.

El código de prácticas anteriores debe estar claramente acreditado, tanto dónde es utilizado como en la memoria explicativa. Y solamente puede ser utilizado con el permiso de los estudiantes involucrados en los grupos a los que hayas pertenecido previamente.

Os animamos a que hableis más allá de vuestro grupo de trabajo sobre temas de diseño, depuración, matemáticas… relacionados con los proyectos (salvo en el caso en el que haya cuestiones especificas en la especificación del proyecto que los hagan susceptibles de evaluación directa).

El conjunto del trabajo realizado en esta asignatura refleja vuestra madurez y se espera un comportamiento profesional: vamos a enfrentarnos a retos que no son sencillos y de ahí que se espere algo de colaboración entre grupos. Pero de ninguna manera se van a consentir copias en las prácticas.

Podéis preguntarnos a los profesores -si no estáis seguros- respecto a cuál es la conducta adecuada en un caso específico. Si accidentalmente habéis transgredido el código de honor es importante que lo discutáis inmediatamente con alguno de los profesores para evitar un malentendido.

 

PRÁCTICAS:

El conjunto de enuciados de prácticas se irá anunciando a medida que avance la asignatura en el segundo cuatrimestre. Algunas de las prácticas se realizarán de forma guiada como tutorías grupales en el laboratorio 105 del Aulario II el día y a la hora que se indiquen en clase.

Prácticas del primer bloque (cauce gráfico):

  • Práctica 2.1 (no entregable): Introducción a la programación gráfica de GPUs [Enunciado]
  • Práctica 2.2 (no entregable): Programación clásica gráfica en las distintas etapas de la GPU [Enunciado]
  • Práctica 2.3 (obligatoria): Programación gráfica en la GPU: APIs y mapas de bultos [Enunciado] [Material adicionalEntrega: 17 de Febrero
  • Práctica 2.4 (obligatoria): Juego de la vida [Enunciado] [Código base] --> ampliado al 16 de Marzo
  • Práctica 2.5 (sólo para aquellos alumnos que elijan esta asignatura como completa): Rasterización básica por software [Enunciado] [Código baseEntrega: 3 de Abril
Prácticas del segundo bloque (CUDA):
  • Por determinar (mirad en Campus Virtual)

EJERCICIOS OPCIONALES

El listado siguiente se detalla sólo a título orientativo (los ejercicios pueden cambiar en función del ritmo de la clase y sus intereses):

  • Ejercicio 0: Describe un aplicación paralela [Enunciado]
  • Ejercicio 0.5: Lectura del manual de nVIDIA de Cg 2.0
Esta práctica implica sólo la lectura del manual, por lo que no tendrá lugar en el laboratorioLectura del capítulo ”Introduction to Cg language” y “Cg Standard Library Functions” del CgToolkit User’s Manual de nVIDIA, esto es, sólo las 42 primeras páginas del manual.
El manual es muy extenso, y el paquete de desarrollo de nVIDIA viene acompañado de una documentación muy detallada, pero para las prácticas iniciales es suficiente con leer estos dos capítulos
.
  • Ejercicio 2.1: Identificación de elementos de un vector en CUDA [PDF] [fuente] [transparencias de clase]
  • Ejercicio 2.2: Suma de vectores en CUDA [PDF] [fuente]
  • Ejercicio 2.3: Multiplicación naïve de matrices en CUDA [PDF] [fuente] [ matrices ] (resuelto en clase)
  • Ejercicio 2.4: Operación de reducción de vectores en CUDA [PDF] [fuente]
  • Ejercicio 2.5: Multiplicación de matrices mediante particionado (tiling) [PDF] [fuente]
  • Ejercicio 2.6: Multiplicación optimizada de matrices densas en CUDA [PDF] [fuente][matrices] (resuelto en clase)
  • Ejercicio 2.8: Traducción de código de CUDA a OpenCL (Sólo para quienes cursen la asignatura completa) [Enunciado]
  • Más ejercicios de CUDA y OpenCL por determinar

 

PROYECTO DE LA ASIGNATURA:

  • Cada grupo (pareja) tendrá que realizar un proyecto fuertemente relacionado con la arquitectura de los procesadores de las tarjetas gráficas
  • Este año se propone un proyecto genérico para todos los grupos, relacionado con mapeado de fotones en tiempo real con CUDA y OptiX.
  • También es posible proponer otros proyectos que tengan una dificultad y relación con la asignatura equivalentes, tanto de carácter gráfico como de computación de altas prestaciones.
    • Para ello habrá de realizarse un anteproyecto especial
  • Para más detalles, véase la sección correspondiente en las transparencias de presentación de la asignatura

ANTEPROYECTO

El anteproyecto está concebido como una primera toma de contacto con el futuro proyecto de la asignatura, de manera que la curva de esfuerzo en su realización sea más suave y -sobretodo- que empecéis a trabajar en el tema elegido con suficiente margen para que os de tiempo.
Se propone un proyecto por defecto que está centrado en mapeado de fotones en tiempo real, pero es posible realizar un proyecto alternativo siempre que tenga suficiente relación con la asignatura (y, por tanto, con la arquitectura de procesadores gráficos).


Según la normativa que se expuso el primer día de clase, los proyectos y anteproyectos se pueden realizar por parejas, su evaluación tiene una contribución significativa en la nota final y son obligatorios.

 

Plazo de entrega

Deadline: por determinar

Presentación del trabajo de investigación: por determinar

Anteproyecto "alternativo"

Dado que el planteamiento de esta asignatura da pie a que los alumnos sean creativos, es posible elegir y/o proponer un proyecto diferente al propuesto por defecto, siempre que tenga relación suficiente con las arquitecturas vistas en clase. En este segundo caso, el anteproyecto tiene una función especial además de la mencionada anteriormente: que los profesores os podamos orientar y establecer unos criterios mínimos y máximos de exigencia en la realización del proyecto (no sería la primera vez que un grupo trata de abordar un proyecto demasiado ambicioso)

Ejemplos de posibles proyectos:

Lista con los proyectos propuestos [PDF]
  • OptiX
  • Renderizado de Pelo
  • Shaders de Geometría
  • Cluster de GPUs en el laboratorio
  • Efectos gráficos
  • Traza de rayos en CUDA
  • etc...

En cuanto a los posibles efectos gráficos podéis consultar en los libros de las series GPU Gems, shaderX... para sacar ideas.

Informe

En este caso el anteproyecto ha de presentarse como un informe en el que se indiquen claramente:
  • una introducción en la que nos expliqueís la motivación por la cual se ha elegido el tema y porqué lo veis interesante
  • los problemas potenciales a los que os vais a enfrentar al escribir / modificar el código en la realización del proyecto
  • cómo los habéis identificado
  • el desglose de las tareas previstas a realizar
  • las referencias que se han consultado
El informe tendrá una extensión aproximada entre 5 y 10 páginas

Plazo de entrega

Deadline: por determinar

Si el anteproyecto alternativo entregado no cumple ciertos mínimos será necesario rehacerlo o bien presentar lo exigido en el anteproyecto por defecto.

 

TRANSPARENCIAS:

Parte obligatoria:

Tema 0: Presentación [PDF] (puede tener algunas erratas)

Primer bloque (introducción):

Tema 1.1: Introducción a las Arquitecturas Masivamente Paralelas  [PDF]
Tema 1.2: Modelos de programación paralela y estrategias de diseño [PDF]

Segundo bloque (cauce gráfico):

Tema 2.1: Arquitecturas streaming y cauce gráfico clásico [PDF]
Tema 2.2-2.4: Etapa de Transformación e implementación en hardware:

Tema 2.5: Etapa de Rasterizado e implementación en hardware [PDF]
Tema 2.6: Etapa de Sombreado e implementación en hardware [PDF] [PDF2]
Tema 2.7: Evolución de la memoria de vídeo y la comunicación de la tarjeta gráfica [PDF]
Tema 2.8: Consideraciones en el diseño de la arquitectura del chip gráficos [PDF-4.2]
Tema 2.9: Compute Shaders en el cauce gráfico [PDF]

Tercer bloque (computación genérica):

Tema 3.1: Origen e introducción a la Arquitectura Unificada [PDF-14]
Tema 3.2: La doble personalidad de la GPU: CUDA modelo de programación y jerarquía de memoria [PDF]
Tema 3.3: Arquitectura unificada en detalle. Caso de estudio: GeForce 8800 GTX [PDF]
Tema 3.4: Optimizaciones en CUDA y Máquina Virtual PTX [PDF]
Tema 3.5: Técnicas algorítmicas avanzadas en CUDA + Fermi y Kepler [PDF][Apéndice]
Tema 3.6: Librerías de medio / alto nivel [PDF]

Parte opcional (sólo se ha de cursar si se elige realizar la asignatura completa):

Tema 3.7: OpenCL [PDF]

 

Cuarto bloque (síntesis de gráficos mediante computación genérica):

Tema 4.1: Más allá de las APIs y el cauce gráfico: manycores [PDF]
Tema 4.2: Traza de rayos y caminos en GPU [PDF]
Tema 4.3: Computación en la nube, granjas de render e integración con GPUs [PDF]

EXÁMENES:

  • Dos: uno a mitad y otro a final del cuatrimestre acerca de los contenidos de la parte teórica de la asignatura y los conceptos que se han debido reforzar a través de los ejercicios prácticos.

BIBLIOGRAFÍA BÁSICA:

  • Programming Massivelly Parallel Processors, David Kirk y Wen-Mei Hwu. Ed. Morgan Kaufmann
  • CUDA by Example: An Introduction to General-Purpose GPU Programming, Jason Sanders y Edward Kandrot. Ed. Addison-Wesley Professional.
  • CUDA Application Design and Development. Rob Farber. Ed. Morgan Kaufmann;
  • Procesadores Gráficos. Manuel Ujaldón. Ciencia 3
  • GPU Gems 1. Radima Fernando. Addison Wesley (versión online gratuita)
  • GPU Gems 2. Matt Pharr. Addison Wesley (versión online gratuita)
  • GPU Gems 3. Hubert Nguyen. Addison Wesley (versión online gratuita)
  • The Cg Tutorial: The Definitive Guide to Programmable Real-Time Graphics. R. Fernando and M. Kilgard. Addison-Wesley, 2003
  • Stream Processor Architecture Scott Rixner Springer
  • OpenGL Shading Language (2nd Edition) Randi J. RostAddison-Wesley
  • Advanced Lighting and materials with Shaders Kelly Dempski y Emmanuel Viale Wordware Publising, Inc.
  • Manuales de nVIDIA
  • Real Time Rendering. Tomas Akenine-Möller. 2nd Edition. A.K. Peters
  • 3D computer graphics: a mathematical introduction with OpenGL Buss, S.R. Cambridge U. Press
  • Interactive computer graphics: A top-down approach with OpenGL. Angel, E. Addison Wesley

BIBLIOGRAFÍA AVANZADA:

  • GPU Gems, edited by Randima Fernando, GPU Gems 2, edited by Matthew Pharr, and GPU Gems 3, edited by Hubert Nguyen, Addison-Wesley, 2004, 2005, 2007. Fine edited collections of articles on interactive graphics in all-color books. These books were edited by NVIDIA employees, so there is a high level of NVIDIA participation. See the respective websites for the first, second, and third books for sample articles and more information.
  • ShaderX6, ShaderX5, ShaderX4, and ShaderX3, (and out of print: ShaderX2: Introductions and Tutorials, ShaderX2: Tips and Tricks). edited by Wolfgang Engel et al. These books are also edited collections of articles dealing with new graphics techniques that use vertex and pixel shaders. Some are nuts and bolts practical, others are about new techniques in development. See the ShaderX6, ShaderX5, ShaderX4, ShaderX3, ShaderX2, and ShaderX websites for more information, samples, etc.
  • Game Programming Gems, Game Programming Gems 2, and Game Programming Gems 3 by Mark DeLoura (Editor), Charles River Media, 2000, 2001, 2002. A wide range of Graphics Gems-like articles (with which it is not affiliated), it has many articles on subjects relevant to real-time rendering. There are tidbits on intersection calculations, collision detection, LOD and progressive meshes, texture mapping effects, sprite effects, shadows, vertex and pixel shader tricks, and much more. There is also material on modelling, skinning, and animation. About a quarter or more of each book is on artificial intelligence and other topics, so the focus is not entirely on computer graphics.
  • Graphics Gems series, Academic Press. Old, but with useful algorithms. A series of 5 books with a wide range of algorithms for all sorts of areas of computer graphics; visit the web site for a listing of articles and for the latest code.

EVALUACIÓN:

Los detalles de la evaluación pueden consultarse en las transparencias de la presentación de la asignatura.

LECTURAS RECOMENDADAS:

Recursos complementarios para la realización de prácticas y proyectos:

Las prácticas y proyectos de este curso de Procesadores Gráficos se basarán en OpenGL, la API gráfica de referencia en la industria, y los lenguaje C, Cg y CUDA. Aunque es posible realizar todo lo que se propone con otras librerías (como DirectX) no lo recomendamos por las siguientes razones:

- No tenemos a nuestra disposición software base en DirectX para hacerlas, con lo que tendrían que realizarse desde cero.

- No hay apenas proyectos de software libre con los que ilustrar los conceptos que deseamos resaltar en esta asignatura.

- Es un conjunto de librerías de muy alto nivel, bajar a la “comunicación con el HW” implica un dominio de DirectX que nos desenfocaría del auténtico objetivo de esta asignatura.

o DirectX homepage

o DirectX Shader Reference

o "DirectX Next"

-DirectX se enseña en otras asignaturas (como Tecnologías de Juegos)

-Además de didáctico, OpenGL es muy demandado por la industria.

Aquellos alumnos que no estén familiarizados con OpenGL deberían echar un vistazo a los tutoriales de producciones NeHE, en unas semanas –en función del nivel general de la clase- se hará una jornada de repaso de OpenGL a bajo nivel ó se visualiazrá un video tutorial.

 

El nuevo entorno de programación de nVIDIA y las herramientas de soporte a CUDA pueden ser un interesante punto de partida para medidas de rendimiento (benchmarks) y proyectos. Así como el sistema que propone ATI-AMD: Close To Metal (requiere registro) y OpenCL (AMD, nVIDIA, Intel)

 

Recursos específicos que vais a necesitar para realizar prácticas y proyectos:

 

1) Visual Studio C++

o La Universidad Rey Juan Carlos tiene un acuerdo con Microsoft por el que tenemos una licencia de Campus. También lo podéis descargar de forma gratuita desde Microsoft DreamSpark por estar matriculados en la URJC.

2) DirectX SDK

o Descarga la versión de Junio 2010

o DirectX Developer Center

3) nVIDIA SDK

o Descarga la versión 11

4) Cg Toolkit 3.1

o Descarga

o Manual de Cg (versión 1.5, un poco obsoleto, pero nos vale)

5) Cg Tutorial

o Libro y entorno sencillo de programación

6) CUDA 5

o No olvides descargar e instalar el driver de desarrollo

o Descarga el entorno y el propio sistema de desarrollo de CUDA

 

- El OpenGL Utility Toolkit: GLUT

Este conjunto de utilidades nos permite realizar tareas que conciernen al sistema operativo, y es necesario para los paquetes mencionados a continuación.

o Descarga la versión de Windows

o Guía de instalación

· Ejemplos del libro Rojo de OpenGL (código en GLSL)

- BrookGPU

Brook para GPUs es un compilador y un sistema runtime para el lenguaje de programación de arquitecturas de streaming que está en beta abierta (y poco abandonado con la futura aparición de AMD Stream)

- GPUBench

GPUBench es un sistema de análisis y medida de prestaciones (benchmarking) orientado a los procesadores gráficos programables de las tarjetas gráficas, está particularmente enfocado a las áreas de mayor interés en GPGPU. Es un proyecto de código libre de la Universidad de Stanford.

- GfxBench

GfxBench es bastante más antiguo, de hecho fue el proyecto que más adelante daría lugar a GPUBench, y fue escrito por Ian Buck. Utiliza OpenGL y GLUT para medir la tasa de relleno y tasa de triángulos de un sisteam gráfico.

o GfxBench.zip (Windows)

o GfxBench.tar.gz (Unix / Linux)

- GLTrace and GLSim

o GLSim es una versión instrumentada de OpenGL. Fue escrita por Ian Buack y Kekoa Proudfoot para que los estudiantes de Stanford pudieran estudiar más profundamente el cauce gráfico en OpenGL.

o GLTrace es un paquete, de Kekoa Proudfoot que permite guardar y repasar trazas de llamadas a OpenGL.

o Página del proyecto desde la que se pueden descargar.

- Mesa

Otro punto inicial para los proyectos en los que se hagan modificaciones al cauce gráfico tradicional podría ser la librería Mesa, proyecto de software libre que lidera Brian Paul (de hecho es la implementación de OpenGL más antigua y asentada).

- Chromium

Chromium es un excelente entorno de trababjo para renderizado en clusters de estaciones de trabajo que puede server de inspiración para algunos proyectos.

o Página del proyecto.

- NVPerfHUD

Es una herramienta imprescindible (y gratuita) de nVIDIA, que ayuda a encontrar toda clase de cuellos de botella mediante una interfaz que se adapta sobre cualquiera aplicación Direct3D. Hace estadísticas y muestra gráficas para poder monitorizar el progreso y carga del sistema gráfico en tiempo real.

- GLEW (GL extension Wrangler)

· Es un buen recurso cuando utilizamos extensions de openGL en Windows

o Página del proyecto

- Qsilver, a graphics hardware simulation framework

· Qsilver, fue publicado en un artículo de la conferencia Graphics Hardware de 2004 (SIGGRAPH), como propuesta de un “entorno de trabajo y simulación flexible para arquitecturas gráficas”.

o Para su descarga es necesario rellenar previamente el siguiente formulario.

- gDEBugger, an OpenGL debugger

gDEBugger es un debugger interactive para OpenGL, que te muestra todo tipo de detalles del estado de OpenGL, la pila de llamadas y la relación con el código fuente. Actualmente es grauito.

 

- glIntercept

· glIntercept vuelca todos los shaders que se mandan a la tarjeta gráfica en forma de ficheros de texto, así como la información de todas las texturas (en ficheros con un formato gráfico) y da y permite hacer una traza de las llamadas a OpenGL.

ENLACES INTERESANTES:

NOVEDADES

 

SUGERENCIAS

Nos interesa mucho la opinión de los alumnos de la asignatura.