En gráficos por computadora , la iluminación por píxel se refiere a cualquier técnica para iluminar una imagen o escena que calcula la iluminación para cada píxel en una imagen renderizada. Esto contrasta con otros métodos populares de iluminación, como la iluminación de vértices , que calcula la iluminación en cada vértice de un modelo 3D y luego interpola los valores resultantes sobre las caras del modelo para calcular los valores de color finales por píxel.
La iluminación por píxel se utiliza comúnmente con técnicas, como mezcla , mezcla alfa , alfa a cobertura , suavizado , filtrado de texturas , recorte , determinación de superficies ocultas , almacenamiento en búfer Z , almacenamiento en búfer de esténcil , sombreado , mapeo mip , mapeo normal , mapeo de relieve , mapeo de desplazamiento , mapeo de paralaje , mapeo de sombras , mapeo especular , volúmenes de sombras , renderizado de alto rango dinámico , oclusión ambiental ( oclusión ambiental del espacio de la pantalla , oclusión direccional del espacio de la pantalla , oclusión ambiental con trazado de rayos ), trazado de rayos , iluminación global y teselación . Cada una de estas técnicas proporciona algunos datos adicionales sobre la superficie que se ilumina o la escena y las fuentes de luz que contribuyen al aspecto final de la superficie.
La mayoría de los motores de videojuegos modernos implementan la iluminación mediante técnicas por píxel en lugar de iluminación de vértice para lograr un mayor detalle y realismo. El motor id Tech 4 , utilizado para desarrollar juegos como Brink y Doom 3 , fue uno de los primeros motores de juegos en implementar un motor de sombreado completamente por píxel. Todas las versiones de CryENGINE , Frostbite Engine y Unreal Engine , entre otros, también implementan técnicas de sombreado por píxel.
El sombreado diferido es un desarrollo reciente en iluminación por píxel que se destaca por su uso en el motor Frostbite y Battlefield 3. Las técnicas de sombreado diferido son capaces de renderizar cantidades potencialmente grandes de luces pequeñas de manera económica (otros enfoques de iluminación por píxel requieren cálculos de pantalla completa para cada luz en una escena, independientemente del tamaño). [1]
Si bien recién hace poco las computadoras personales y el hardware de video se volvieron lo suficientemente potentes como para realizar sombreado completo por píxel en aplicaciones en tiempo real, como juegos, muchos de los conceptos centrales utilizados en los modelos de iluminación por píxel existen desde hace décadas.
Frank Crow publicó un artículo que describe la teoría de los volúmenes de sombra en 1977. [2] Esta técnica utiliza el búfer de plantilla para especificar áreas de la pantalla que corresponden a superficies que se encuentran en un "volumen de sombra", o una forma que representa un volumen de espacio eclipsado por una fuente de luz debido a algún objeto. Estas áreas sombreadas generalmente se sombrean después de que la escena se renderiza en búferes, almacenándolas con el búfer de plantilla.
Jim Blinn introdujo por primera vez la idea del mapeo normal en un artículo de SIGGRAPH de 1978. [3] Blinn señaló que la idea anterior de mapeo de texturas sin iluminación propuesta por Edwin Catmull no era realista para simular superficies rugosas. En lugar de mapear una textura sobre un objeto para simular la rugosidad, Blinn propuso un método para calcular el grado de iluminación que debería recibir un punto de una superficie en función de una "perturbación" establecida de las normales a lo largo de la superficie.
Las aplicaciones en tiempo real, como los videojuegos , suelen implementar iluminación por píxel mediante el uso de sombreadores de píxeles , lo que permite que el hardware de la GPU procese el efecto. La escena que se va a renderizar primero se rasteriza en una serie de búferes que almacenan diferentes tipos de datos que se utilizarán para renderizar la escena, como profundidad, dirección normal y color difuso. Luego, los datos se pasan a un sombreador y se utilizan para calcular la apariencia final de la escena, píxel por píxel.
El sombreado diferido es una técnica de sombreado por píxel que recientemente se ha vuelto factible para los juegos. [4] Con el sombreado diferido, se utiliza un "búfer g" para almacenar todos los términos necesarios para sombrear una escena final a nivel de píxel. El formato de estos datos varía de una aplicación a otra dependiendo del efecto deseado, y puede incluir datos normales, datos posicionales, datos especulares , datos difusos , mapas emisivos y albedo , entre otros. Usando múltiples objetivos de renderizado, todos estos datos se pueden renderizar en el búfer g con un solo paso, y un sombreador puede calcular el color final de cada píxel basándose en los datos del búfer g en un "paso diferido" final.
La iluminación por píxel también se realiza mediante software en muchas aplicaciones de renderización comerciales de alta gama que normalmente no renderizan a velocidades de cuadros interactivas. Esto se denomina renderización fuera de línea o renderización por software . El software de renderización mental ray de NVidia , que está integrado con suites como Softimage de Autodesk , es un ejemplo bien conocido.