Conceptos Clave y Algoritmos en Computación Gráfica

Fundamentos de Computación Gráfica

Padre de la computación gráfica: Ivan Sutherland

OpenGL basado en el API: Iris GL

Dispositivos de Visualización

Dispositivos display vistos en clase: LCD, LED – OLED – AMOLED, Plasma y Retina Display

Ventajas: [Información pendiente]

Monitor CRT

Dibujado de un frame:

Z

  • De A-B: Línea de barrido o barrido horizontal.
  • De B-C: Retorno Horizontal.
  • De D-A: Retorno Vertical.

Frecuencia de refresco mínimo CRT: 60Hz

Unidad mínima de representación gráfica: Pixel

DAC: Digital-to-Analog Converter

APIs Gráficas y Shaders

OpenGL se desarrolló en: 1992 por Silicon Graphics Inc.

Competencia directa de OpenGL: DirectX Direct3D

Ventaja de Direct3D sobre OpenGL: No requiere buscar librerías adicionales para manejo de multimedia, interfaces, red y demás módulos.

Modelos de Sombreado (Shading Models)

  1. GLSL: Ligado a OpenGL
  2. HLSL: Microsoft, ligado a DirectX
  3. CG: Nvidia, compatible con OpenGL y con DirectX

Tipos de Shaders

  1. Vertex Shader
  2. Fragment Shader
  3. Geometry Shader
  4. Pixel Shader

Etapas del Pipeline de Renderizado: [Información pendiente]

Proyecciones Gráficas

¿Diferencia entre proyección en perspectiva y proyección ortogonal?

  • Proyección en perspectiva: Para ver en 3D. La posición del observador se encuentra dentro de la escena y el volumen de visualización es un frustum. No se sabe con certeza el tamaño de los objetos por la profundidad, usa la perspectiva. Se utiliza en recorridos virtuales y videojuegos. Toma en consideración la profundidad de los objetos.
  • Proyección ortogonal: Para ver en 2D. Las líneas de proyección son paralelas entre sí y ortogonales al plano de proyección. Se considera que el observador está en el infinito y no se toma en cuenta la profundidad.

Cinco comandos de OpenGL (Perspectiva y Cámara): glPerspective / glFrustum / glOrtho / glOrtho2D / glLookAt

Historia de la Computación Gráfica

  • Trabajaba para Lucas Film y Pixar: Loren Carpenter
  • Tesis Doctoral de Ivan Sutherland: Sketchpad
  • Primer videojuego que se creó: OXO
  • Creó parte de la documentación de OpenGL 1.0: Mark Segal
  • Surge la película de Toy Story y Play Station 1: 1995
  • Primer videojuego en 3D: Doom
  • 1ª computadora de propósito general (1946): ENIAC
  • 1ª computadora con tubos de rayos catódicos (1950): Whirlwind (simulaba vuelos de entrenamiento)
  • 1er sistema en emplear lápiz óptico (1950): SAGE
  • 1er videojuego (1952): OXO (tesis doctoral de Alexander Sandy Douglas)
  • 1ª computadora con memoria (1952): EDSAC
  • 1961: Primer programa interactivo: SPACEWAR
  • 1er sistema para manipulación directa de objetos gráficos (1963): Sketchpad (tesis doctoral de Ivan Sutherland, es el precursor de CAD)
  • Padre de la Computación Gráfica: Ivan Sutherland
  • 1ª computadora exclusiva para videojuegos (1971): Atari
  • 1er juego de arcade (1972): Pong
  • Logra fotorrealismo en películas: RenderMan (ejem: Terminator 2, Forrest Gump)
  • 1995: Surge PlayStation y Toy Story
  • GPGPU (2008): Unidades de procesamiento lógico general. Gráficos y cálculos físicos.
  • (1992) OpenGL basado en: Iris GL
  • Supercomputadora UNAM: Miztli

Tecnologías de Procesamiento Paralelo

Tecnologías de procesamiento en paralelo: CUDA y OpenCL

Tecnologías de tarjetas en paralelo: SLI y Crossfire

Año en que Nvidia lanza la primera tarjeta con GPU: 1999

Afirmaciones sobre Computación Gráfica

  • Los paquetes de propósito específico proporcionan una colección de funciones gráficas que se pueden implementar dentro de los lenguajes de programación ______ FALSO
  • OpenGL solo cuenta con funciones de dibujo __________ VERDADERO
  • Direct3D actualmente se encarga de dibujos de gráficos 2D _____ FALSO
  • Los shaders son efectos de iluminación y sombreado procesados por el CPU___ FALSO
  • Debemos considerar la tarjeta gráfica, lenguaje de sombreado, versión de modelo y lenguaje de programación usado cuando queremos desarrollar con shaders ____ VERDADERO

Detalles de Tecnologías de Visualización

Explique la función del cristal líquido en los dispositivos de despliegue de LCD y dibuje el diagrama general indicando las partes que lo forman: [Información pendiente]

Función del cristal líquido en LCD: La sustancia líquida atrapada entre 2 placas de vidrio, haciendo que al aplicar una corriente eléctrica a una zona específica, esta se vuelva opaca y contraste con la iluminación CCFL trasera.

Mencione 3 desventajas de la tecnología AMOLED: [Información pendiente]

  • Menor brillo (problemas al verlo a la luz del sol)
  • Producción más cara
  • Menor periodo de vida

Se tiene un monitor con una resolución de 1920 x 1080, ¿qué cantidad de memoria (en bits) se requiere por pixel, para que cada uno de los pixeles del monitor pueda seleccionar entre 1024 colores? [Información pendiente]

Ventajas de OLED sobre otras tecnologías:

  • Ángulos de visión casi perfectos
  • Blancos más brillantes
  • La pantalla AMOLED se ve mejor en exteriores porque tiene mayor contraste
  • Las pantallas Retina tienen una densidad de píxeles tan alta que los píxeles individuales no son perceptibles a simple vista a una distancia de visualización normal
  • IPS ofrece un ángulo de visión mayor
  • PLS consume menos energía
  • En la vista de perspectiva podemos apreciar que los objetos tienen diferentes tamaños dependiendo de las distancias a las que se encuentran uno de otro
  • En la vista ortogonal no podemos notar la diferencia de tamaño independientemente de la distancia entre los objetos

Algoritmos de Recorte (Clipping)

Cohen-Sutherland

  1. Dividir escenario en 9 regiones.
  2. Asignar número binario a cada región (dan el código para la asignación).
  3. Operar los puntos extremos de cada línea con OR.

Si OR = 0se dibuja completa y si no:

  1. Operar AND:
    1. Si AND = 0se recorta
    2. Si AND ≠ 0 → se descarta
  2. Para obtener puntos de recorte se necesitan los valores de la línea y los datos de la ventana.

cahZrAAAAAElFTkSuQmCC

FBRmfqZ4zEDPwGzAwYp+CTw4WAAAAAElFTkSuQmC

1jZ3Qw8g9jjUB2LE66TFzgh99fUJ1TgL5gwYEPs7

seg+9qBP+GtVQoYzR60AAAAAElFTkSuQmCC

gA0bBPs1R8NVgAAAABJRU5ErkJggg==

5ZvQzrB+ANcfwE+cBR12I6uNwAAAABJRU5ErkJgg

AcHiDlL0H5cxQAAAABJRU5ErkJggg==

pFfagd8541H+Qgyp+QAAAABJRU5ErkJggg==

GDx7Bv4BF0tcrrvoExkAAAAASUVORK5CYII=

seg+9qBP+GtVQoYzR60AAAAAElFTkSuQmCC

rVI7U+vSrcNjzZ9OtVQb9zK0OXk+zB2c553f9+Uv

dEKEAAAAAElFTkSuQmCC

Liang-Barsky

Datos:

  • Vértices de la línea a recortar:
    • Pi (Pix, Piy)
    • Pf (Pfx, Pfy)
  • Xizq, Xder, Ymín, Ymáx de la ventana de recorte.

Solución:

  1. Obtener los vértices de la ventana de recorte V0, V1, V2 y V3 en sentido antihorario y comenzando con el inferior izquierdo.
  2. Encontrar posibles puntos de recorte en cada límite:
  1. Límite izquierdo (NOTA: Pizqx = Xizq):
    • Pizqx = Pix + Uizq (Pfx – Pix) → encontramos Uizq y si Uizq ∈ [0, 1]:
    • Pizqy = Piy + Uizq (Pfy – Piy) → encontramos Pizqy

Posible punto de recorte: Pizq (Pizqx, Pizqy)

  1. Límite derecho (NOTA: Pderx = Xder):
    • Pderx = Pix + Uder (Pfx – Pix) → encontramos Uder y si Uder ∈ [0, 1]:
    • Pdery = Piy + Uder (Pfy – Piy) → encontramos Pdery

Posible punto de recorte: Pder (Pderx, Pdery)

  1. Para Límite superior (NOTA: Psupy = Ymáx):
    • Psupy = Piy + Usup (Pfy – Piy) → encontramos Usup y si Usup ∈ [0, 1]:
    • Psupx = Pix + Usup (Pfx – Pix) → encontramos Psupx

Posible punto de recorte: Psup (Psupx, Psupy)

  1. Para Límite inferior (NOTA: Pinfy = Ymín):
    • Pinfy = Piy + Uinf (Pfy – Piy) → encontramos Uinf y si Uinf ∈ [0, 1]:
    • Pinfx = Pix + Uinf (Pfx – Pix) → encontramos Pinfx

Posible punto de recorte: Pinf (Pinfx, Pinfy)

NOTA: Si las pendientes Uizq, Uder, Usup y Uinf no ∈ [0, 1], no hay punto posible de recorte.

  1. Si Pizq ∈ [Xizq, Xder] && [Yinf, Ysup] → es punto de recorte.

Si Pder ∈ [Xizq, Xder] && [Yinf, Ysup] → es punto de recorte.

Si Psup ∈ [Xizq, Xder] && [Yinf, Ysup] → es punto de recorte.

Si Pinf ∈ [Xizq, Xder] && [Yinf, Ysup] → es punto de recorte.

Algoritmo de Trazado de Líneas

Bresenham

  1. Pi y Pf.
  2. Restricciones:
    • Xf > Xi
    • 0 ≤ m ≤ 1
    • Xi, Yi, Xf, Yf ∈ &mathbb{R}^+

Si las tres restricciones se cumplen, se procede a:

  1. Dibujar (X0, Y0) = (Xi, Yi) y calcular P0 = 2ΔY – ΔX.
    1. Si Pj > 0, dibujar: (Xj+1, Yj+1)

Pj+1 = Pj + 2ΔY – 2ΔX

  1. Si Pj ≤ 0, dibujar: (Xj+1, Yj)

Pj+1 = Pj + 2ΔY

NOTA: Si Pj = 0, asignar cualquiera de los dos casos, pero, si vuelve a quedar Pj = 0, volver a utilizar el mismo caso.

  1. Repetir hasta que Xj = Xf.

Caso Especial Bresenham (m < 0)

  1. Xf > Xi
  2. m < 0
  3. Xi, Yi, Xf, Yf ∈ &mathbb{R}^+

Si las tres restricciones se cumplen, se procede a:

  1. Dibujar (X0, Y0) = (Xi, Yi) y calcular P0 = 2ΔY – ΔX.
    1. Si Pj > 0, dibujar: (Xj+1, Yj – 1)

Pj+1 = Pj + 2ΔY – 2ΔX

  1. Si Pj ≤ 0, dibujar: (Xj+1, Yj)

Pj+1 = Pj + 2ΔY

  1. Repetir hasta que Xj = Xf.