### Section 7.6.8.8.2Repeat Warp

The repeat warp causes a section of the pattern to be repeated over and over. It takes a slice out of the pattern and makes multiple copies of it side-by-side. The warp has many uses but was originally designed to make it easy to model wood veneer textures. Veneer is made by taking very thin slices from a log and placing them side-by-side on some other backing material. You see side-by-side nearly identical ring patterns but each will be a slice perhaps 1/32th of an inch deeper.

The syntax for a repeat warp is

warp { repeat VECTOR offset VECTOR flip VECTOR }

The repeat vector specifies the direction in which the pattern repeats and the width of the repeated area. This vector must lie entirely along an axis. In other words, two of its three components must be 0. For example

pigment { wood warp {repeat 2*x} }

pigment { wood warp {repeat x*2 offset z*0.05} }

means that we slice the first copy from x=0 to x=2 at z=0 but at x=2 to x=4 we offset to z=0.05. In the 4 to 6 interval we slice at z=0.10. At the n-th copy we slice at 0.05 n z. Thus each copy is slightly different. There are no restrictions on the offset vector.

pigment { wood warp {repeat 2*x flip <1,1,0>} }

means that every other copy of the pattern will be mirrored about the x- and y- axis but not the z-axis. A non-zero value means flip and zero means do not flip about that axis. The magnitude of the values in the flip vector doesn't matter.

### Section 7.6.8.8.3Turbulence Warp

The POV-Ray language contains an ambiguity and limitation on the way you specify turbulence and transformations such as translate, rotate, scale and matrix transforms. Usually the turbulence is done first. Then all translate, rotate, scale and matrix operations are always done after turbulence regardless of the order in which you specify them. For example this

pigment { wood scale .5 turbulence .2 }

works exactly the same as

pigment { wood turbulence .2 scale .5 }

The turbulence is always first. A better example of this limitation is with uneven turbulence and rotations.

pigment { wood turbulence 0.5*y rotate z*60 } // as compared to pigment { wood rotate z*60 turbulence 0.5*y }

The results will be the same either way even though you'd think it should look different.

We cannot change this basic behavior in POV-Ray now because lots of scenes would potentially render differently if suddenly the order transformation vs turbulence suddenly mattered when in the past, it didn't.

However, by specifying our turbulence inside warp statement you tell POV-Ray that the order in which turbulence, transformations and other warps are applied is significant. Here's an example of a turbulence warp.

warp { turbulence <0,1,1> octaves 3 lambda 1.5 omega 0.3 }

The significance is that this

pigment { wood translate <1,2,3> rotate x*45 scale 2 warp { turbulence <0,1,1> octaves 3 lambda 1.5 omega 0.3 } }

produces different results than this...

pigment { wood warp { turbulence <0,1,1> octaves 3 lambda 1.5 omega 0.3 } translate <1,2,3> rotate x*45 scale 2 }

You may specify turbulence without using a warp statement. However you cannot control the order in which they are evaluated unless you put them in a warp.

The evaluation rules are as follows:

 1) First any turbulence not inside a warp statement is applied regardless of the order in which it appears relative to warps or transformations. 2) Next each warp statement, translate, rotate, scale or matrix one-by-one, is applied in the order the user specifies. If you want turbulence done in a specific order, you simply specify it inside a warp in the proper place.

### Section 7.6.8.9Bitmap Modifiers

A bitmap modifier is a modifier used inside an image_map, bump_map or material_map to specify how the 2-D bitmap is to be applied to the 3-D surface. Several bitmap modifiers apply to specific kinds of maps and they are covered in the appropriate sections. The bitmap modifiers discussed in the following sections are applicable to all three types of bitmaps.

### Section 7.6.8.9.1The once Option

Normally there are an infinite number of repeating image maps, bump maps or material maps created over every unit square of the x-y-plane like tiles. By adding the once keyword after a file name you can eliminate all other copies of the map except the one at (0,0) to (1,1). In image maps, areas outside this unit square are treated as fully transparent. In bump maps, areas outside this unit square are left flat with no normal modification. In material maps, areas outside this unit square are textured with the first texture of the texture list.

For example:

image_map { gif "mypic.gif" once }

### Section 7.6.8.9.2The "map_type" Option

The default projection of the bump onto the x-y-plane is called a planar map type. This option may be changed by adding the map_type keyword followed by a number specifying the way to wrap the bump around the object.

A map_type 0 gives the default planar mapping already described.

Finally map_type 5 is a torus or donut shaped mapping. It assumes that a torus of major radius 1 sits at the origin in the x-z-plane. The pattern is wrapped around similar to spherical or cylindrical maps. However the top and bottom edges of the map wrap over and under the torus where they meet each other on the inner rim.

Types 3 and 4 are still under development.

For example:

sphere{<0,0,0>,1 pigment{ image_map { gif "world.gif" map_type 1 } } }

### Section 7.6.8.9.3The interpolate Option

Adding the interpolate keyword can smooth the jagged look of a bitmap. When POV-Ray asks an image map color or a bump amount for a bump map, it often asks for a point that is not directly on top of one pixel but sort of between several differently colored pixels. Interpolations returns an in-between value so that the steps between the pixels in the map will look smoother.

There are currently two types of interpolation:

```  Bilinear            --- interpolate 2
Normalized Distance --- interpolate 4
```

For example:

image_map { gif "mypic.gif" interpolate 2 }

Default is no interpolation. Normalized distance is the slightly faster of the two, bilinear does a better job of picking the between color. Normally bilinear is used.

If your map looks jaggy, try using interpolation instead of going to a higher resolution image. The results can be very good.

Next Section