6.7.6  Texturas superpuestas

Es posible crear una gran variedad de efectos especiales usando las texturas superpuestas. Una textura superpuesta consiste en varias texturas que son parcialmente transparentes y están colocadas unas encima de otras para crear una textura más compleja. Cada capa diferente de textura se muestra a través de las partes transparentes de las otras para crear la apariencia de una textura que es combinación de varias de ellas.

Para crear texturas superpuestas se enumeran dos o más texturas una después de otra. La última textura en la lista será la que esté en la capa superior, mientras que la primera textura será la capa del fondo. Todas las texturas que forman la textura superpuesta, excepto la del fondo, deberían tener algo de transparencia. Por ejemplo:

  object {
    My_Object
    texture {T1}  // capa del fondo
    texture {T2}  // capa semitransparente
    texture {T3}  // capa superior semitransparente
  }

En este ejemplo T2 se muestra sólo donde T3 es transparente y T1 sólo donde T2 y T3 son transparentes.

El color de las texturas que estén por debajo de otras se filtra por las capas superiores por lo que el resultado no se parece exactamente a una serie de superficies transparentes. Si se tiene una pila de superficies con texturas aplicadas a cada una de ellas, la luz se filtra dos veces: una vez a la entrada a medida que las capas más bajas son iluminadas por la luz filtrada y otra vez a la salida. Las texturas superpuestas no filtran la luz en la primera forma. Otras partes de los cálculos de la iluminación trabajan de forma diferente también. El resultado es estupendo y permite crear texturas fantásticas hechas a base de múltiples superficies. Hecha un vistazo a stones.inc en el directorio de archivos de inclusión estándar para ver algunas texturas superpuestas magníficas.

Nota: en versiones precedentes a POV-Ray 3.5, filter se usa para lo mismo que transmit en las texturas superpuestas. Se ha cambiado para que filter funcione como debería. Esto puede cambiar bastante la apariencia de texturas "pre 3.5". La directiva #version se puede usar para obtener el comportamiento "pre 3.5".

Nota: las texturas superpuestas deben usar texture envolviendo cualquier declaración pigment, normal o finish. No se deben usar múltiples declaraciones de pigment, normal o finish sin ponerlas dentro de la declaración de textura.

Las texturas superpuestas pueden ser declaradas. Por ejemplo

  #declare Layered_Examp =
    texture {T1}
    texture {T2}
    texture {T3}

e invocadas como sigue:

  object {
    My_Object
    texture {
      Layer_Examp
      // cualquier pigment, normal o finish aquí
      // modifica sólo la textura del fondo.
    }
  }

Nota: No se permiten macros en las texturas superpuestas. El problema es que si una macro contuviera una declaración el analizador de código no podría adivinar que dos o más identificadores de textura se suponen que pertenecen a la textura superpuesta y no a otra declaración.

Si se quiere usar una textura superpuesta en un bloque de patrón, como checker, hexagon, o brick, o en un material_map, se debe declarar primero y entonces referenciarla dentro de una de una declaración de textura simple. Una textura hecha a base de patrones no puede ser usada en una textura superpuesta, sin embargo se pueden usar texturas superpuestas como alguna de las texturas contenidas en una textura hecha a base de patrones.