Método básico de implementación de rasterización
El algoritmo de rasterización más básico renderiza una escena tridimensional representada por polígonos en una superficie bidimensional. Un polígono está representado por una colección de triángulos, que están representados por tres vértices en un espacio tridimensional. En su implementación más simple, el rasterizador asigna datos de vértices a los puntos de coordenadas 2D correspondientes en la pantalla del espectador y luego rellena el triángulo 2D transformado de manera adecuada. Una vez que los vértices del triángulo se convierten a sus posiciones 2D correctas, estas posiciones pueden estar fuera de la ventana de visualización o dentro de la pantalla. Recortar es el proceso de procesar triángulos para que se ajusten al área de visualización.
La técnica más utilizada es el algoritmo de recorte de Sutherland-Hodgeman. En este enfoque, cada plano de la imagen se prueba con cuatro bordes a la vez y cada punto que se va a representar se prueba para cada borde. Si el punto está fuera del límite, se elimina. Para un borde de triángulo que intersecta un borde plano de la imagen, es decir, un vértice del borde está dentro de la imagen y el otro afuera, luego inserte un punto en la intersección y elimine el punto exterior. El último paso en el proceso de rasterización tradicional es llenar los triángulos bidimensionales en el plano de la imagen. Este proceso se llama transformación de escaneo.
La primera cuestión a considerar es si es necesario dibujar un píxel determinado. Un píxel que se va a representar debe estar dentro de un triángulo, no debe estar recortado y no debe estar oscurecido por otros píxeles. Hay muchos algoritmos que se pueden utilizar para rellenar un triángulo, el más popular de los cuales es el algoritmo de línea de exploración.
Dado que es difícil determinar si el motor de rasterización dibujará todos los píxeles de adelante hacia atrás, debe haber alguna forma de garantizar que los píxeles más cercanos al espectador no se sobrescriban con los píxeles más alejados. Uno de los métodos más utilizados es el búfer de profundidad, que es una matriz bidimensional que almacena la profundidad de cada píxel correspondiente al plano de la imagen. El valor de profundidad en el búfer de profundidad debe actualizarse cuando se dibuja cada píxel. Cada nuevo píxel debe verificar el valor de profundidad en el búfer de profundidad antes de dibujar. Se dibujarán los píxeles más cercanos al observador, mientras que se dibujarán todos los píxeles más alejados. abandonado.
Para determinar el color del píxel, se requieren cálculos de textura o efecto de sombra. Un mapa de textura es un mapa de bits que define la apariencia de una visualización triangular. Cada vértice de un triángulo está asociado con una textura además de una coordenada de posición y una coordenada de textura 2D (u,v). Cada vez que se representa un píxel en un triángulo, se debe encontrar el texel correspondiente en la textura, lo cual se hace interpolando entre los vértices del triángulo asociados con las coordenadas de la textura en función de la distancia entre el píxel y el vértice en la pantalla. En la proyección en perspectiva, la interpolación se realiza en coordenadas de textura separadas por la profundidad del vértice. Esto evita el problema del escorzo en perspectiva.
Antes de determinar el color final de un píxel, se debe calcular la iluminación del píxel en función de todas las fuentes de luz de la escena. Generalmente hay tres tipos de fuentes de luz en una escena. La luz direccional es luz que viaja en una dirección fija en una escena y permanece constante en intensidad. En la vida real, la luz solar puede verse como luz direccional porque el sol está tan lejos que a un observador en la Tierra le parece rayos paralelos con una atenuación mínima. Una luz puntual es una fuente de luz que emite luz en todas direcciones desde un lugar bien definido en el espacio. La luz que incide sobre objetos distantes se atenúa. El último es un foco. Al igual que un foco en la vida real, tiene una posición espacial, una dirección y un ángulo del cono de luz claros. Además, es común agregar un valor de luz ambiental después de completar el cálculo de iluminación para compensar los efectos de iluminación global que la rasterización no puede calcular correctamente.
Existen muchos algoritmos de sombreado que se pueden utilizar para la rasterización. Todos los algoritmos de sombreado deben considerar la distancia a la fuente de luz, así como el vector normal del objeto oclusivo y el ángulo de incidencia de la luz. El algoritmo más rápido utiliza el mismo brillo para todos los píxeles de un triángulo, pero este método no puede producir una superficie lisa. Además, también puede calcular el brillo de los vértices por separado y luego interpolar el brillo de los vértices al dibujar los píxeles internos. La implementación más lenta y realista es calcular el brillo de cada punto individualmente. Los modelos de sombreado más utilizados incluyen el sombreado Gouraud y el sombreado Phong.