3.5.5 Patterned Textures |
POV-Ray 3.6 for UNIX documentation 3.5.6 Layered Textures |
3.5.7 UV Mapping |
It is possible to create a variety of special effects using layered textures. A layered texture consists of several textures that are partially transparent and are laid one on top of the other to create a more complex texture. The different texture layers show through the transparent portions to create the appearance of one texture that is a combination of several textures.
You create layered textures by listing two or more textures one right after the other. The last texture listed will be the top layer, the first one listed will be the bottom layer. All textures in a layered texture other than the bottom layer should have some transparency. For example:
object { My_Object texture {T1} // the bottom layer texture {T2} // a semi-transparent layer texture {T3} // the top semi-transparent layer }
In this example T2 shows only where T3 is transparent and T1 shows only where T2 and T3 are transparent.
The color of underlying layers is filtered by upper layers but the results do not look exactly like a series of
transparent surfaces. If you had a stack of surfaces with the textures applied to each, the light would be filtered
twice: once on the way in as the lower layers are illuminated by filtered light and once on the way out. Layered
textures do not filter the illumination on the way in. Other parts of the lighting calculations work differently as
well. The results look great and allow for fantastic looking textures but they are simply different from multiple
surfaces. See stones.inc
in the standard include files directory for some magnificent layered textures.
Note: in versions predating POV-Ray 3.5, filter
used to work the same as transmit
in layered textures. It has been changed to work as filter should. This can change the appearance of "pre
3.5" textures a lot. The #version
directive can be used to get the "pre 3.5" behaviour.
Note: layered textures must use the texture
wrapped around any pigment,
normal or finish statements. Do not use multiple pigment, normal or finish statements without putting them inside the
texture statement.
Layered textures may be declared. For example
#declare Layered_Examp = texture {T1} texture {T2} texture {T3}
may be invoked as follows:
object { My_Object texture { Layer_Examp // Any pigment, normal or finish here // modifies the bottom layer only. } }
Note: No macros are allowed in layered textures. The problem is that if a macro would contain a declare the parser could no longer guess that two or more texture identifiers are supposed to belong to the layered texture and not some other declare.
If you wish to use a layered texture in a block pattern, such as checker
, hexagon
, or brick
,
or in a material_map
, you must declare it first and then reference it inside a single texture statement.
A patterned texture cannot be used as a layer in a layered texture however you may use layered textures as any of the
textures contained within a patterned texture.
3.5.5 Patterned Textures | 3.5.6 Layered Textures | 3.5.7 UV Mapping |