Computación Gráfica: Representación y Manipulación Visual
La computación gráfica es el campo de la computación que estudia los métodos para representar y manipular contenido visual. Cubre el estudio de gráficos en 3D, 2D y el procesamiento digital de imágenes. Se enfoca en la parte matemática y computacional de la generación y procesamiento de imágenes.
Usos de la Computación Gráfica
Algunos usos de los gráficos por computadora son:
- Visualización científica
- Imágenes foto-realistas
- Realidad Virtual
- Realidad aumentada
- Interfaces de usuario
- Videojuegos
- Arte
- Procesamiento digital de imágenes
- Diseño asistido por computadora
- En el área de la salud: operaciones, rehabilitación (a partir de la realidad virtual), tomografías
Tabla Cronológica
1946 – ENIAC. Primera computadora de propósito general.
1950 – CRT, tubo de rayos catódicos y lápiz óptico.
1952 – OXO, uno de los primeros videojuegos.
1961 – Spacewar (juego). Steve Russell
1963 – Sketchpad, software de dibujo por Ivan Sutherland.
1966 – The Sword of Damocles, primer sistema de realidad virtual, así como desarrollo formal de las Interfaces Gráficas de Usuario.
1968 – Realidad virtual, imágenes 3D por Ivan Sutherland.
1970 – Grupo de trabajo especializado en gráficos por computadora. Jim Clark, posterior fundador de Silicon Graphics.
1971 – Microprocesador.
1972 – Atari y videojuego Pong.
1980 – SIGGRAPH (Special Interest Group on GRAPHics). Loren Carpenter por el video «Vol Libre».
1981 – Loren Carpenter ingresa a LucasFilm, y se crea la herramienta REYES (Render Everything You Ever Saw).
1986 – Pixar, y la herramienta RenderMan (API).
1992 – OpenGL.
1993 – Doom por ID Software.
1995 – Toy Story. PlayStation y Direct 3D.
1997 – Primer acelerador gráfico, 3Dfx Voodoo 3D.
1999 – Aparición del primer GPU (Graphics Processing Unit). Videojuego Final Fantasy VIII.
2001 – Película Final Fantasy: The Spirits Within, XBOX.
2003 – Shaders. «Física» en aplicaciones.
2005 – GPUs en paralelo.
2006 – GPGPU, General Purpose Graphic Processing.
2007 – Autodesk.
2009 – Integración GPU y CPU.
2010 – Interfaces de usuario «naturales».
2011 – Cloud processing.
2012 – Realidad Aumentada.
2014 – Physically Based Rendering.
2015 – Mantle, Vulcan y DirectX 12.
Representación de una Imagen
Una imagen se representa como un conjunto ordenado de pixeles, donde cada pixel tiene un valor que representa un color.
- Color verdadero: 3 bytes, 224 bytes.
- Mapa de bits: Conjunto de bits, profundidad del color, longitud de bits.
- Modelo RGB: Para representar colores en la memoria.
- RAMDAC: Convertidor A/D.
Sistemas de Escaneo
Raster Scan System: CPU, Memoria del sistema junto con Frame Buffer, Controlador de video (Bus del sistema debajo de memoria).
Random Scan System: CPU, Memoria del sistema, Controlador de video, Bus del sistema (debajo de memoria).
Conceptos Clave
Pixel: Unidad mínima de representación gráfica.
Resolución: Cantidad de pixeles que puede mostrar una pantalla y depende del S.O., CPU, GPU, programa y monitor. (RT = Rh X Rv)
Resolución nativa: Cantidad física de pixeles.
Recorridos: A-B barrido, B-C retorno horizontal, C-A Retorno vertical, A-D Frame o cuadro.
Frecuencia de refresco: Cantidad de cuadros que se dibujan en un segundo (Hz), 60 Hz recomendable, 24 Hz película y 3D 120 Hz (dibuja el doble, una para cada ojo).
Memoria por frame: Resolución * Profundidad de color = Resolución * Rh * Rv
Profundidad de color: Cantidad de memoria asignada a un pixel.
1 bit por pixel: 2 colores
2 bits por pixel: 4 colores
8 bits por pixel: 256 colores
24 bits (S.O. modernos): 16,777,216 colores
32 bits (Windows): 16,777,216 colores (si Full HD 1920*1080*32 bits). Entre más bits, más se acerca al color verdadero.
Tipos de GPUs
1. Integrados: Bajo rendimiento, bajo consumo de energía, toma parte de la memoria principal.
2. Discretos: Alto rendimiento, costo adicional, memoria dedicada (DDR5). El driver indica cuánto se dedica.
Conexiones en PC
VGA (Video Graphic Array) – analógica
DVI (Digital Visual Interface)
HDMI (High-Definition Multimedia Interface)
DisplayPort
Software Gráfico
Programas de propósito general: No requieren conocimientos de programación.
Paquetes de programación general: Se usan IDEs (ambientes de desarrollo integrado), herramientas que facilitan la creación de programas.
Contienen: Editor de texto, compiladores, debugger, varios lenguajes, control de versiones, interfaces gráficas.
Pipeline de Renderizado (Paralelo)
El pipeline es la forma en que se procesa la información geométrica: Coordenadas locales (transformación geométrica), Coordenadas universales (recorte o proyección), Coordenadas de visualización (puerto de vista), Coordenadas del dispositivo.
- Coordenadas locales o de modelo: Cada objeto tiene asociado un sistema de referencia.
- Coordenadas universales o de mundo: Todos los objetos del escenario utilizan un único sistema de referencia.
- Coordenadas de visualización: Selección de objetos a visualizar (recorte).
- Coordenadas del dispositivo: Asignación de pixeles para mostrar la imagen.
Transformación Ventana-Puerto de Vista
Consiste en seleccionar la parte del escenario a visualizar y llevarlo a la región disponible dentro del dispositivo de despliegue. Ejemplo: pantalla dividida, mapa.
Operación Recorte
El recorte (2D) separa la información de la ventana.
Ventana: Región rectangular alineada a los ejes de referencia que delimitan lo que deseamos ver. Se crea con: a) dos coordenadas o puntos opuestos, b) largo, ancho, punto de referencia.
Liang-Barsky: Utiliza la ecuación paramétrica de la línea.
Polígonos
Polígono: Figura cerrada delimitada por segmentos de línea, se requieren al menos 3 vértices (triángulo). Los vértices forman la «lista de vértices».
Regla de unión: Orden en que aparecen los vértices en la lista.
Tipos de Polígonos
- Convexos: Cada ángulo interno es menor a 180°, sus líneas límite solo se tocan en los vértices.
- Cóncavos: Al menos un ángulo interior mide más de 180°.
Operadores de glBegin()
GL_POINTS, GL_LINES, GL_LINE_STRIP, GL_LINE_LOOP, GL_TRIANGLES, GL_TRIANGLE_FAN, GL_TRIANGLE_STRIP, GL_QUADS, GL_POLYGON.
Primitivas y Modelado Geométrico
Primitivas: Elementos base: vértices, líneas, polígonos, cubos, cilindros, conos, esferas.
Modelado geométrico: Metodología para construir modelos a partir de elementos más sencillos.
Modelo: Representación de características de una entidad concreta o abstracta.
Transformaciones Geométricas
Operaciones que se aplican a un conjunto de vértices, como traslación, escala y rotación. Se trabaja con un espacio homogéneo.
Composición de transformaciones: Aplicar dos o más transformaciones al mismo conjunto de puntos.
Sen(α+θ) = sen(α)cos(θ) + cos(α)sen(θ)
Cos(α+θ) = cos(α)cos(θ) – sen(α)sen(θ)