Inicio

Semestre 2025-10

Descripción

Este curso estudia los conceptos, tecnologías y buenas prácticas de la computación visual interactiva, entendida como la generación de gráficas por computador en arquitecturas con GPUs modernas. En la primera parte del curso se estudian conceptos del pipeline tradicional como modelaje, sistemas de coordenadas, transformadas, cámara, proyecciones, color, textura e iluminación. Se estudian éstos conceptos por medio de Diligent, un framework en C++ que puede usar por debajo diversas librerías gráficas, como Vulkan, Metal, OpenGL, WebGPU, o WebGL. En la segunda parte del curso se estudia el paradigma de ray tracing, inicialmente en CPU y luego desde el soporte actual en algunas librerías gráficas. Se estudian ejemplos de buenas prácticas, para comprender mejor la aplicación de conceptos y tecnologías.

Objetivos

El objetivo principal es que el estudiante sea capaz de entender y utilizar los conceptos de la computación visual interactiva en la generación de gráficas por computador en un lenguaje de programación muy utilizado en la industria de los videojuegos.

Los objetivos específicos están dirigidos a:

  • Conocer y aplicar los conceptos básicos de programación de gráficas por computador: modelaje, sistemas de coordenadas, transformadas, animación, cámara, proyecciones, color, textura e iluminación.
  • Entender ejemplos publicados en la web en el lenguaje escogido.
  • Conocer y aplicar los conceptos básicos de interacción con gráficas por computador.
  • Conocer y aplicar los conceptos básicos de programación de gráficas con las nuevas tarjetas gráficas que soportan real time ray tracing.

Metodología

El cubrimiento de los temas se desarrollará a través de las siguientes actividades:

  • Presentación de conceptos y su evolución (en clase)
  • Lectura sobre cada concepto, con comprobación de lectura y discusión en clase
  • Revisión de ejemplos en clase
  • Desarrollo de ejercicios semanales
  • Desarrollo de un proyecto final individual.

Para desarrollar esta metodología, se espera que el estudiante asista a clase y le dedique en total 9h de trabajo individual cada semana. En el cronograma del curso se sugiere 3h de trabajo individual entre martes y miércoles y 6h de miércoles a martes de la siguiente semana, pero es solo una sugerencia.

Evaluación

Se aplican las reglas de la Universidad con respecto a asistencia a clase. Las notas del curso tienen los siguientes porcentajes:

Porcentaje Actividad(es) a evaluar
20% Comprobaciones de lectura
20% Cambios a ejemplos
30% Ejercicios
30% Proyecto final

El proyecto de profundización representa un bono de un 10% sobre la nota final del curso.

Ejercicios Semanales

En cada clase se desarrolla una actividad que busca afianzar los conceptos. Se debe publicar el código en línea y un video corto (no mas de 10 segundos) con el resultado obtenido. Se sugiere publicar el código como un repositorio en github e incluir una descripción e instrucciones de ejecución en la página de github.

Calendario global del curso

Vea el tab “semanas” en este link.

Conocimientos previos

Se espera que el estudiante haya visto el curso de estructuras de datos, y pueda aprender conceptos nuevos de un lenguaje de programación de bajo nivel como C++.

Bibliografía

En el programa del curso se incluyen URLs para cada uno de los temas del curso. Usaremos las siguientes referencias, disponibles en línea :

  • Diligent Graphics. Disponible en: https://diligentgraphics.com
  • Marschner, S., & Shirley, P. (2022). Fundamentals of computer graphics (Fifth edition.). CRC Press/Taylor and Francis Group. Disponible en: https://uniandes.primo.exlibrisgroup.com/permalink/57U_UDLA/1sib6to/alma991005648473007681
  • Lippman, S. B., Lajoie, J., & Moo, B. E. (2013). C++ primer (Fifth edition.). Addison-Wesley. Disponible en: https://uniandes.primo.exlibrisgroup.com/permalink/57U_UDLA/1sib6to/alma991003740109707681
  • Peter Shirley, Trevor David Black, Steve Hollasch (2018). Ray Tracing in One Weekend. Disponible en: https://raytracing.github.io/books/RayTracingInOneWeekend.html

Proyectos Seleccionados