b"\n_START_ARTICLE_\nRasterizaci\xc3\xb3n\n_START_SECTION_\nEtimolog\xc3\xada\n_START_PARAGRAPH_\nLa palabra r\xc3\xa1ster proviene del ingl\xc3\xa9s raster, anteriormente utilizada en el vocabulario t\xc3\xa9cnico de la televisi\xc3\xb3n para referirse a un tubo cat\xc3\xb3dico. Por analog\xc3\xada con los surcos dejados por un rastrillo. El r\xc3\xa1ster o rastrum es una peque\xc3\xb1a pluma de escritura provista de cinco puntas y utilizada para trazar pentagramas musicales. El uso de la palabra r\xc3\xa1ster se testifica en el lat\xc3\xadn medieval en referencia a la herramienta que sirve para rastrillar el sembrado: rastra, rastrillo, rastro.\n_START_SECTION_\nIntroducci\xc3\xb3n\n_START_PARAGRAPH_\nEl t\xc3\xa9rmino rasterizaci\xc3\xb3n puede ser aplicado en general a cualquier proceso por el cual la informaci\xc3\xb3n vectorial puede ser convertida en formato de mapa de bits._NEWLINE_En el uso cotidiano, el t\xc3\xa9rmino se refiere tambi\xc3\xa9n a los algoritmos de renderizado para la visualizaci\xc3\xb3n de figuras 3D en una computadora. La rasterizaci\xc3\xb3n es actualmente la t\xc3\xa9cnica m\xc3\xa1s popular para producir gr\xc3\xa1ficos 3D en tiempo real. Las aplicaciones en tiempo real deben responder inmediatamente a lo qu\xc3\xa9 el usuario haga y por ende producir al menos 25 cuadros por segundo para conseguir una animaci\xc3\xb3n suave._NEWLINE_Comparado con otras t\xc3\xa9cnicas de renderizado 3D como Ray tracing, la rasterizaci\xc3\xb3n es extremadamente r\xc3\xa1pida. Sin embargo, esta es simplemente el proceso de computar el mapeado desde la geometr\xc3\xada de la escena hasta los p\xc3\xadxeles y no lleva a una forma particular de computar el color de los mismos. El Sombreado, incluyendo sombrado programable, puede estar basado en transporte de luz f\xc3\xadsica o motivo art\xc3\xadstico._NEWLINE_Al estar las pantallas modernas orientadas al despliegue de mapas de bits, la diferencia los mismos y los gr\xc3\xa1ficos vectoriales est\xc3\xa1 en d\xc3\xb3nde ocurre el proceso de rasterizaci\xc3\xb3n; del lado del cliente, en el caso de gr\xc3\xa1ficos vectoriales, a diferencia de lo rasterizado en el servidor.\n_START_SECTION_\nEnfoque b\xc3\xa1sico\n_START_PARAGRAPH_\nEl algoritmo de rasterizaci\xc3\xb3n m\xc3\xa1s simple toma una escena 3D, descrita en pol\xc3\xadgonos y la proyecta sobre una superficie 2D, usualmente un monitor de PC. Los pol\xc3\xadgonos son representados como un conjunto de tri\xc3\xa1ngulos, estos \xc3\xbaltimos representados por tres v\xc3\xa9rtices en tres espacios. A un nivel muy b\xc3\xa1sico, los rasterizadores solo toman una cantidad de v\xc3\xa9rtices, los transforman en puntos bidimensionales correspondientes a un monitor y rellenan los tri\xc3\xa1ngulos bidimensionales transformados de forma apropiada.\n_START_SECTION_\nRecorte (clipping)\n_START_PARAGRAPH_\nUna vez que los v\xc3\xa9rtices de los tri\xc3\xa1ngulos son transformados a sus localizaciones 2D previstas, algunas de esas localizaciones pueden quedar fuera de la ventana de visualizaci\xc3\xb3n, o del \xc3\xa1rea de la pantalla en la cual los p\xc3\xadxeles pueden ser representados. Clipping es el proceso de cortar los tri\xc3\xa1ngulos de manera que ocupen el \xc3\xa1rea visible._NEWLINE_La t\xc3\xa9cnica m\xc3\xa1s com\xc3\xban es la del algoritmo Sutherland-Hodgeman. En esta aproximaci\xc3\xb3n, 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 tri\xc3\xa1ngulo que es intersecado por la esquina del plano de imagen, o sea, un v\xc3\xa9rtice de la esquina est\xc3\xa1 dentro de la imagen y otro fuera, un punto es insertado en la intersecci\xc3\xb3n y el punto exterior es eliminado.\n_START_SECTION_\nConversi\xc3\xb3n de escaneo\n_START_PARAGRAPH_\nEl paso final en el proceso de rasterizaci\xc3\xb3n tradicional es rellenar los tri\xc3\xa1ngulos bidimensionales, que est\xc3\xa1n de forma comprobada dentro del plano de la imagen. Esto tambi\xc3\xa9n es conocido como conversi\xc3\xb3n de escaneo._NEWLINE_El primer problema a considerar es si dibujar o no un determinado p\xc3\xadxel. Para que un p\xc3\xadxel sea renderizado, este debe estar dentro de un tri\xc3\xa1ngulo y no debe estar oculto, o bloqueado por otro p\xc3\xadxel. Hay varios algoritmos para rellenar los p\xc3\xadxeles dentro de un tri\xc3\xa1ngulo, el m\xc3\xa1s popular de ellos es el algoritmo de l\xc3\xadnea de escaneo. Al ser dif\xc3\xadcil saber si el motor de rasterizaci\xc3\xb3n dibujar\xc3\xa1 todos los p\xc3\xadxeles de adelante hacia atr\xc3\xa1s tiene que haber alguna manera de asegurarse que los p\xc3\xadxeles cerca del observador no est\xc3\xa1n siendo superpuestos por p\xc3\xadxeles m\xc3\xa1s lejanos. Un Z buffer es la soluci\xc3\xb3n m\xc3\xa1s com\xc3\xban. El z buffer es una disposici\xc3\xb3n 2D que corresponde al plano de imagen que almacena un valor de profundidad para cada p\xc3\xadxel. Cada vez que un p\xc3\xadxel es dibujado, este actualiza el z buffer con su valor de profundidad. Cada nuevo p\xc3\xadxel debe verificar su valor de profundidad con el valor de z buffer antes de ser dibujado. Los p\xc3\xadxeles m\xc3\xa1s cercanos son dibujados mientras que los m\xc3\xa1s lejanos son descartados._NEWLINE_Para averiguar el color de un p\xc3\xadxel, deben ser aplicados c\xc3\xa1lculos de texturas y sombreado. Un mapa de textura es un mapa de bits aplicado a un tri\xc3\xa1ngulo para definir su aspecto. Cada v\xc3\xa9rtice en un tri\xc3\xa1ngulo tambi\xc3\xa9n est\xc3\xa1 asociado a una textura y a una coordenada de textura (u,v) para texturas 2D normales adem\xc3\xa1s de su coordenada de posici\xc3\xb3n. Cada vez que se renderiza un p\xc3\xadxel en un tri\xc3\xa1ngulo, 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\xc3\xa9rtices del tri\xc3\xa1ngulo con la distancia en pantalla de los p\xc3\xadxeles desde los v\xc3\xa9rtices. En proyecciones de perspectiva, la interpolaci\xc3\xb3n se hace sobre las coordenadas de texturas divididas por la profundidad del v\xc3\xa9rtice para evitar un problema llamado perspective foreshortening._NEWLINE_Antes de que el color final del p\xc3\xadxel sea decidido, un c\xc3\xa1lculo de iluminaci\xc3\xb3n debe ser computado para sombrear a los p\xc3\xadxeles basados en alguna luz que puede estar presente en la escena. Por lo general hay tres tipos de luces com\xc3\xbanmente usadas en escenas; Luces direccionales son luces que van en una sola direcci\xc3\xb3n y tienen la misma intensidad en toda la escena. En la vida real, la luz solar est\xc3\xa1 muy cerca de ser una luz direccional, al estar el sol tan lejos que los rayos de \xc3\xa9l parecen estar paralelos a observadores ubicados en la Tierra y la atenuaci\xc3\xb3n es despreciable. Luces de punto son luces con una posici\xc3\xb3n definida en el espacio que irradian luz uniformemente en \xc3\xa9l. Las Luces de punto est\xc3\xa1n usualmente sujetas a alguna forma de atenuaci\xc3\xb3n, o ca\xc3\xadda en la intensidad lum\xc3\xadnica incidente sobre objetos m\xc3\xa1s lejanos. En la vida real las fuentes de luz experimentan atenuaci\xc3\xb3n cuadr\xc3\xa1tica. Finalmente, los focos son como los de la realidad, con un punto definido en el espacio, una direcci\xc3\xb3n, y un \xc3\xa1ngulo que define el cono del foco. Frecuentemente se encuentra tambi\xc3\xa9n un valor luz ambiental que se a\xc3\xb1ade a todos los c\xc3\xa1lculos de iluminaci\xc3\xb3n finales para compensar arbitrariamente la falta de efectos de iluminaci\xc3\xb3n global los cuales no son calculados correctamente por la rasterizaci\xc3\xb3n._NEWLINE_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\xc3\xb3n incidente de la luz. Los algoritmos m\xc3\xa1s r\xc3\xa1pidos simplemente sombrean todos los p\xc3\xadxeles sobre cualquier tri\xc3\xa1ngulo dado con solo un valor de iluminaci\xc3\xb3n, tambi\xc3\xa9n conocidos como sombreado plano. No hay forma de crear la ilusi\xc3\xb3n de superficies suaves con este m\xc3\xa9todo excepto subdividiendo en tri\xc3\xa1ngulos m\xc3\xa1s peque\xc3\xb1os. Los algoritmos pueden tambi\xc3\xa9n sombrear v\xc3\xa9rtices separadamente e interpolar el valor lum\xc3\xadnico de los v\xc3\xa9rtices al dibujar los p\xc3\xadxeles. Esto es conocido como sombreado Gouraud. La m\xc3\xa1s lenta pero m\xc3\xa1s realista aproximaci\xc3\xb3n es calcular la luz separadamente para cada pixel, tambi\xc3\xa9n conocido como sombreado Phong. Este realiza interpolaci\xc3\xb3n binaria de los vectores normales y usa el resultado para hacer c\xc3\xa1lculos de iluminaci\xc3\xb3n locales.\n_START_SECTION_\nT\xc3\xa9cnicas de aceleraci\xc3\xb3n\n_START_PARAGRAPH_\nPara extraer el m\xc3\xa1ximo rendimiento de un motor de rasterizaci\xc3\xb3n, un n\xc3\xbamero m\xc3\xadnimo de pol\xc3\xadgonos debe ser enviado al renderizador. Unas cuantas t\xc3\xa9cnicas de aceleraci\xc3\xb3n se desarrollaron a trav\xc3\xa9s del tiempo para remover objetos no visibles.\n_START_SECTION_\nBackface culling (eliminaci\xc3\xb3n del enfrentamiento trasero)\n_START_PARAGRAPH_\nLa forma m\xc3\xa1s simple de eliminar pol\xc3\xadgonos innecesarios es eliminar todos aquellos que el observador no puede ver. Esto se conoce como backface culling. Ya que la mayor\xc3\xada de los objetos 3D son completamente cerrados, los pol\xc3\xadgonos no enfrentados al observador est\xc3\xa1n siempre bloqueados por pol\xc3\xadgonos que s\xc3\xad lo est\xc3\xa1n, excepto cuando el observador est\xc3\xa1 dentro del objeto. El enfrentamiento de un pol\xc3\xadgono est\xc3\xa1 definido por el winding u orden en el que sus v\xc3\xa9rtices se env\xc3\xadan 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\xc3\xa1s. Una vez que un pol\xc3\xadgono se transform\xc3\xb3 a un espacio en la pantalla, su winding puede ser verificado y si est\xc3\xa1 en la direcci\xc3\xb3n opuesta, no es dibujado. Porsupuesto, backface culling no puede ser usado con vol\xc3\xbamenes abiertos o degenerados.\n_START_SECTION_\nEstructuras de datos espaciales\n_START_PARAGRAPH_\nT\xc3\xa9cnicas m\xc3\xa1s avanzadas usan estructuras de datos para eliminar objetos que est\xc3\xa1n fuera del volumen visible o tapados por otros objetos. Las estructuras de datos m\xc3\xa1s comunes son particionado binario del espacio, octree y eliminaci\xc3\xb3n de celda y portal.\n_START_SECTION_\nMejoras posteriores\n_START_PARAGRAPH_\nSi bien el proceso de rasterizaci\xc3\xb3n b\xc3\xa1sico hace d\xc3\xa9cadas que se conoce, las aplicaciones modernas siguen haciendo optimizaciones y adiciones para aumentar el rango de posibilidades del motor de rasterizaci\xc3\xb3n.\n_START_SECTION_\nFiltrado de texturas\n_START_PARAGRAPH_\nLas texturas son creadas a resoluciones espec\xc3\xadficas, pero ya que la superficie en donde est\xc3\xa1n aplicadas puede estar a cualquier distancia del observador, estas pueden mostrarse en tama\xc3\xb1os arbitrarios en la imagen final. Como resultado, un p\xc3\xadxel en la pantalla usualmente no corresponde directamente a un texel. Alguna t\xc3\xa9cnica de filtrado debe ser aplicada para lograr im\xc3\xa1genes claras a cualquier distancia. Hay varios m\xc3\xa9todos, con diferentes relaciones entre calidad de imagen y complejidad computacional.\n_START_SECTION_\nEnvironment mapping (mapeado del entorno)\n_START_PARAGRAPH_\nEnvironment mapping es una forma de mapeado de texturas en la cual las coordenadas de la textura son dependientes de la vista. Una aplicaci\xc3\xb3n com\xc3\xban, por ejemplo, es simular reflejo en un objeto con brillo. Uno, por ejemplo, se 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 v\xc3\xa9rtices de la copa se mueven proporcionalmente, dando la ilusi\xc3\xb3n de metal reflectivo.\n_START_SECTION_\nBump mapping (mapeado de imperfecciones, golpes, rugosidad)\n_START_PARAGRAPH_\nBump mapping es otra forma de mapeado de textura que no provee a los p\xc3\xadxeles de color sino de profundidad. Especialmente con pixel shaders modernos, bump mapping crea la sensaci\xc3\xb3n de rugosidad dependiente de la luz y el punto de vista en una superficie para aumentar el realismo.\n_START_SECTION_\nNivel de detalle (LOD)\n_START_PARAGRAPH_\nEn muchas aplicaciones modernas, el n\xc3\xbamero de pol\xc3\xadgonos en una escena puede ser impresionante. Sin embargo, un observador en una escena solo podr\xc3\xa1 discernir detalles de objetos cercanos. Los algoritmos de nivel de detalle var\xc3\xadan la complejidad de la geometr\xc3\xada en funci\xc3\xb3n de la distancia al observador. Los objetos justo enfrente del observador pueden ser mostrados en su completa complejidad mientras que los objetos que est\xc3\xa1n m\xc3\xa1s lejos pueden ser simplificados din\xc3\xa1micamente, o inclusive reemplazados por sprites.\n_START_SECTION_\nSombras\n_START_PARAGRAPH_\nLos c\xc3\xa1lculos de iluminaci\xc3\xb3n en el tradicional proceso de rasterizaci\xc3\xb3n no tienen en cuenta la obstrucci\xc3\xb3n de objetos. Shadow mapping (mapeado de sombras) y shadow volumes (vol\xc3\xbamenes de sombras) son dos comunes t\xc3\xa9cnicas modernas para crear sombras.\n_START_SECTION_\nAceleraci\xc3\xb3n por hardware\n_START_PARAGRAPH_\nComenzando en los 90', la aceleraci\xc3\xb3n por hardware para consumidores normales de computadoras de escritorio se ha convertido en la norma. Mientras que los programadores gr\xc3\xa1ficos tempranamente se hab\xc3\xadan basado m\xc3\xa1s en lenguaje ensamblador codificado a mano para que sus programas funcionaran m\xc3\xa1s r\xc3\xa1pido, la mayor\xc3\xada de los programas modernos est\xc3\xa1n escritos para funcionar a trav\xc3\xa9s de una de las existentes APIs gr\xc3\xa1ficas, las cuales manejan a la GPU._NEWLINE_Las \xc3\xbaltimas Unidades de procesamiento gr\xc3\xa1fico poseen soporte para Pixel Shaders programables, que mejoran dr\xc3\xa1sticamente las posibilidades de los programadores. La tendencia est\xc3\xa1 apuntada a la completa programabilidad de la pipeline (tuber\xc3\xada, conducto) gr\xc3\xa1fica.\n_START_SECTION_\nProcesador de im\xc3\xa1genes rasterizadas\n_START_PARAGRAPH_\nUn procesador de im\xc3\xa1genes rasterizadas, o RIP, es un dispositivo que se usa en los sistemas de impresi\xc3\xb3n para producir una imagen de mapa de bits. Posteriormente, el bitmap generado por el procesador se env\xc3\xada a un dispositivo de impresi\xc3\xb3n. La entrada de datos en el RIP puede ser una p\xc3\xa1gina generada en un lenguaje de descripci\xc3\xb3n de p\xc3\xa1gina de alto nivel como puede ser PostScript, PDF (del acr\xc3\xb3nimo ingl\xc3\xa9s Portable Document Format) o XPS. Tambi\xc3\xa9n puede ser otro bitmap de un dispositivo cuya salida es enviada a la entrada del RIP. En \xc3\xbaltima instancia, el dispositivo RIP aplica algoritmos de interpolaci\xc3\xb3n y suavizado sobre el bitmap de entrada para generar el bitmap de salida._NEWLINE_La finalidad del procesamiento para el que se ha concebido un RIP es conseguir una imagen rasterizada de alta resoluci\xc3\xb3n a partir de una informaci\xc3\xb3n digital vectorial. Inicialmente, los dispositivos RIPs eran una etapa de la electr\xc3\xb3nica del hardware que recib\xc3\xada la descripci\xc3\xb3n de la p\xc3\xa1gina a trav\xc3\xa9s de una interfaz, (generalmente la RS232) y generaba una salida que posteriormente se usaba para habilitar o deshabilitar cada p\xc3\xadxel en tiempo real del dispositivo de salida como pudiera ser el esc\xc3\xa1ner de una filmadora de fotolitos._NEWLINE_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\xc3\xa1s recientes guardan la compatibilidad hacia atr\xc3\xa1s con photosetters por eso son capaces de soportar lenguajes m\xc3\xa1s antiguos."