I.02 Cauce Gráfico
I.02 Cauce Gráfico
I.02 Cauce Gráfico
El cauce gráfico
Módulo I: Introducción al cauce
gráfico
Introducción
El etapas conceptuales*
El etapas funcionales*
Antialiasing
Implementación del cauce gráfico (etapas del
cauce – pipeline stages*)
Transformaciones geométricas
La geometría afín y la geometría proyectiva son las herramientas
básicas que nos permiten manipular los elementos de la escena
Paralelismo:
Segmentación: las tarjetas implementan un proceso de renderizado
segmentado
Paralelismo SIMD.
Múltiples unidades de proceso realizando la misma operación con
distintos datos
Gracias a que utilizamos un algoritmo de iluminación local, hay pocas
dependencias entre los datos y el problema es fácilmente paralelizable
Introducción
El etapas conceptuales*
El etapas funcionales*
Antialiasing
Implementación del cauce gráfico (etapas del
cauce – pipeline stages*)
Introducción
El etapas conceptuales*
El etapas funcionales*
Antialiasing
Implementación del cauce gráfico (etapas del
cauce – pipeline stages*)
https://www.opengl.org/wiki/Primitive
Otras tareas:
Animación cinemática
Simulación física
Información de los dispositivos de entrada:
Teclados, HMD, Hápticos, Joysticks
1. Transformaciones
2. Proyección
3. Iluminación Geometría
4. Ensamblado
5. Visibilidad (I)
6. Rasterizado (Escaneado)
7. Sombreado Rasterizado
8. Visibilidad (II)
9. Fusionado (Merge)
10. (Post-proceso)
Entrada
Vértices de las primitivas y sus propiedades: posición, color,
normal, coordenadas de textura…
No las primitivas en sí
Se procesa cada vértice de forma independiente
Etapa programable
Función incluida en una etapa programable
Cámara
Operaciones
Se transforman los vértices de la malla de coordenadas del
objeto (coordenadas en las que fueron modelados) a
coordenadas del mundo virtual. Matriz MODEL
Se transforma de coordenadas del mundo virtual a coordenadas
de la cámara (la cámara en el origen, mirando hacia las Z
negativas y su vector UP alineado con el eje Y). Matriz VIEW
Las operaciones anteriores se pueden realizar en un solo paso.
Matriz MODELVIEW
Se transforman las normales asociadas a los vértices de
coordenadas del modelo a coordenadas de la cámara. Matriz
NORMAL
NORMAL = (MODELVIEW-1) T
Se transforman otros vectores y posiciones asociados al vértice a
coordenadas de la cámara, en caso de que los haya. Por ejemplo,
las tangentes. ¿Qué matriz aplicarías?
Se procesan y se crean otras propiedades asociadas a los
vértices. Por ejemplo, las coordenadas de textura
Up
vector
Look
vector
Position
Entrada:
Las posiciones de los vértices de la etapa anterior en coordenadas de
la cámara
Función incluida en una etapa programable
¿Cómo proyectamos los vértices?
Píxel
p(x,y,z)
Cámara
P(X,Y)
Definir el Viewport
Pasar de coordenadas normalizadas a coordenadas del
frame buffer (píxeles).
Vector normal
Vector de vista
Distintos parámetros de
configuración
Componente ambiental,
especular, difusa
Posición, orientación
Ángulo de apertura
Atenuación
…
Vértices no visibles
Cámara
*”Real-time rendering”
Entrada:
Primitivas: vértices de la primitiva, más la información asociada a
dichos vértices
Se calculan los fragmentos de los que se compone la
primitiva. El rasterizado depende de la primitiva
Fragmentos: posición de un píxel de pantalla asociada una primitiva +
información asociada
Por lo tanto:
Hay que calcular las posiciones de pantalla que ocupa la primitiva (podríamos
hablar de píxeles, pero un fragmento es mucho más - además varios fragmentos
pueden estar asociados al mismo píxel)
Información específica del fragmento, por ejemplo, sus coordenadas de textura, su
normal, su color…
La información asociada a un fragmento viene determinada por las salidas de la etapa de
transformación
Se calculan interpolando a partir de la información asociada a los vértices de la primitiva
GRADO EN DISEÑO Y DESARROLLO DE VIDEOJUEGOS
6. Rasterizado
Informática Gráfica
Entrada: fragmentos
Salidas:
Color o colores de fragmento
Distancia a la cámara (opcional)
Se calcula el color del fragmento con los datos interpolados por el rasterizador
Se accede a las texturas
Una de las etapas más complejas debido al gran número de píxeles que hay por
pantalla. Recuerda un píxel puede tener asociado varios fragmentos
z1
z1 < z2
z
Motion blur
Puede generarse con múltiples pasadas
Gaussian blur
Utiliza el buffer
de color y el de
profundidad
Cartoon render
Introducción
El etapas conceptuales*
El etapas funcionales*
Antialiasing
Implementación del cauce gráfico (etapas del
cauce – pipeline stages*)
Aliasing
Trabajamos con imágenes discretas
Frecuencia de muestreo insuficiente. No
podemos recuperar la señal original
Teorema del muestreo perfecto de Nyquist
Efectos: las fronteras de las primitivas aparecen
escalonadas, falta de continuidad en objetos
lejanos
Son típicos los problemas con sombras y texturas
pero los trataremos en un tema a parte
GRADO EN DISEÑO Y DESARROLLO DE VIDEOJUEGOS
Dificultades: aliasing
Informática Gráfica
Soluciones (Antialiasing)
Supersampling
Partimos de una imagen con mayor resolución y reducimos su
tamaño combinando la información de la imagen de mayor
resolución
Soluciones (Antialiasing)
Multisampling
Repetir el rasterizado desplazando la rejilla (x2, x4…)
Fusionar los distintos resultados
Soluciones (Antialiasing)
Filtros morfológicos (GoW III) (Post-proceso)
Detectar y corregir estos bordes en sierra
http://www.iryoku.com/mlaa/
Introducción
El etapas conceptuales*
El etapas funcionales*
Antialiasing
Implementación del cauce gráfico (etapas del
cauce – pipeline stages*)
a b b1 c d e g
f
https://www.opengl.org/wiki/Rendering_Pipeline_Overview