- Rasterización
-
Rasterización
La rasterización es el proceso por el cual una imagen descrita en un formato gráfico vectorial se convierte en un conjunto de pixeles o puntos para ser desplegados en un medio de salida digital, como una pantalla de computadora, una impresora electrónica o una imagen de mapa de bits(bitmap).
Contenido
Introducción
El término Rasterización puede ser aplicado en general a cualquier proceso por el cual la información vectorial puede ser convertida en format raster.
En el uso cotidiano, el término se refiere al popular algoritmo de renderizado para la visualización de figuras 3D en una computadora. La Rasterización es actualmente la técnica más popular para producir gráficos 3D en tiempo real. Las aplicaciones en tiempo real deben responder inmediatamente a lo qué el usuario haga y por ende producir al menos 25 cuadros por segundo para conseguir una animación suave.
Comparado con otras técnicas de renderizado 3D como Ray tracing, la Rasterización es extremadamente rápida. Sin embargo, esta es simplemente el proceso de computar el mapeado desde la geometría de la escena hasta los pixeles y no lleva a una forma particular de computar el color de esos pixeles. El Sombreado, incluyendo sombrado programable, puede estar basado en transporte de luz física o motivo artístico.
Al estar las pantallas modernas orientadas a gráficos raster, la diferencia entre solo raster y gráficos vectoriales está en dónde son rasterizadas; del lado del cliente en el caso de gráficos vectoriales, a diferencia de lo rasterizado en el servidor.
Enfoque básico
El algoritmo de rasterización más simple toma una escena 3D, descrita en polígonos y la proyecta sobre una superficie 2D, usualmente un monitor de PC. Los polígonos son representados como un conjunto de triángulos, estos últimos representados por tres vertices en tres espacios. A un nivel muy básico, los rasterizadores solo toman una cantidad de vertices, los transforman en puntos bidimensionales correspondientes a un monitor y rellenan los triángulos bidimensionales transformados de forma apropiada.
Clipping(recorte)
Una vez que los vertices de los triángulos son transformados a sus localizaciones 2D previstas, algunas de esas localizaciones pueden quedar fuera de la ventana de visualización, o del area de la pantalla en la cual los pixeles pueden ser representados. Clipping es el proceso de cortar los triángulos de manera que ocupen el area visible.
La técnica más común es la del algoritmo Sutherland-Hodgeman. En esta aproximación, cada una de las 4 esquinas del plano de imagen es probada en un tiempo. Para cada esquina, probar todos los puntos a ser renderizados. Si el punto queda fuera de la esquina, este se elimina. Por cada borde de triangulo que es intersectado por la esquina del plano de imagen, osea, un vertice de la esquina está dentro de la imagen y otro fuera, un punto es insertado en la intersección y el punto exterior es eliminado.
Conversión de escaneo
El paso final en el proceso de rasterización tradicional es rellenar los triágulos 2D que ahora están en el plano de imagen. Esto también es conocido como conversión de escaneo.
El primer problema a considerar es si dibujar o no un determinado pixel. Para que un pixel sea renderizado, este debe estar dentro de un triángulo y no debe estar oculto, o bloqueado por otro pixel. Hay varios algoritmos para rellenar los pixeles dentro de un triángulo, el más popular de ellos es el algoritmo de linea de escaneo. Al ser difícil saber si el motor de rasterización dibujará todos los pixeles de adelante hacia atras tiene que haber alguna manera de asegurarse que los pixeles cerca del observador no están siendo superpuestos por pixeles más lejanos. Un z buffer es la solución más común. El z buffer is una disposición 2D que corresponde al plano de imagen que almacena un valor de profundidad para cada pixel. Cada vez que un pixel es dibujado, este actualiza el z buffer con su valor de profundidad. Cada nuevo pixel debe verificar su valor de profundidad con el valor de z buffer antes de ser dibujado. Los pixeles más cercanos son dibujados mientras que los más lejanos son descartados.
Para averiguar el color de un pixel, deben ser aplicados cálculos de texturas y sombreado. Un mapa de textura es un mapa de bits aplicado a un triángulo para definir su aspecto. Cada vertice en un triángulo también está asociado a una textura y a una coordenada de textura (u,v) para texturas 2D normales además de su coordenada de posición. Cada vez que se renderiza un pixel en un triángulo, el texel (texture element o elemento de textura) debe ser encontrado en la textura. Esto se logra interpolando las coordenadas de textura asociadas a los vértices del triángulo con la distancia en pantalla de los pixeles desde los vertices. En proyecciones de perspectiva, la interpolación se hace sobre las coordenadas de texturas divididas por la profundidad del vértice para evitar un problema llamado perspective foreshortening.
Antes de que el color final del pixel sea decidido, un cálculo de iluminación debe ser computado para sombrear a los pixeles basados en alguna luz que puede estar presente en la escena. Por lo general hay tres tipos de luces comúnmente usadas en escenas; Luces direccionales son luces que van en una sola dirección y tienen la misma intensidad en toda la escena. En la vida real, la luz solar está muy cerca de ser una luz direccional, al estar el sol tan lejos que los rayos de él parecen estar paralelos a observadores ubicados en la Tierra y la atenuación es despreciable. Luces de punto son luces con una posición definida en el espacio que irradian luz uniformemente en él. Las Luces de punto están usualmente sujetas a alguna forma de atenuación, o caida en la intensidad lumínica incidente sobre objetos más lejanos. En la vida real las fuentes de luz experimentan atenuación cuadrática. Finalmente, los focos son como los de la realidad, con un punto definido en el espacio, una dirección, y un ángulo que define el cono del foco. Frecuentemente se encuentra también un valor luz ambiental que se añade a todos los cálculos de iluminación finales para compensar arbitrariamente la falta de efectos de iluminación global los cuales no son calculados correctamente por la rasterización.
Existen varios algoritmos de sombreado para los rasterizadores. Todos los algoritmos de sombreado deben tomar en cuenta la distancia desde la luz y el vector normal del objeto sombreado con respecto a la dirección incidente de la luz. Los algoritmos más rápidos simplemente sombrean todos los pixeles sobre cualquier triángulo dado con solo un valor de iluminación, también conocidos como sombreado plano. No hay forma de crear la ilusión de superficies suaves con este método excepto subdividiendo en triángulos más pequeños. Los algoritmos pueden también sombrear vértices separadamente e interpolar el valor lumínico de los vértices al dibujar los pixeles. Esto es conocido como sombreado Gouraud. La más lenta pero más realista aproximación es calcular la luz separadamente para cada pixel, también conocido como sombreado Phong. Este realiza interpolación binaria de los vectores normales y usa el resultado para hacer calculos de iluminación locales.
Técnicas de aceleración
Para extraer el máximo rendimiento de un motor de rasterización, un número mínimo de polígonos debe ser enviado al renderizador. Unas cuantas técnicas de aceleración se desarrollaron a través del tiempo para remover objetos no visibles.
Backface culling(eliminación del enfrentamiento trasero)
La forma más simple de eliminar polígonos innecesarios es eliminar todos aquellos que el observador no puede ver. Esto se conoce como backface culling. Ya que la mayoría de los objetos 3D son completamente cerrados, los polígonos no enfrentados al observador están siempre bloqueados por polígonos que sí lo están, excepto cuando el observador está dentro del objeto. El enfrentamiento de un polígono esta definido por el winding u orden en el que sus vértices se envían al renderizador. Un renderizador puede definir un winding en el sentido de las agujas del reloj o contrario como enfrentamiento hacia el frente o hacia atrás. Una vez que un polígono se transformó a un espacio en la pantalla, su winding puede ser verificado y si esta en la dirección opuesta, no es dibujado. Por su puesto, backface culling no puede ser usado con volumenes abiertos o degenerados.
Estructuras de datos espaciales
Técnicas más avanzadas usan estructuras de datos para eliminar objetos que están fuera del volumen visible o tapados por otros objetos. Las estructuras de datos más comunes son particionado binario del espacio, octree y eliminación de celda y portal.
Mejoras posteriores
Si bien el proceso de rasterización básico hace décadas que se conoce, las aplicaciones modernas siguen haciendo optimizaciones y adiciones para aumentar el rango de posibilidades del motor de rasterización.
Filtrado de texturas
Las texturas son creadas a resoluciones específicas, pero ya que la superficie en donde están aplicadas puede estar a cualquier distancia del observador, estas pueden mostrarse en tamaños arbitrarios en la imagen final. Como resultado, un pixel en la pantalla usualmente no corresponde directamente a un texel. Alguna técnica de filtrado debe ser aplicada para lograr imágenes claras a cualquier distancia. Hay varios metodos, con diferentes relaciones entre calidad de imagen y complejidad computacional.
Environment mapping (mapeado del entorno)
Environment mapping es una forma de mapeado de texturas en la cual las coordenadas de la textura son dependientes de la vista. Una aplicación común, por ejemplo, es simular reflejo en un objeto brilloso. Uno, por ejemplo, le puede mapear el entorno de un cuarto a una copa de metal, como el observador se mueva alrededor de la copa, las coordenadas de la textura en los vertices de la copa se mueven proporcionalmente, dando la ilusión de metal reflectivo.
Bump mapping (mapeado de imperfecciones, golpes, rugosidad)
Bump mapping es otra forma de mapeado de textura que no provee a los pixeles de color sino de profundidad. Especialmente con pixel shaders modernos, bump mapping crea la sensación de rugosidad dependiente de la luz y el punto de vista en una superficie para aumentar el realismo.
Nivel de detalle (LOD)
En mucha aplicaciones modernas, el número de polígonos en una escena puede ser impresionate. Sin embargo, un observador en una escena solo podrá discernir detalles de objetos cercanos. Los algoritmos de nivel de detall varían la complejidad de la geometría en función de la distancia al observador. Los objetos justo enfrente del observador pueden ser mostrados en su completa complejidad mientras que los objetos que están más lejos pueden ser simplificados dinámicamente, o inclusive reemplados por sprites.
Sombras
Los cálculos de iluminación en el tradicional proceso de rasterización no tienen en cuenta la obstrucción de objetos. Shadow mapping (mapeado de sombras) y shadow volumes (volumenes de sombras) son dos comunes técnicas modernas para crear sombras.
Aceleración por hardware
Comenzando en los 90', la aceleración por hardware para consumidores normales de computadoras de escritorio se ha convertido en la norma. Mientras que los programadores gráficos se habían más tempranamente basado en ensamblador codificado a mano para que sus programas funcionen más rápido, la mayoría de los programas modernos están escritos para funcionar a través de una de las existentes APIs gráficas, las cuales manejan a la GPU.
Las últimas GPUs poseen soporte para Pixel Shaders programables los cuales mejoran drásticamente las posibilidades de los programadores. La tendencia está apuntada a la completa programabilidad de la pipeline(tubería, conducto) gráfica.
Procesador de imágenes rasterizadas
Un procesador de imágenes rasterizadas, o RIP, es un dispositivo que se usa en los sistemas de impresión para producir una imagen de mapa de bits. Posteriormente, el bitmap generado por el procesador se envía a un dispositivo de impresión. La entrada de datos en el RIP puede ser una página generada en un lenguaje de descripción de página de de alto nivel como puede ser PostScript, PDF (del acrónimo ínglés Portable Document Format) o XPS. También puede ser otro bitmap de un dispositivo cuya salida es enviada a la entrada del RIP. En última instancia, el dispositivo RIP aplica algoritmos de interpolación y suavizado sobre el bitmap de entrada para generar el bitmap de salida.
La finalidad del procesamiento para el que se ha concebido un RIP es conseguir una imagen rasterizada de alta resolución a partir de una información digital vectorial. Inicialmente, los dispositivos RIPs eran una etapa de la electrónica del hardware que recibía la descripción de la página a través de una interfaz, (generalmente la RS232) y generaba una salida que posteriormente se usaba para habilitar o deshabilitar cada píxel en tiempo real del dispositivo de salida como pudiera ser el escáner de una filmadora de fotolitos.
Inclusive, un RIP se puede implementar en un componente software del sistema operativo o como un firmware ejecutado en un microprocesador del interior de la impresora. Ghostscript y GhostPCL son ejemplos de software RIPs. Cada impresora Postscript contiene un RIP en su firmware. Los RIPs más recientes guardan la compatibilidad hacia atrás con photosetters por eso son capaces de soportar lenguajes más antiguos.
Pasos de un RIP
- Interpretación. Este es el paso donde el lenguaje de descripción de página soportado se transforma en una representación de una página particular. Muchos RIPs procesan páginas con tanta intensidad que el funcionamiento habitual de la máquina es solo para la página en curso, es decir, se proceso una sola página cada vez. Una vez que la página se ha generado se procesa la siguiente.
- Renderizado. Proceso a través del cual la representación interna particular se transforma en un bitmap de tono continuo. Hay que hacer notar que, en la práctica, la interpretación y el renderizado se hacen juntos con bastante frecuencia. Los lenguajes simples (en su mayor parte los más antiguos) se diseñaron para trabajar con mínimos requerimientos de hardware, por eso tienden a ejecutar el renderizado directamente.
- Proyección. Para que se imprima, un bitmap de tonos continuos se ha de transformar previamente en otro de tonos medios (patrones de puntos). Hay dos métodos o tipos para este paso. La proyección por modificación en la amplitud (AM o Amplitude Modification) y la proyección estocástica o por modulación en la frecuencia (FM o Frecuency Modulation). En la proyección AM, la variación del tamaño de los puntos depende de la densidad del objeto y sus valores tonales. Los puntos se colocan en una cuadrícula fija pero son mayores si corresponden a un área de la imagen de alta densidad. En la proyección FM, el tamaño de los puntos permanece siempre constante y se ubican en un orden aleatorio para crear áreas de imagen más claras u oscuras. El emplazamiento de los puntos, y la densidad de estos, se controla a partir de un sofisticado algoritmo matemático.
Los RIP se usan en las impresoras láser para comunicar las imágenes rasterizadas al láser de barrido de la impresora.
Categorías: Wikipedia:Fusionar | Computación gráfica
Wikimedia foundation. 2010.