Introducción a la iluminación

Al usar la iluminación de Direct3D, permites que Direct3D controle los detalles de iluminación para ti. Los usuarios avanzados pueden realizar iluminación por sí mismos, si lo desea.

Cuando la iluminación está habilitada, Direct3D calcula el color de cada vértice de objeto en función de una combinación de lo siguiente:

  • Los elementos de textura de un mapa de textura asociado.
  • Colores difusos y especulares en el vértice, si se especifican.
  • Color e intensidad de la luz producida por fuentes de luz en la escena o el nivel de luz ambiente de la escena.

La forma de trabajar con iluminación y materiales hace una gran diferencia en la apariencia de la escena representada. Los materiales definen cómo se refleja la luz fuera de una superficie. La luz directa y los niveles de luz ambiente definen la luz que se refleja. Debe usar materiales para representar una escena si la iluminación está habilitada.

Las luces no son necesarias para representar una escena, pero los detalles de una escena representada sin luz no son visibles. En el mejor de los casos, la representación de una escena sin iluminar da como resultado una silueta de los objetos de la escena. Esto no es suficiente para la mayoría de los propósitos.

Luz directa frente a luz ambiental

Aunque tanto la luz directa como la ambiental iluminan objetos en una escena, son independientes entre sí, tienen efectos muy diferentes y requieren que trabaje con ellos de maneras completamente diferentes.

La luz directa golpea el objeto directamente. La luz directa siempre tiene dirección y color, y es un factor para los algoritmos de sombreado, como el sombreado gouraud. Diferentes tipos de luces emiten luz directa de diferentes maneras, creando efectos de atenuación especiales.

La luz ambiental es eficazmente en todas partes de una escena. La luz ambiente es un nivel general de luz que llena toda una escena, independientemente de los objetos y sus ubicaciones en esa escena. La luz ambiente no tiene posición ni dirección, solo color e intensidad. Cada luz agrega a la luz ambiente general de una escena.

El color de luz ambiente toma la forma de un valor RGBA, donde cada componente es un valor entero de 0 a 255. Esto es diferente a la mayoría de los valores de color en Direct3D.

Los componentes rojo, verde y azul se combinan para hacer el color final de la luz ambiental. El componente alfa controla la transparencia del color. Al usar la aceleración de hardware o la emulación RGB, se omite el componente alfa.

Modelo de luz direct3D frente a naturaleza

En la naturaleza, cuando se emite luz desde un origen, se refleja de cientos, si no miles o millones de objetos antes de llegar al ojo del usuario. Cada vez que se refleja, alguna luz se absorbe por una superficie, algunas se dispersan en direcciones aleatorias y el resto pasa a otra superficie o al ojo del usuario. Este proceso continúa hasta que la luz se reduce a nada o un usuario percibe la luz.

Obviamente, los cálculos necesarios para simular perfectamente el comportamiento natural de la luz son demasiado lentos de usar para gráficos Direct3D en tiempo real. Por lo tanto, teniendo en cuenta la velocidad, el modelo de luz Direct3D aproxima la forma en que la luz funciona en el mundo natural. Direct3D describe la luz en términos de componentes rojo, verde y azul que se combinan para crear un color final.

En Direct3D, cuando la luz refleja una superficie, el color claro interactúa matemáticamente con la propia superficie para crear el color que finalmente se muestra en la pantalla. Para obtener información específica sobre los algoritmos que usa Direct3D, consulta Matemáticas de iluminación.

El modelo de luz direct3D generaliza la luz en dos tipos: luz ambiental y luz directa. Cada uno tiene atributos diferentes y cada uno interactúa con el material de una superficie de maneras diferentes. La luz ambiental es la luz que se ha dispersado tanto que su dirección y fuente son indeterminadas: mantiene un bajo nivel de intensidad en todas partes. La iluminación indirecta utilizada por fotógrafos es un buen ejemplo de luz ambiental.

La luz ambiental en Direct3D, como en la naturaleza, no tiene ninguna dirección o fuente real, solo un color e intensidad. De hecho, el nivel de luz ambiente es completamente independiente de cualquier objeto de una escena que genere luz. La luz ambiental no contribuye a la reflexión especular.

La luz directa es la luz generada por una fuente dentro de una escena; siempre tiene color e intensidad, y viaja en una dirección especificada. La luz directa interactúa con el material de una superficie para crear resaltados especulares y su dirección se usa como factor en los algoritmos de sombreado, incluido el sombreado gouraud. Cuando se refleja la luz directa, no contribuye al nivel de luz ambiental en una escena. Las fuentes de una escena que generan luz directa tienen características diferentes que afectan a cómo iluminan una escena.

Además, el material de un polígono tiene propiedades que afectan a cómo ese polígono refleja la luz que recibe. Establece un único rasgo de reflectancia que describe cómo el material refleja la luz ambiental y establece rasgos individuales para determinar la reflectancia especular y difusa del material.

Valores de color para luces y materiales

Direct3D describe el color en términos de cuatro componentes (rojo, verde, azul y alfa), que se combinan para crear un color final. Cada componente va de 0,0 a 1,0. Aunque tanto las luces como los materiales usan la misma estructura para describir el color, los valores se usan un poco diferente por las luces frente a los materiales.

Los valores de color de los orígenes de luz representan la cantidad de un componente de luz determinado que emite. Dado que las luces no usan un componente alfa, solo los componentes rojo, verde y azul del color son relevantes. Puede visualizar los tres componentes como los lentes rojo, verde y azul en un televisor de proyección. Cada lente puede estar desactivada (un valor de 0,0 en el miembro adecuado), podría ser lo más brillante posible (un valor de 1,0), o podría ser un nivel entre sí.

Los colores que llegan a través de las lentes se combinan para hacer el color final de la luz. Una combinación como R(1.0), G(1.0), B(1.0) crea una luz blanca, donde R(0.0), G(0.0), B(0.0) no emite luz en absoluto. Puede hacer una luz que emita solo un componente, lo que da como resultado una luz roja, verde o azul pura; o bien, la luz podría usar combinaciones para emitir colores como amarillo o púrpura. Incluso puede establecer valores de componentes de color negativos para crear una "luz oscura" que quite realmente la luz de una escena. O bien, puede establecer los componentes en un valor superior a 1,0 para crear una luz extremadamente brillante.

Por otro lado, con los materiales, los valores de color representan la cantidad de un componente claro reflejado por una superficie que se representa con ese material. Un material cuyos componentes de color son R(1.0), G(1.0), B(1.0), A(1.0) refleja toda la luz que llega a su camino. Del mismo modo, un material con R(0.0), G(1.0), B(0.0), A(1.0) refleja toda la luz verde dirigida a él. Los materiales tienen varios valores de reflectancia para crear varios tipos de efectos.

Consulte Tipos de luz y propiedades de luz.

Luces y materiales