Examen Final Flashcards
¿Qué es un conjunto ortonormal de vectores?
Son un conjunto de vectores perpendiculares normalizados que sirven como base de un sistema de referencia
La siguiente línea de código ejecuta un kernel ¿de qué manera?
kernelFun <(2, 1)> (a, b, c);
a) Ninguna de las opciones
b) 3 bloques de 1 thread
c) 1 thread y 2 bloques
d) 2 bloques y 1 thread
a) Ninguna de las opciones
El siguiente kernel se ejecutan con 1 blque y 10 threads. El tamaño de a, b, c es de 10. El arreglo a y b ambos tienen valores de 0 a 9 y el arreglo c está lleno de ceros. ¿Cuál será el resultado en c?
__global__ void addKernel(int *c, const int a, const intb)
{
int i = threadIdx.x;
if(i > 5)
c[i] = a[i] + b[i];
}
0, 0, 0, 0, 0, 0,12, 14, 18
¿A qué se refiere el frustrum usado por la cámara?
Son 6 planos que delimitan la información a proyectar en la cámara
Tiene forma de pirámide cuya punta se encuentra en la posición de la cámara
Contiene todo lo visible por la cámara
¿Cuál es el resultado del producto cruz entre 2 vectores?
Un vector perpendicular
El z-buffer guarda todas las distancias de todos los objetos en la escena 3D
Falso
CUDA es un lenguaje de programación
Falso
Los threads de CUDA toman la información de memoria RAM para procesar la información en GPU
Falso
Cuando un kernel de CUDA se ejecuta, el programa en CPU se congela esperando la terminación de la ejecución del kernel
Falso
La instrucción cudaMemcpy de CUDA reserva y copia memoria tanto de host a device como de device a host
Falso
El origen de los procesadores gráficos se remonta a la necesidad de procesar datos genéricos de manera rápida y eficiente
Falso
Los primeros procesadores gráficos permitían la iluminación global pero no era en tiempo real
Falso
El modelo de iluminación de Phong intenta representar de manera precisa el comportamiento de la luz. Su ejecución y calidad depende de la GPU con la que sea usado
Falso
En el experimento de la cámara de pinhole siempre usamos el plano de la imagen del fondo de la cada por ser más preciso que el frontal
Falso
En el experimento de la cámara de pinhole el tamaño del agujero en la caja determina el tamaño de la imagen
Falso
Propiedades de las coordenadas homogéneas
Utilizan una dimensión superior para realizar operaciones en dimensiones inferiores utilizando una única matriz
¿Qué receptores se encuentran al fondo de la retina?
Conos y bastones
Bastones
Más numerosos que los conos, responsables por la visión en condiciones de baja luz y no funcionan en luz brillante. No ven color
Conos
No responden en condiciones de baja luz, responsables por la visión de alta resolución y la percepción de color. Más centrados al centro
Punto ciego de nuestro ojo en la retina
Nervio óptico
Bases ortogonales
Si todos los vectores de dicho conjunto tienen norma igual a uno entonces son vectores ortonormales
¿Qué son las coordenadas homogéneas?
Se refieren a coordenadas usadas para expresar multiplicaciones y traslaciones en una sola operación. Esto, subiendo una dimensión
¿Qué es un conjunto ortonormal de vectores?
Sn un conjunto de vectores perpendiculares normalizados que sirven como base de un sistema de referencia
Sistema coordenado Euclidiano
Definido por 2 o 3 ejes ortogonales igualmente escalados (ortonormales)
El valor de cada una de las coordenadas corresponde a la proyección ortogonal del vector en dicho punto sobre el eje determinado
Cliping Space
Espacio siempre visto por la cámara, definido por 6 planos
Plano de Proyección
Pasar oficialmente de 3D a 2D.
La proporción del plano de proyección es llamado aspect ratio de la pantalla (ancho / altura)
¿En qué factores se basan la mayoría de los modelos de iluminación?
Componente Difuso
Componente Ambiental
Componente Especular
¿Cómo está compuesto el modelo de iluminación Phong?
Ambiente + Difuso + Especular = Phong
¿Qué se necesita para calcular Phong?
L normal de la superficie, el vector de dirección de la luz, el vector hacia el observador y el vector reflejado
Luz Ambiental
Componente que representa la luz producida por el entorno. Dispersión de todos los objetos.
Denota la intensidad de la luz al ambiente. Es la cantidad de luz del ambiente que es reflejada por una superficie
Reflexión difusa
Componente que representa la luz de una fuente que se dispersa por la superficie de los objetos.
Nace de la premisa de que la luz proveniente de cualquier fuente de iluminación es reflejada de manera uniforme en toda dirección
Reflexión especular
Componente que representa la luz que es reflejada directo al observador.
Objetos metálicos o pulidos
Forward Raytracing
Se sigue la trayectoria de un fotón hasta que choque con el plano de la imagen
Se podría lanzar únicamente los rayos que tengan potencial de interactuar con un pixel de la imagen, lo cual se complica a medida que se consideran diferentes materiales
Problemas del Forward Raytracing
Se asume que se va a encontrar por cada fotón un choque con el plano de la imagen a generar
Simular la interacción de todos los fotones que interactúan con los objetos de una escena no es una implementación práctica
Backward Raytracing
Proceso inverso al forward raytracing. En lugar de tratar de encontrar los rayos emitidos por la luz que choquen con el plano de la imagen, se busca desde la imagen el camino del rato que choca con cada pixel.
Se realiza una emisión de rayos. En su versión más simple se conoce como raycasting
Cada rayo emitido tendrá interacciones con diversos objetos, aplicando diversas condiciones dependiendo del objeto con el que se interactúa
Backward Raytracing - Rayos
No se busca únicamente las itneracciones directas de los rayos emitidos, si no también los rebotes y creaciones de nuevos rayos -> Raytracing
Backward Raytracing - Raycasting
Los rayos emitidos directamente desde la cámara son conocidos como rayos primarios, durante cada interacción y creación de nuevos rayos se denominan rayos secundarios. También existen rayos que no tendrán interacción en absoluto
Implementación Raycast
Lanzar rayos a través del plano de la imagen
Origen de los rayos: cámara
Se lanzan tantos rayos como pixeles existan en la imagen
Se define al rayo con un origen y dirección, cámara y punto en el plano de la imagen, especificicamente el centro de cada pixel
Se busca la intersección del rayo con algún objeto de la escena. Cuando no colisionan con cada se considera que proyectan a infinito
Después del primer rebote se calcula un rayo rebotado, realizando una nueva búsqueda de intersecciones con todos los objetos en la escena. Cada intersección nueva aporta al color final del pixel que lanzó el rayo, si intersecta con una luz se calcula la iluminación correspondiente.
addKernel«<1, size»>(dev_c, dev_a, dev_b);
Número de bloques y número de threads
¿Qué cantidad de threads se recomienda mandar?
Mínimo 128 threads
Kernel
Encapsulamiento de código que se va a ejecutar. Serie de instrucciones encapsuladas en una especie de función la cual se va a ejecutar en paralelo usando threads, donde cada uno tomará una copia del código y lo ejecutará
cudaStatus = cudaMemcpy(dev_a, a, size * sizeof(int), cudaMemcpyHostToDevice);
Se copia la memoria, Destino, Origen, Cantidad (cuánta información), y la dirección de dónde a dónde.
CUDA Índices
i = blockDim.x * blockIdx.x + thread.x
j = blockDim.y * blockIdx.y + thread.y
index = j * width + i
Cantidad máxima de threads por bloque
1024 threads por bloque